Files
assetxContracts/out/build-info/afba0dd68d99cf40.json
2025-12-23 14:05:41 +08:00

1 line
4.3 MiB
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"id":"afba0dd68d99cf40","source_id_to_path":{"0":"contracts/interfaces/ILending.sol","1":"contracts/interfaces/IPriceFeed.sol","2":"contracts/interfaces/IUSDY.sol","3":"contracts/interfaces/IYTLPToken.sol","4":"contracts/interfaces/IYTPoolManager.sol","5":"contracts/interfaces/IYTPriceFeed.sol","6":"contracts/interfaces/IYTToken.sol","7":"contracts/interfaces/IYTVault.sol","8":"contracts/vault/YTAssetFactory.sol","9":"contracts/vault/YTAssetVault.sol","10":"contracts/ytLending/Configurator.sol","11":"contracts/ytLending/ConfiguratorStorage.sol","12":"contracts/ytLending/Lending.sol","13":"contracts/ytLending/LendingConfiguration.sol","14":"contracts/ytLending/LendingFactory.sol","15":"contracts/ytLending/LendingMath.sol","16":"contracts/ytLending/LendingStorage.sol","17":"contracts/ytLp/core/YTPoolManager.sol","18":"contracts/ytLp/core/YTPriceFeed.sol","19":"contracts/ytLp/core/YTRewardRouter.sol","20":"contracts/ytLp/core/YTVault.sol","21":"contracts/ytLp/tokens/USDY.sol","22":"contracts/ytLp/tokens/WUSD.sol","23":"contracts/ytLp/tokens/YTLPToken.sol","24":"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","25":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","26":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","27":"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","28":"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","29":"node_modules/@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol","30":"node_modules/@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","31":"node_modules/@openzeppelin/contracts/access/Ownable.sol","32":"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol","33":"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol","34":"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol","35":"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol","36":"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol","37":"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol","38":"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","39":"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","40":"node_modules/@openzeppelin/contracts/proxy/Proxy.sol","41":"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol","42":"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol","43":"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","44":"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","45":"node_modules/@openzeppelin/contracts/utils/Address.sol","46":"node_modules/@openzeppelin/contracts/utils/Context.sol","47":"node_modules/@openzeppelin/contracts/utils/Errors.sol","48":"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol","49":"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol"},"language":"Solidity","_format":"ethers-rs-sol-build-info-1","input":{"version":"0.8.30","language":"Solidity","sources":{"contracts/interfaces/ILending.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/**\n * @title ILending\n * @notice 借贷池核心接口\n */\ninterface ILending {\n event Supply(address indexed from, address indexed dst, uint256 amount);\n event Withdraw(address indexed src, address indexed to, uint256 amount);\n event SupplyCollateral(address indexed from, address indexed dst, address indexed asset, uint256 amount);\n event WithdrawCollateral(address indexed src, address indexed to, address indexed asset, uint256 amount);\n event AbsorbDebt(address indexed absorber, address indexed borrower, uint256 basePaidOut, uint256 usdValue);\n event AbsorbCollateral(address indexed absorber, address indexed borrower, address indexed asset, uint256 collateralAbsorbed, uint256 usdValue);\n event BuyCollateral(address indexed buyer, address indexed asset, uint256 baseAmount, uint256 collateralAmount);\n event WithdrawReserves(address indexed to, uint256 amount);\n \n error Unauthorized();\n error InsufficientBalance();\n error InsufficientCollateral();\n error BorrowTooSmall();\n error NotLiquidatable();\n error SupplyCapExceeded();\n error InvalidLiquidationFactor();\n error InvalidBorrowCollateralFactor();\n error InvalidLiquidateCollateralFactor();\n error InsufficientReserves();\n error NotForSale();\n \n function supply(uint256 amount) external;\n function withdraw(uint256 amount) external;\n function supplyCollateral(address asset, uint256 amount) external;\n function withdrawCollateral(address asset, uint256 amount) external;\n function borrow(uint256 amount) external;\n function absorb(address borrower) external;\n function absorbMultiple(address absorber, address[] calldata accounts) external;\n function buyCollateral(address asset, uint256 minAmount, uint256 baseAmount, address recipient) external;\n function getBalance(address account) external view returns (int256);\n function getCollateral(address account, address asset) external view returns (uint256);\n function isLiquidatable(address account) external view returns (bool);\n function getSupplyRate() external view returns (uint64);\n function getBorrowRate() external view returns (uint64);\n function supplyBalanceOf(address account) external view returns (uint256);\n function borrowBalanceOf(address account) external view returns (uint256);\n function quoteCollateral(address asset, uint256 baseAmount) external view returns (uint256);\n function getReserves() external view returns (int256);\n function getCollateralReserves(address asset) external view returns (uint256);\n function getUtilization() external view returns (uint256);\n function withdrawReserves(address to, uint256 amount) external;\n}\n\n"},"contracts/interfaces/IPriceFeed.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/**\n * @title IPriceFeed\n * @notice 价格预言机接口\n */\ninterface IPriceFeed {\n function getPrice() external view returns (uint256 price);\n function decimals() external view returns (uint8);\n}\n\n"},"contracts/interfaces/IUSDY.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ninterface IUSDY {\n function mint(address _to, uint256 _amount) external;\n function burn(address _from, uint256 _amount) external;\n function totalSupply() external view returns (uint256);\n}\n\n"},"contracts/interfaces/IYTLPToken.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ninterface IYTLPToken {\n function mint(address _to, uint256 _amount) external;\n function burn(address _from, uint256 _amount) external;\n}\n\n"},"contracts/interfaces/IYTPoolManager.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ninterface IYTPoolManager {\n function addLiquidityForAccount(\n address _fundingAccount,\n address _account,\n address _token,\n uint256 _amount,\n uint256 _minUsdy,\n uint256 _minYtLP\n ) external returns (uint256);\n \n function removeLiquidityForAccount(\n address _account,\n address _tokenOut,\n uint256 _ytLPAmount,\n uint256 _minOut,\n address _receiver\n ) external returns (uint256);\n \n function getPrice(bool _maximise) external view returns (uint256);\n}\n\n"},"contracts/interfaces/IYTPriceFeed.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ninterface IYTPriceFeed {\n function getPrice(address _token, bool _maximise) external view returns (uint256);\n}\n\n"},"contracts/interfaces/IYTToken.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ninterface IYTToken {\n function ytPrice() external view returns (uint256);\n function wusdPrice() external view returns (uint256);\n}"},"contracts/interfaces/IYTVault.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ninterface IYTVault {\n function buyUSDY(address _token, address _receiver) external returns (uint256);\n function sellUSDY(address _token, address _receiver) external returns (uint256);\n function swap(address _tokenIn, address _tokenOut, address _receiver) external returns (uint256);\n function getPoolValue(bool _maximise) external view returns (uint256);\n function getPrice(address _token, bool _maximise) external view returns (uint256);\n function getMaxPrice(address _token) external view returns (uint256);\n function getMinPrice(address _token) external view returns (uint256);\n function getSwapFeeBasisPoints(address _tokenIn, address _tokenOut, uint256 _usdyAmount) external view returns (uint256);\n function getRedemptionFeeBasisPoints(address _token, uint256 _usdyAmount) external view returns (uint256);\n}\n\n"},"contracts/vault/YTAssetFactory.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\";\nimport \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\";\nimport \"./YTAssetVault.sol\";\n\n/**\n * @title YTAssetFactory\n * @notice 用于批量创建和管理YT资产金库合约的工厂\n * @dev UUPS可升级合约\n */\ncontract YTAssetFactory is Initializable, UUPSUpgradeable, OwnableUpgradeable {\n \n error InvalidAddress();\n error VaultNotExists();\n error InvalidHardCap();\n \n /// @notice YTAssetVault实现合约地址\n address public vaultImplementation;\n \n /// @notice 所有创建的vault地址列表\n address[] public allVaults;\n \n /// @notice vault地址 => 是否存在\n mapping(address => bool) public isVault;\n \n /// @notice 默认硬顶值0表示无限制\n uint256 public defaultHardCap;\n \n event VaultCreated(\n address indexed vault,\n address indexed manager,\n string name,\n string symbol,\n uint256 hardCap,\n uint256 index\n );\n event VaultImplementationUpdated(address indexed newImplementation);\n event DefaultHardCapSet(uint256 newDefaultHardCap);\n event HardCapSet(address indexed vault, uint256 newHardCap);\n event PricesUpdated(address indexed vault, uint256 wusdPrice, uint256 ytPrice);\n event NextRedemptionTimeSet(address indexed vault, uint256 redemptionTime);\n \n /**\n * @notice 初始化工厂\n * @param _vaultImplementation YTAssetVault实现合约地址\n * @param _defaultHardCap 默认硬顶值\n */\n function initialize(\n address _vaultImplementation,\n uint256 _defaultHardCap\n ) external initializer {\n if (_vaultImplementation == address(0)) revert InvalidAddress();\n \n __Ownable_init(msg.sender);\n __UUPSUpgradeable_init();\n \n vaultImplementation = _vaultImplementation;\n defaultHardCap = _defaultHardCap;\n }\n \n /**\n * @notice 授权升级仅owner可调用\n * @param newImplementation 新实现合约地址\n */\n function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\n \n /**\n * @notice 更新YTAssetVault实现合约\n * @param _newImplementation 新的实现合约地址\n */\n function setVaultImplementation(address _newImplementation) external onlyOwner {\n if (_newImplementation == address(0)) revert InvalidAddress();\n vaultImplementation = _newImplementation;\n emit VaultImplementationUpdated(_newImplementation);\n }\n \n /**\n * @notice 设置默认硬顶\n * @param _defaultHardCap 新的默认硬顶值\n */\n function setDefaultHardCap(uint256 _defaultHardCap) external onlyOwner {\n defaultHardCap = _defaultHardCap;\n emit DefaultHardCapSet(_defaultHardCap);\n }\n \n /**\n * @notice 创建新的YTAssetVault\n * @param _name YT代币名称\n * @param _symbol YT代币符号\n * @param _manager 管理员地址\n * @param _hardCap 硬顶限制0表示使用默认值\n * @param _wusd WUSD代币地址传0使用默认地址\n * @param _redemptionTime 赎回时间Unix时间戳\n * @param _initialWusdPrice 初始WUSD价格精度1e30传0则使用默认值1.0\n * @param _initialYtPrice 初始YT价格精度1e30传0则使用默认值1.0\n * @return vault 新创建的vault地址\n */\n function createVault(\n string memory _name,\n string memory _symbol,\n address _manager,\n uint256 _hardCap,\n address _wusd,\n uint256 _redemptionTime,\n uint256 _initialWusdPrice,\n uint256 _initialYtPrice\n ) external onlyOwner returns (address vault) {\n if (_manager == address(0)) revert InvalidAddress();\n \n // 如果传入0使用默认硬顶\n uint256 actualHardCap = _hardCap == 0 ? defaultHardCap : _hardCap;\n \n // 编码初始化数据\n bytes memory initData = abi.encodeWithSelector(\n YTAssetVault.initialize.selector,\n _name,\n _symbol,\n _manager,\n actualHardCap,\n _wusd,\n _redemptionTime,\n _initialWusdPrice,\n _initialYtPrice\n );\n \n // 部署代理合约\n vault = address(new ERC1967Proxy(vaultImplementation, initData));\n \n // 记录vault信息\n allVaults.push(vault);\n isVault[vault] = true;\n \n emit VaultCreated(\n vault,\n _manager,\n _name,\n _symbol,\n actualHardCap,\n allVaults.length - 1\n );\n }\n \n /**\n * @notice 批量创建vault\n * @param _names YT代币名称数组\n * @param _symbols YT代币符号数组\n * @param _managers 管理员地址数组\n * @param _hardCaps 硬顶数组\n * @param _wusd WUSD代币地址传0使用默认地址\n * @param _redemptionTimes 赎回时间数组Unix时间戳\n * @param _initialWusdPrices 初始WUSD价格数组精度1e30\n * @param _initialYtPrices 初始YT价格数组精度1e30\n * @return vaults 创建的vault地址数组\n */\n function createVaultBatch(\n string[] memory _names,\n string[] memory _symbols,\n address[] memory _managers,\n uint256[] memory _hardCaps,\n address _wusd,\n uint256[] memory _redemptionTimes,\n uint256[] memory _initialWusdPrices,\n uint256[] memory _initialYtPrices\n ) external returns (address[] memory vaults) {\n require(\n _names.length == _symbols.length &&\n _names.length == _managers.length &&\n _names.length == _hardCaps.length &&\n _names.length == _redemptionTimes.length &&\n _names.length == _initialWusdPrices.length &&\n _names.length == _initialYtPrices.length,\n \"Length mismatch\"\n );\n \n vaults = new address[](_names.length);\n \n for (uint256 i = 0; i < _names.length; i++) {\n vaults[i] = this.createVault(\n _names[i],\n _symbols[i],\n _managers[i],\n _hardCaps[i],\n _wusd,\n _redemptionTimes[i],\n _initialWusdPrices[i],\n _initialYtPrices[i]\n );\n }\n }\n \n /**\n * @notice 设置指定vault的硬顶\n * @param _vault vault地址\n * @param _hardCap 新的硬顶值\n */\n function setHardCap(address _vault, uint256 _hardCap) external onlyOwner {\n if (!isVault[_vault]) revert VaultNotExists();\n \n YTAssetVault(_vault).setHardCap(_hardCap);\n emit HardCapSet(_vault, _hardCap);\n }\n \n /**\n * @notice 批量设置硬顶\n * @param _vaults vault地址数组\n * @param _hardCaps 硬顶值数组\n */\n function setHardCapBatch(\n address[] memory _vaults,\n uint256[] memory _hardCaps\n ) external onlyOwner {\n require(_vaults.length == _hardCaps.length, \"Length mismatch\");\n \n for (uint256 i = 0; i < _vaults.length; i++) {\n if (!isVault[_vaults[i]]) revert VaultNotExists();\n YTAssetVault(_vaults[i]).setHardCap(_hardCaps[i]);\n emit HardCapSet(_vaults[i], _hardCaps[i]);\n }\n }\n \n /**\n * @notice 设置vault的管理员\n * @param _vault vault地址\n * @param _manager 新管理员地址\n */\n function setVaultManager(address _vault, address _manager) external onlyOwner {\n if (!isVault[_vault]) revert VaultNotExists();\n if (_manager == address(0)) revert InvalidAddress();\n \n YTAssetVault(_vault).setManager(_manager);\n }\n \n /**\n * @notice 设置vault的下一个赎回时间\n * @param _vault vault地址\n * @param _nextRedemptionTime 赎回时间Unix时间戳\n */\n function setVaultNextRedemptionTime(address _vault, uint256 _nextRedemptionTime) external onlyOwner {\n if (!isVault[_vault]) revert VaultNotExists();\n \n YTAssetVault(_vault).setNextRedemptionTime(_nextRedemptionTime);\n emit NextRedemptionTimeSet(_vault, _nextRedemptionTime);\n }\n \n /**\n * @notice 批量设置赎回时间\n * @param _vaults vault地址数组\n * @param _nextRedemptionTime 统一的赎回时间\n */\n function setVaultNextRedemptionTimeBatch(\n address[] memory _vaults,\n uint256 _nextRedemptionTime\n ) external onlyOwner {\n for (uint256 i = 0; i < _vaults.length; i++) {\n if (!isVault[_vaults[i]]) revert VaultNotExists();\n YTAssetVault(_vaults[i]).setNextRedemptionTime(_nextRedemptionTime);\n emit NextRedemptionTimeSet(_vaults[i], _nextRedemptionTime);\n }\n }\n \n /**\n * @notice 暂停vault紧急情况\n * @param _vault vault地址\n */\n function pauseVault(address _vault) external onlyOwner {\n if (!isVault[_vault]) revert VaultNotExists();\n \n YTAssetVault(_vault).pause();\n }\n \n /**\n * @notice 恢复vault\n * @param _vault vault地址\n */\n function unpauseVault(address _vault) external onlyOwner {\n if (!isVault[_vault]) revert VaultNotExists();\n \n YTAssetVault(_vault).unpause();\n }\n \n /**\n * @notice 批量暂停vaults\n * @param _vaults vault地址数组\n */\n function pauseVaultBatch(address[] memory _vaults) external onlyOwner {\n for (uint256 i = 0; i < _vaults.length; i++) {\n if (!isVault[_vaults[i]]) revert VaultNotExists();\n YTAssetVault(_vaults[i]).pause();\n }\n }\n \n /**\n * @notice 批量恢复vaults\n * @param _vaults vault地址数组\n */\n function unpauseVaultBatch(address[] memory _vaults) external onlyOwner {\n for (uint256 i = 0; i < _vaults.length; i++) {\n if (!isVault[_vaults[i]]) revert VaultNotExists();\n YTAssetVault(_vaults[i]).unpause();\n }\n }\n \n /**\n * @notice 更新vault价格\n * @param _vault vault地址\n * @param _wusdPrice WUSD价格精度1e30\n * @param _ytPrice YT价格精度1e30\n */\n function updateVaultPrices(\n address _vault, \n uint256 _wusdPrice, \n uint256 _ytPrice\n ) external onlyOwner {\n if (!isVault[_vault]) revert VaultNotExists();\n \n YTAssetVault(_vault).updatePrices(_wusdPrice, _ytPrice);\n emit PricesUpdated(_vault, _wusdPrice, _ytPrice);\n }\n \n /**\n * @notice 批量更新价格\n * @param _vaults vault地址数组\n * @param _wusdPrices WUSD价格数组精度1e30\n * @param _ytPrices YT价格数组精度1e30\n */\n function updateVaultPricesBatch(\n address[] memory _vaults,\n uint256[] memory _wusdPrices,\n uint256[] memory _ytPrices\n ) external onlyOwner {\n require(\n _vaults.length == _wusdPrices.length &&\n _vaults.length == _ytPrices.length,\n \"Length mismatch\"\n );\n \n for (uint256 i = 0; i < _vaults.length; i++) {\n if (!isVault[_vaults[i]]) revert VaultNotExists();\n YTAssetVault(_vaults[i]).updatePrices(_wusdPrices[i], _ytPrices[i]);\n emit PricesUpdated(_vaults[i], _wusdPrices[i], _ytPrices[i]);\n }\n }\n \n /**\n * @notice 升级指定vault\n * @param _vault vault地址\n * @param _newImplementation 新实现地址\n */\n function upgradeVault(address _vault, address _newImplementation) external onlyOwner {\n if (!isVault[_vault]) revert VaultNotExists();\n if (_newImplementation == address(0)) revert InvalidAddress();\n \n YTAssetVault(_vault).upgradeToAndCall(_newImplementation, \"\");\n }\n \n /**\n * @notice 批量升级vault\n * @param _vaults vault地址数组\n * @param _newImplementation 新实现地址\n */\n function upgradeVaultBatch(\n address[] memory _vaults,\n address _newImplementation\n ) external onlyOwner {\n if (_newImplementation == address(0)) revert InvalidAddress();\n \n for (uint256 i = 0; i < _vaults.length; i++) {\n if (!isVault[_vaults[i]]) revert VaultNotExists();\n YTAssetVault(_vaults[i]).upgradeToAndCall(_newImplementation, \"\");\n }\n }\n \n /**\n * @notice 获取所有vault数量\n */\n function getVaultCount() external view returns (uint256) {\n return allVaults.length;\n }\n \n /**\n * @notice 获取指定范围的vault地址\n * @param _start 起始索引\n * @param _end 结束索引(不包含)\n */\n function getVaults(uint256 _start, uint256 _end) \n external \n view \n returns (address[] memory vaults) \n {\n require(_start < _end && _end <= allVaults.length, \"Invalid range\");\n \n vaults = new address[](_end - _start);\n for (uint256 i = _start; i < _end; i++) {\n vaults[i - _start] = allVaults[i];\n }\n }\n \n /**\n * @notice 获取所有vault地址\n */\n function getAllVaults() external view returns (address[] memory) {\n return allVaults;\n }\n \n /**\n * @notice 获取vault详细信息\n * @param _vault vault地址\n */\n function getVaultInfo(address _vault) external view returns (\n bool exists,\n uint256 totalAssets,\n uint256 idleAssets,\n uint256 managedAssets,\n uint256 totalSupply,\n uint256 hardCap,\n uint256 wusdPrice,\n uint256 ytPrice,\n uint256 nextRedemptionTime\n ) {\n exists = isVault[_vault];\n if (!exists) return (false, 0, 0, 0, 0, 0, 0, 0, 0);\n (\n totalAssets,\n idleAssets,\n managedAssets,\n totalSupply,\n hardCap,\n wusdPrice,\n ytPrice,\n nextRedemptionTime\n ) = YTAssetVault(_vault).getVaultInfo();\n }\n \n /**\n * @dev 预留存储空间,用于未来升级时添加新的状态变量\n * 50个slot = 50 * 32 bytes = 1600 bytes\n */\n uint256[50] private __gap;\n}\n"},"contracts/vault/YTAssetVault.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\n\n/**\n * @title YTAssetVault\n * @notice 基于价格的资产金库用户根据WUSD和YT代币价格进行兑换\n * @dev UUPS可升级合约YT是份额代币\n */\ncontract YTAssetVault is \n Initializable, \n ERC20Upgradeable,\n UUPSUpgradeable,\n ReentrancyGuardUpgradeable,\n PausableUpgradeable \n{\n using SafeERC20 for IERC20;\n\n error Forbidden();\n error HardCapExceeded();\n error InvalidAmount();\n error InvalidHardCap();\n error InvalidPrice();\n error InsufficientWUSD();\n error InsufficientYTA();\n error StillInLockPeriod();\n error RequestNotFound();\n error RequestAlreadyProcessed();\n error InvalidBatchSize();\n \n /// @notice 工厂合约地址\n address public factory;\n \n /// @notice 管理员地址\n address public manager;\n \n /// @notice YT代币硬顶最大可铸造的YT数量\n uint256 public hardCap;\n \n /// @notice 已提取用于管理的WUSD数量\n uint256 public managedAssets;\n \n /// @notice WUSD代币地址\n address public wusdAddress;\n \n /// @notice WUSD价格精度1e30\n uint256 public wusdPrice;\n \n /// @notice YT价格精度1e30\n uint256 public ytPrice;\n \n /// @notice 价格精度\n uint256 public constant PRICE_PRECISION = 1e30;\n \n /// @notice 下一个赎回开放时间(所有用户统一)\n uint256 public nextRedemptionTime;\n \n /// @notice 提现请求结构体\n struct WithdrawRequest {\n address user; // 用户地址\n uint256 ytAmount; // YT数量\n uint256 wusdAmount; // 应得WUSD数量\n uint256 requestTime; // 请求时间\n uint256 queueIndex; // 队列位置\n bool processed; // 是否已处理\n }\n \n /// @notice 请求ID => 请求详情\n mapping(uint256 => WithdrawRequest) public withdrawRequests;\n \n /// @notice 用户地址 => 用户的所有请求ID列表\n mapping(address => uint256[]) private userRequestIds;\n \n /// @notice 请求ID计数器\n uint256 public requestIdCounter;\n \n /// @notice 已处理到的队列位置\n uint256 public processedUpToIndex;\n \n /// @notice 当前待处理的请求数量(实时维护,避免循环计算)\n uint256 public pendingRequestsCount;\n \n event HardCapSet(uint256 newHardCap);\n event ManagerSet(address indexed newManager);\n event AssetsWithdrawn(address indexed to, uint256 amount);\n event AssetsDeposited(uint256 amount);\n event PriceUpdated(uint256 wusdPrice, uint256 ytPrice, uint256 timestamp);\n event Buy(address indexed user, uint256 wusdAmount, uint256 ytAmount);\n event Sell(address indexed user, uint256 ytAmount, uint256 wusdAmount);\n event NextRedemptionTimeSet(uint256 newRedemptionTime);\n event WithdrawRequestCreated(uint256 indexed requestId, address indexed user, uint256 ytAmount, uint256 wusdAmount, uint256 queueIndex);\n event WithdrawRequestProcessed(uint256 indexed requestId, address indexed user, uint256 wusdAmount);\n event BatchProcessed(uint256 startIndex, uint256 endIndex, uint256 processedCount, uint256 totalWusdDistributed);\n \n modifier onlyFactory() {\n if (msg.sender != factory) revert Forbidden();\n _;\n }\n \n modifier onlyManager() {\n if (msg.sender != manager) revert Forbidden();\n _;\n }\n \n /**\n * @notice 初始化金库\n * @param _name YT代币名称\n * @param _symbol YT代币符号\n * @param _manager 管理员地址\n * @param _hardCap 硬顶限制\n * @param _wusd WUSD代币地址可选传0则使用默认地址\n * @param _redemptionTime 赎回时间Unix时间戳\n * @param _initialWusdPrice 初始WUSD价格精度1e30传0则使用默认值1.0\n * @param _initialYtPrice 初始YT价格精度1e30传0则使用默认值1.0\n * \n * @dev 价格精度为1e30\n */\n function initialize(\n string memory _name,\n string memory _symbol,\n address _manager,\n uint256 _hardCap,\n address _wusd,\n uint256 _redemptionTime,\n uint256 _initialWusdPrice,\n uint256 _initialYtPrice\n ) external initializer {\n wusdAddress = _wusd == address(0) \n ? 0x7Cd017ca5ddb86861FA983a34b5F495C6F898c41 \n : _wusd;\n \n __ERC20_init(_name, _symbol);\n __UUPSUpgradeable_init();\n __ReentrancyGuard_init();\n __Pausable_init();\n \n factory = msg.sender;\n manager = _manager;\n hardCap = _hardCap;\n \n // 使用传入的初始价格如果为0则使用默认值1.0\n wusdPrice = _initialWusdPrice == 0 ? PRICE_PRECISION : _initialWusdPrice;\n ytPrice = _initialYtPrice == 0 ? PRICE_PRECISION : _initialYtPrice;\n \n // 设置赎回时间\n nextRedemptionTime = _redemptionTime;\n }\n \n /**\n * @notice 授权升级仅factory可调用\n * @param newImplementation 新实现合约地址\n */\n function _authorizeUpgrade(address newImplementation) internal override onlyFactory {}\n \n /**\n * @notice 设置硬顶\n * @param _hardCap 新的硬顶值\n */\n function setHardCap(uint256 _hardCap) external onlyFactory {\n if (_hardCap < totalSupply()) revert InvalidHardCap();\n hardCap = _hardCap;\n emit HardCapSet(_hardCap);\n }\n \n /**\n * @notice 设置管理员\n * @param _manager 新管理员地址\n */\n function setManager(address _manager) external onlyFactory {\n manager = _manager;\n emit ManagerSet(_manager);\n }\n \n /**\n * @notice 暂停合约仅factory可调用\n * @dev 暂停后,所有资金流动操作将被禁止\n */\n function pause() external onlyFactory {\n _pause();\n }\n \n /**\n * @notice 恢复合约仅factory可调用\n */\n function unpause() external onlyFactory {\n _unpause();\n }\n \n /**\n * @notice 设置下一个赎回开放时间仅factory可调用\n * @param _nextRedemptionTime 下一个赎回时间Unix时间戳\n * @dev 所有用户统一在此时间后才能赎回,类似基金的赎回日\n */\n function setNextRedemptionTime(uint256 _nextRedemptionTime) external onlyFactory {\n nextRedemptionTime = _nextRedemptionTime;\n emit NextRedemptionTimeSet(_nextRedemptionTime);\n }\n \n /**\n * @notice 更新价格仅manager可调用\n * @param _wusdPrice WUSD价格精度1e30\n * @param _ytPrice YT价格精度1e30\n */\n function updatePrices(uint256 _wusdPrice, uint256 _ytPrice) external onlyFactory {\n if (_wusdPrice == 0 || _ytPrice == 0) revert InvalidPrice();\n \n wusdPrice = _wusdPrice;\n ytPrice = _ytPrice;\n \n emit PriceUpdated(_wusdPrice, _ytPrice, block.timestamp);\n }\n \n /**\n * @notice 用WUSD购买YT\n * @param _wusdAmount 支付的WUSD数量\n * @return ytAmount 实际获得的YT数量\n * @dev 首次购买时YT价格 = WUSD价格1:1兑换\n */\n function depositYT(uint256 _wusdAmount) \n external \n nonReentrant \n whenNotPaused\n returns (uint256 ytAmount) \n {\n if (_wusdAmount == 0) revert InvalidAmount();\n \n // 计算可以购买的YT数量\n ytAmount = (_wusdAmount * wusdPrice) / ytPrice;\n \n // 检查硬顶\n if (hardCap > 0 && totalSupply() + ytAmount > hardCap) {\n revert HardCapExceeded();\n }\n \n // 转入WUSD\n IERC20(wusdAddress).safeTransferFrom(msg.sender, address(this), _wusdAmount);\n \n // 铸造YT\n _mint(msg.sender, ytAmount);\n \n emit Buy(msg.sender, _wusdAmount, ytAmount);\n }\n \n /**\n * @notice 提交YT提现请求需要等到统一赎回时间\n * @param _ytAmount 卖出的YT数量\n * @return requestId 提现请求ID\n * @dev 用户提交请求后YT会立即销毁但WUSD需要等待批量处理后才能领取\n */\n function withdrawYT(uint256 _ytAmount) \n external \n nonReentrant \n whenNotPaused\n returns (uint256 requestId) \n {\n if (_ytAmount == 0) revert InvalidAmount();\n if (balanceOf(msg.sender) < _ytAmount) revert InsufficientYTA();\n \n // 检查是否到达统一赎回时间\n if (block.timestamp < nextRedemptionTime) {\n revert StillInLockPeriod();\n }\n \n // 计算可以换取的WUSD数量\n uint256 wusdAmount = (_ytAmount * ytPrice) / wusdPrice;\n \n // 销毁YT代币\n _burn(msg.sender, _ytAmount);\n \n // 创建提现请求\n requestId = requestIdCounter;\n withdrawRequests[requestId] = WithdrawRequest({\n user: msg.sender,\n ytAmount: _ytAmount,\n wusdAmount: wusdAmount,\n requestTime: block.timestamp,\n queueIndex: requestId,\n processed: false\n });\n \n // 记录用户的请求ID\n userRequestIds[msg.sender].push(requestId);\n \n // 递增计数器\n requestIdCounter++;\n \n // 增加待处理请求计数\n pendingRequestsCount++;\n \n emit WithdrawRequestCreated(requestId, msg.sender, _ytAmount, wusdAmount, requestId);\n }\n \n /**\n * @notice 批量处理提现请求仅manager或factory可调用\n * @param _batchSize 本批次最多处理的请求数量\n * @return processedCount 实际处理的请求数量\n * @return totalDistributed 实际分发的WUSD总量\n * @dev 按照请求ID顺序即时间先后依次处理遇到资金不足时停止\n */\n function processBatchWithdrawals(uint256 _batchSize) \n external \n nonReentrant \n whenNotPaused\n returns (uint256 processedCount, uint256 totalDistributed) \n {\n // 权限检查只有manager或factory可以调用\n if (msg.sender != manager && msg.sender != factory) {\n revert Forbidden();\n }\n \n if (_batchSize == 0) revert InvalidBatchSize();\n \n uint256 availableWUSD = IERC20(wusdAddress).balanceOf(address(this));\n uint256 startIndex = processedUpToIndex;\n \n for (uint256 i = processedUpToIndex; i < requestIdCounter && processedCount < _batchSize; i++) {\n WithdrawRequest storage request = withdrawRequests[i];\n \n // 跳过已处理的请求\n if (request.processed) {\n continue;\n }\n \n // 检查是否有足够的WUSD\n if (availableWUSD >= request.wusdAmount) {\n // 转账WUSD给用户\n IERC20(wusdAddress).safeTransfer(request.user, request.wusdAmount);\n \n // 标记为已处理\n request.processed = true;\n \n // 更新统计\n availableWUSD -= request.wusdAmount;\n totalDistributed += request.wusdAmount;\n processedCount++;\n \n // 减少待处理请求计数\n pendingRequestsCount--;\n \n emit WithdrawRequestProcessed(i, request.user, request.wusdAmount);\n } else {\n // WUSD不足停止处理\n break;\n }\n }\n \n // 更新处理进度(跳到下一个未处理的位置)\n if (processedCount > 0) {\n // 找到下一个未处理的位置\n for (uint256 i = processedUpToIndex; i < requestIdCounter; i++) {\n if (!withdrawRequests[i].processed) {\n processedUpToIndex = i;\n break;\n }\n // 如果所有请求都已处理完\n if (i == requestIdCounter - 1) {\n processedUpToIndex = requestIdCounter;\n }\n }\n }\n \n emit BatchProcessed(startIndex, processedUpToIndex, processedCount, totalDistributed);\n }\n \n /**\n * @notice 查询用户的所有提现请求ID\n * @param _user 用户地址\n * @return 用户的所有请求ID数组\n */\n function getUserRequestIds(address _user) external view returns (uint256[] memory) {\n return userRequestIds[_user];\n }\n \n /**\n * @notice 查询指定请求的详情\n * @param _requestId 请求ID\n * @return request 请求详情\n */\n function getRequestDetails(uint256 _requestId) external view returns (WithdrawRequest memory request) {\n if (_requestId >= requestIdCounter) revert RequestNotFound();\n return withdrawRequests[_requestId];\n }\n \n /**\n * @notice 获取待处理的请求数量\n * @return 待处理的请求总数\n * @dev 使用实时维护的计数器O(1)复杂度避免gas爆炸\n */\n function getPendingRequestsCount() external view returns (uint256) {\n return pendingRequestsCount;\n }\n \n /**\n * @notice 获取用户待处理的请求\n * @param _user 用户地址\n * @return pendingRequests 用户待处理的请求详情数组\n */\n function getUserPendingRequests(address _user) external view returns (WithdrawRequest[] memory pendingRequests) {\n uint256[] memory requestIds = userRequestIds[_user];\n \n // 先计算有多少待处理的请求\n uint256 pendingCount = 0;\n for (uint256 i = 0; i < requestIds.length; i++) {\n if (!withdrawRequests[requestIds[i]].processed) {\n pendingCount++;\n }\n }\n \n // 构造返回数组\n pendingRequests = new WithdrawRequest[](pendingCount);\n uint256 index = 0;\n for (uint256 i = 0; i < requestIds.length; i++) {\n uint256 requestId = requestIds[i];\n if (!withdrawRequests[requestId].processed) {\n pendingRequests[index] = withdrawRequests[requestId];\n index++;\n }\n }\n }\n \n /**\n * @notice 获取队列处理进度\n * @return currentIndex 当前处理到的位置\n * @return totalRequests 总请求数\n * @return pendingRequests 待处理请求数\n * @dev 使用实时维护的计数器,避免循环计算\n */\n function getQueueProgress() external view returns (\n uint256 currentIndex,\n uint256 totalRequests,\n uint256 pendingRequests\n ) {\n currentIndex = processedUpToIndex;\n totalRequests = requestIdCounter;\n pendingRequests = pendingRequestsCount;\n }\n \n /**\n * @notice 查询距离下次赎回开放还需等待多久\n * @return remainingTime 剩余时间0表示可以赎回\n */\n function getTimeUntilNextRedemption() external view returns (uint256 remainingTime) {\n if (block.timestamp >= nextRedemptionTime) {\n return 0;\n }\n return nextRedemptionTime - block.timestamp;\n }\n \n /**\n * @notice 检查当前是否可以赎回\n * @return 是否可以赎回\n */\n function canRedeemNow() external view returns (bool) {\n return block.timestamp >= nextRedemptionTime;\n }\n \n /**\n * @notice 提取WUSD用于外部投资\n * @param _to 接收地址\n * @param _amount 提取数量\n */\n function withdrawForManagement(address _to, uint256 _amount) external onlyManager nonReentrant whenNotPaused {\n if (_amount == 0) revert InvalidAmount();\n \n uint256 availableAssets = IERC20(wusdAddress).balanceOf(address(this));\n if (_amount > availableAssets) revert InvalidAmount();\n \n managedAssets += _amount;\n IERC20(wusdAddress).safeTransfer(_to, _amount);\n \n emit AssetsWithdrawn(_to, _amount);\n }\n \n /**\n * @notice 将管理的资产归还到金库(可以归还更多,产生收益)\n * @param _amount 归还数量\n */\n function depositManagedAssets(uint256 _amount) external onlyManager nonReentrant whenNotPaused {\n if (_amount == 0) revert InvalidAmount();\n \n // 先更新状态遵循CEI模式\n if (_amount >= managedAssets) {\n // 归还金额 >= 已管理资产managedAssets归零多余部分是收益\n managedAssets = 0;\n } else {\n // 归还金额 < 已管理资产,部分归还\n managedAssets -= _amount;\n }\n \n // 从manager转入WUSD到合约\n IERC20(wusdAddress).safeTransferFrom(msg.sender, address(this), _amount);\n \n emit AssetsDeposited(_amount);\n }\n \n /**\n * @notice 获取总资产(包含被管理的资产)\n * @return 总资产 = 合约余额 + 被管理的资产\n */\n function totalAssets() public view returns (uint256) {\n return IERC20(wusdAddress).balanceOf(address(this)) + managedAssets;\n }\n \n /**\n * @notice 获取空闲资产(可用于提取的资产)\n * @return 合约中实际持有的WUSD数量\n */\n function idleAssets() public view returns (uint256) {\n return IERC20(wusdAddress).balanceOf(address(this));\n }\n \n /**\n * @notice 预览购买计算支付指定WUSD可获得的YT数量\n * @param _wusdAmount 支付的WUSD数量\n * @return ytAmount 可获得的YT数量\n */\n function previewBuy(uint256 _wusdAmount) external view returns (uint256 ytAmount) {\n ytAmount = (_wusdAmount * wusdPrice) / ytPrice;\n }\n \n /**\n * @notice 预览卖出计算卖出指定YT可获得的WUSD数量\n * @param _ytAmount 卖出的YT数量\n * @return wusdAmount 可获得的WUSD数量\n */\n function previewSell(uint256 _ytAmount) external view returns (uint256 wusdAmount) {\n wusdAmount = (_ytAmount * ytPrice) / wusdPrice;\n }\n \n /**\n * @notice 获取金库信息\n */\n function getVaultInfo() external view returns (\n uint256 _totalAssets,\n uint256 _idleAssets,\n uint256 _managedAssets,\n uint256 _totalSupply,\n uint256 _hardCap,\n uint256 _wusdPrice,\n uint256 _ytPrice,\n uint256 _nextRedemptionTime\n ) {\n _totalAssets = totalAssets();\n _idleAssets = idleAssets();\n _managedAssets = managedAssets;\n _totalSupply = totalSupply();\n _hardCap = hardCap;\n _wusdPrice = wusdPrice;\n _ytPrice = ytPrice;\n _nextRedemptionTime = nextRedemptionTime;\n }\n \n /**\n * @dev 预留存储空间,用于未来升级时添加新的状态变量\n * 50个slot = 50 * 32 bytes = 1600 bytes\n */\n uint256[50] private __gap;\n}\n"},"contracts/ytLending/Configurator.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\";\n\nimport \"./ConfiguratorStorage.sol\";\nimport \"./LendingFactory.sol\";\n\n/**\n * @title Configurator\n * @notice 借贷池配置管理合约\n */\ncontract Configurator is \n ConfiguratorStorage, \n UUPSUpgradeable,\n OwnableUpgradeable \n{\n event SetFactory(address indexed lendingProxy, address indexed oldFactory, address indexed newFactory);\n event SetConfiguration(address indexed lendingProxy, Configuration oldConfiguration, Configuration newConfiguration);\n event AddAsset(address indexed lendingProxy, AssetConfig assetConfig);\n event UpdateAsset(address indexed lendingProxy, AssetConfig oldAssetConfig, AssetConfig newAssetConfig);\n event LendingDeployed(address indexed lendingProxy, address indexed newLending);\n\n error AlreadyInitialized();\n error AssetDoesNotExist();\n error ConfigurationAlreadyExists();\n error InvalidAddress();\n\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n function initialize() external initializer {\n __UUPSUpgradeable_init();\n __Ownable_init(msg.sender);\n }\n\n /**\n * @dev 授权升级函数 - 只有 owner 可以升级\n */\n function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\n\n /**\n * @notice 设置工厂合约地址\n * @param lendingProxy Lending 代理地址\n * @param newFactory 新工厂地址\n */\n function setFactory(address lendingProxy, address newFactory) external onlyOwner {\n if (newFactory == address(0)) revert InvalidAddress();\n \n address oldFactory = factory[lendingProxy];\n factory[lendingProxy] = newFactory;\n emit SetFactory(lendingProxy, oldFactory, newFactory);\n }\n\n /**\n * @notice 设置市场配置\n * @param lendingProxy Lending 代理地址\n * @param newConfiguration 新配置\n */\n function setConfiguration(address lendingProxy, Configuration calldata newConfiguration) \n external \n onlyOwner \n {\n Configuration memory oldConfiguration = configuratorParams[lendingProxy];\n \n // 防止修改不可变参数\n if (oldConfiguration.baseToken != address(0) &&\n (oldConfiguration.baseToken != newConfiguration.baseToken ||\n oldConfiguration.trackingIndexScale != newConfiguration.trackingIndexScale))\n revert ConfigurationAlreadyExists();\n\n // 删除旧的资产配置\n delete configuratorParams[lendingProxy];\n \n // 设置新配置\n configuratorParams[lendingProxy].baseToken = newConfiguration.baseToken;\n configuratorParams[lendingProxy].baseTokenPriceFeed = newConfiguration.baseTokenPriceFeed;\n configuratorParams[lendingProxy].supplyKink = newConfiguration.supplyKink;\n configuratorParams[lendingProxy].supplyPerYearInterestRateSlopeLow = newConfiguration.supplyPerYearInterestRateSlopeLow;\n configuratorParams[lendingProxy].supplyPerYearInterestRateSlopeHigh = newConfiguration.supplyPerYearInterestRateSlopeHigh;\n configuratorParams[lendingProxy].supplyPerYearInterestRateBase = newConfiguration.supplyPerYearInterestRateBase;\n configuratorParams[lendingProxy].borrowKink = newConfiguration.borrowKink;\n configuratorParams[lendingProxy].borrowPerYearInterestRateSlopeLow = newConfiguration.borrowPerYearInterestRateSlopeLow;\n configuratorParams[lendingProxy].borrowPerYearInterestRateSlopeHigh = newConfiguration.borrowPerYearInterestRateSlopeHigh;\n configuratorParams[lendingProxy].borrowPerYearInterestRateBase = newConfiguration.borrowPerYearInterestRateBase;\n configuratorParams[lendingProxy].storeFrontPriceFactor = newConfiguration.storeFrontPriceFactor;\n configuratorParams[lendingProxy].trackingIndexScale = newConfiguration.trackingIndexScale;\n configuratorParams[lendingProxy].baseBorrowMin = newConfiguration.baseBorrowMin;\n configuratorParams[lendingProxy].targetReserves = newConfiguration.targetReserves;\n \n // 复制资产配置\n for (uint i = 0; i < newConfiguration.assetConfigs.length; i++) {\n configuratorParams[lendingProxy].assetConfigs.push(newConfiguration.assetConfigs[i]);\n }\n \n emit SetConfiguration(lendingProxy, oldConfiguration, newConfiguration);\n }\n\n /**\n * @notice 添加抵押资产\n * @param lendingProxy Lending 代理地址\n * @param assetConfig 资产配置\n */\n function addAsset(address lendingProxy, AssetConfig calldata assetConfig) \n external \n onlyOwner \n {\n configuratorParams[lendingProxy].assetConfigs.push(assetConfig);\n emit AddAsset(lendingProxy, assetConfig);\n }\n\n /**\n * @notice 更新资产配置\n * @param lendingProxy Lending 代理地址\n * @param newAssetConfig 新资产配置\n */\n function updateAsset(address lendingProxy, AssetConfig calldata newAssetConfig) \n external \n onlyOwner \n {\n uint assetIndex = getAssetIndex(lendingProxy, newAssetConfig.asset);\n AssetConfig memory oldAssetConfig = configuratorParams[lendingProxy].assetConfigs[assetIndex];\n configuratorParams[lendingProxy].assetConfigs[assetIndex] = newAssetConfig;\n emit UpdateAsset(lendingProxy, oldAssetConfig, newAssetConfig);\n }\n\n /**\n * @notice 更新资产抵押率\n * @param lendingProxy Lending 代理地址\n * @param asset 资产地址\n * @param newBorrowCF 新借款抵押率\n */\n function updateAssetBorrowCollateralFactor(\n address lendingProxy, \n address asset, \n uint64 newBorrowCF\n ) \n external \n onlyOwner \n {\n uint assetIndex = getAssetIndex(lendingProxy, asset);\n configuratorParams[lendingProxy].assetConfigs[assetIndex].borrowCollateralFactor = newBorrowCF;\n }\n\n /**\n * @notice 更新资产供应上限\n * @param lendingProxy Lending 代理地址\n * @param asset 资产地址\n * @param newSupplyCap 新供应上限\n */\n function updateAssetSupplyCap(\n address lendingProxy, \n address asset, \n uint128 newSupplyCap\n ) \n external \n onlyOwner \n {\n uint assetIndex = getAssetIndex(lendingProxy, asset);\n configuratorParams[lendingProxy].assetConfigs[assetIndex].supplyCap = newSupplyCap;\n }\n\n /**\n * @notice 部署新的 Lending 实现\n * @param lendingProxy Lending 代理地址\n * @return 新实现合约地址\n */\n function deploy(address lendingProxy) external onlyOwner returns (address) {\n address newLending = LendingFactory(factory[lendingProxy]).deploy();\n emit LendingDeployed(lendingProxy, newLending);\n return newLending;\n }\n\n /**\n * @notice 获取资产索引\n * @param lendingProxy Lending 代理地址\n * @param asset 资产地址\n * @return 资产在配置数组中的索引\n */\n function getAssetIndex(address lendingProxy, address asset) public view returns (uint) {\n AssetConfig[] memory assetConfigs = configuratorParams[lendingProxy].assetConfigs;\n uint numAssets = assetConfigs.length;\n for (uint i = 0; i < numAssets; ) {\n if (assetConfigs[i].asset == asset) {\n return i;\n }\n unchecked { i++; }\n }\n revert AssetDoesNotExist();\n }\n\n /**\n * @notice 获取市场配置\n * @param lendingProxy Lending 代理地址\n * @return 配置信息\n */\n function getConfiguration(address lendingProxy) external view returns (Configuration memory) {\n return configuratorParams[lendingProxy];\n }\n}\n\n"},"contracts/ytLending/ConfiguratorStorage.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"./LendingConfiguration.sol\";\n\n/**\n * @title ConfiguratorStorage\n * @notice Configurator 存储定义\n */\nabstract contract ConfiguratorStorage is LendingConfiguration {\n // Lending 代理地址 => 工厂合约地址\n mapping(address => address) public factory;\n \n // Lending 代理地址 => 配置参数\n mapping(address => Configuration) public configuratorParams;\n}\n\n"},"contracts/ytLending/Lending.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\n\nimport \"./LendingStorage.sol\";\nimport \"./LendingMath.sol\";\nimport \"../interfaces/ILending.sol\";\nimport \"../interfaces/IPriceFeed.sol\";\n\n/**\n * @title Lending\n * @notice 借贷池核心合约\n */\ncontract Lending is \n ILending,\n LendingStorage,\n UUPSUpgradeable,\n OwnableUpgradeable,\n PausableUpgradeable,\n ReentrancyGuardUpgradeable \n{\n using SafeERC20 for IERC20;\n\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n /**\n * @notice 初始化函数\n * @param config 市场配置\n */\n function initialize(Configuration calldata config) external initializer {\n __UUPSUpgradeable_init();\n __Ownable_init(msg.sender);\n __Pausable_init();\n __ReentrancyGuard_init();\n \n // 设置基础配置\n baseToken = config.baseToken;\n baseTokenPriceFeed = config.baseTokenPriceFeed;\n\n // 常量:一年的秒数\n uint64 SECONDS_PER_YEAR = 365 * 24 * 60 * 60; // 31,536,000\n \n // 设置利率参数\n supplyKink = config.supplyKink;\n supplyPerSecondInterestRateSlopeLow = uint64(config.supplyPerYearInterestRateSlopeLow / SECONDS_PER_YEAR);\n supplyPerSecondInterestRateSlopeHigh = uint64(config.supplyPerYearInterestRateSlopeHigh / SECONDS_PER_YEAR);\n supplyPerSecondInterestRateBase = uint64(config.supplyPerYearInterestRateBase / SECONDS_PER_YEAR);\n \n borrowKink = config.borrowKink;\n borrowPerSecondInterestRateSlopeLow = uint64(config.borrowPerYearInterestRateSlopeLow / SECONDS_PER_YEAR);\n borrowPerSecondInterestRateSlopeHigh = uint64(config.borrowPerYearInterestRateSlopeHigh / SECONDS_PER_YEAR);\n borrowPerSecondInterestRateBase = uint64(config.borrowPerYearInterestRateBase / SECONDS_PER_YEAR);\n \n // 设置其他参数\n storeFrontPriceFactor = config.storeFrontPriceFactor;\n trackingIndexScale = config.trackingIndexScale;\n baseBorrowMin = config.baseBorrowMin;\n targetReserves = config.targetReserves;\n \n // 初始化利息累计因子\n supplyIndex = 1e18;\n borrowIndex = 1e18;\n lastAccrualTime = block.timestamp;\n \n // 设置抵押资产配置\n for (uint i = 0; i < config.assetConfigs.length; i++) {\n AssetConfig memory assetConfig = config.assetConfigs[i];\n \n // 验证参数合法性(必须 < 1\n if(assetConfig.liquidationFactor >= 1e18) revert InvalidLiquidationFactor();\n if(assetConfig.borrowCollateralFactor >= 1e18) revert InvalidBorrowCollateralFactor();\n if(assetConfig.liquidateCollateralFactor >= 1e18) revert InvalidLiquidateCollateralFactor();\n \n assetConfigs[assetConfig.asset] = assetConfig;\n assetList.push(assetConfig.asset);\n }\n }\n\n function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\n\n function pause() external onlyOwner {\n _pause();\n }\n \n function unpause() external onlyOwner {\n _unpause();\n }\n\n /**\n * @notice 计算累计利息后的索引(不修改状态)\n * @param timeElapsed 经过的时间\n * @return 新的 supplyIndex 和 borrowIndex\n */\n function accruedInterestIndices(uint256 timeElapsed) internal view returns (uint256, uint256) {\n uint256 newSupplyIndex = supplyIndex;\n uint256 newBorrowIndex = borrowIndex;\n \n if (timeElapsed > 0) {\n // 计算实际的 totalSupply 和 totalBorrow含利息\n uint256 totalSupply = (uint256(totalSupplyBase) * supplyIndex) / 1e18;\n uint256 totalBorrow = (uint256(totalBorrowBase) * borrowIndex) / 1e18;\n \n uint64 utilization = LendingMath.getUtilization(totalSupply, totalBorrow);\n \n // 计算供应利率和借款利率(每秒利率)\n uint64 supplyRate = LendingMath.getSupplyRate(\n utilization,\n supplyKink,\n supplyPerSecondInterestRateSlopeLow,\n supplyPerSecondInterestRateSlopeHigh,\n supplyPerSecondInterestRateBase\n );\n \n uint64 borrowRate = LendingMath.getBorrowRate(\n utilization,\n borrowKink,\n borrowPerSecondInterestRateSlopeLow,\n borrowPerSecondInterestRateSlopeHigh,\n borrowPerSecondInterestRateBase\n );\n \n // 计算新的利息累计因子\n newSupplyIndex = LendingMath.accrueInterest(supplyIndex, supplyRate, timeElapsed);\n newBorrowIndex = LendingMath.accrueInterest(borrowIndex, borrowRate, timeElapsed);\n }\n \n return (newSupplyIndex, newBorrowIndex);\n }\n\n /**\n * @notice 计提利息\n */\n function accrueInterest() public {\n uint256 timeElapsed = block.timestamp - lastAccrualTime;\n if (timeElapsed == 0) return;\n \n // 使用辅助函数计算新索引\n (supplyIndex, borrowIndex) = accruedInterestIndices(timeElapsed);\n \n lastAccrualTime = block.timestamp;\n }\n\n /**\n * @notice 存入基础资产\n */\n function supply(uint256 amount) external override nonReentrant whenNotPaused {\n accrueInterest();\n \n IERC20(baseToken).safeTransferFrom(msg.sender, address(this), amount);\n \n // 获取用户当前本金\n UserBasic memory user = userBasic[msg.sender];\n int104 oldPrincipal = user.principal;\n \n // 计算当前实际余额(含利息)\n uint256 index = oldPrincipal >= 0 ? supplyIndex : borrowIndex;\n int256 oldBalance = LendingMath.principalToBalance(oldPrincipal, index);\n \n // 计算新余额(增加存款)\n int256 newBalance = oldBalance + int256(amount);\n \n // 转换为新本金(可能从借款变为存款)\n uint256 newIndex = newBalance >= 0 ? supplyIndex : borrowIndex;\n int104 newPrincipal = LendingMath.balanceToPrincipal(newBalance, newIndex);\n \n // 根据新旧本金,计算还款和存款金额\n (uint104 repayAmount, uint104 supplyAmount) = LendingMath.repayAndSupplyAmount(oldPrincipal, newPrincipal);\n \n // 更新全局状态\n totalBorrowBase -= repayAmount;\n totalSupplyBase += supplyAmount;\n \n // 更新用户本金\n userBasic[msg.sender].principal = newPrincipal;\n \n emit Supply(msg.sender, msg.sender, amount);\n }\n\n /**\n * @notice 取出基础资产(如果余额不足会自动借款)\n * @dev 如果用户余额不足,会自动借款,借款金额为 amount借款利率为 borrowRate借款期限为 borrowPeriod\n */\n function withdraw(uint256 amount) external override nonReentrant whenNotPaused {\n accrueInterest();\n \n // 获取用户当前本金\n UserBasic memory user = userBasic[msg.sender];\n int104 oldPrincipal = user.principal;\n \n // 计算当前实际余额(含利息)\n uint256 index = oldPrincipal >= 0 ? supplyIndex : borrowIndex;\n int256 oldBalance = LendingMath.principalToBalance(oldPrincipal, index);\n \n // 计算新余额\n int256 newBalance = oldBalance - int256(amount);\n \n // 转换为新本金\n uint256 newIndex = newBalance >= 0 ? supplyIndex : borrowIndex;\n int104 newPrincipal = LendingMath.balanceToPrincipal(newBalance, newIndex);\n \n // 计算提取和借款金额\n (uint104 withdrawAmount, uint104 borrowAmount) = LendingMath.withdrawAndBorrowAmount(oldPrincipal, newPrincipal);\n \n // 更新全局状态\n totalSupplyBase -= withdrawAmount;\n totalBorrowBase += borrowAmount;\n \n // 更新用户本金\n userBasic[msg.sender].principal = newPrincipal;\n \n // 如果变成负余额(借款),检查抵押品\n if (newBalance < 0) {\n if (uint256(-newBalance) < baseBorrowMin) revert BorrowTooSmall();\n if (!_isSolvent(msg.sender)) revert InsufficientCollateral();\n }\n \n IERC20(baseToken).safeTransfer(msg.sender, amount);\n \n emit Withdraw(msg.sender, msg.sender, amount);\n }\n\n /**\n * @notice 存入抵押品\n * @dev 由于不涉及债务计算,存入抵押品反而会让账户更安全,所以不用更新利息因子\n */\n function supplyCollateral(address asset, uint256 amount) external override nonReentrant whenNotPaused {\n AssetConfig memory config = assetConfigs[asset];\n if (config.asset == address(0)) revert Unauthorized();\n \n uint256 newTotal = userCollateral[msg.sender][asset] + amount;\n if (newTotal > config.supplyCap) revert SupplyCapExceeded();\n \n IERC20(asset).safeTransferFrom(msg.sender, address(this), amount);\n \n userCollateral[msg.sender][asset] += amount;\n \n emit SupplyCollateral(msg.sender, msg.sender, asset, amount);\n }\n\n /**\n * @notice 取出抵押品\n */\n function withdrawCollateral(address asset, uint256 amount) external override nonReentrant whenNotPaused {\n accrueInterest();\n \n if (userCollateral[msg.sender][asset] < amount) revert InsufficientBalance();\n \n userCollateral[msg.sender][asset] -= amount;\n \n // 检查是否仍有足够的抵押品(如果有债务)\n int104 principal = userBasic[msg.sender].principal;\n if (principal < 0) {\n if (!_isSolvent(msg.sender)) revert InsufficientCollateral();\n }\n \n IERC20(asset).safeTransfer(msg.sender, amount);\n \n emit WithdrawCollateral(msg.sender, msg.sender, asset, amount);\n }\n\n /**\n * @notice 借款\n * @dev baseBorrowMin 是用户借款的最小金额,如果用户借款后,余额小于 baseBorrowMin由正数变为负数同理则抛出 BorrowTooSmall 错误\n */\n function borrow(uint256 amount) external override nonReentrant whenNotPaused {\n accrueInterest();\n \n // 获取用户当前本金\n UserBasic memory user = userBasic[msg.sender];\n int104 oldPrincipal = user.principal;\n \n // 计算当前实际余额(含利息)\n uint256 index = oldPrincipal >= 0 ? supplyIndex : borrowIndex;\n int256 oldBalance = LendingMath.principalToBalance(oldPrincipal, index);\n \n // 计算新余额(减去借款额)\n int256 newBalance = oldBalance - int256(amount);\n \n // 检查最小借款额\n if (newBalance < 0 && uint256(-newBalance) < baseBorrowMin) revert BorrowTooSmall();\n \n // 转换为新本金(新状态可能从存款变为借款)\n uint256 newIndex = newBalance >= 0 ? supplyIndex : borrowIndex;\n int104 newPrincipal = LendingMath.balanceToPrincipal(newBalance, newIndex);\n \n // 计算提取和借款金额\n (uint104 withdrawAmount, uint104 borrowAmount) = LendingMath.withdrawAndBorrowAmount(oldPrincipal, newPrincipal);\n \n // 更新全局状态\n totalSupplyBase -= withdrawAmount;\n totalBorrowBase += borrowAmount;\n \n // 更新用户本金,方便检查更新后的用户本金是否大于还是小于抵押品价值\n userBasic[msg.sender].principal = newPrincipal;\n \n // 检查抵押品是否充足 \n if (!_isSolvent(msg.sender)) revert InsufficientCollateral();\n \n IERC20(baseToken).safeTransfer(msg.sender, amount);\n \n emit Withdraw(msg.sender, msg.sender, amount);\n }\n\n /**\n * @notice 清算不良债务(内部实现)\n * @dev 当用户抵押品由于乘以liquidateCollateralFactor后小于债务价值时会进行清算清算后如果实际抵押品价值乘以liquidateCollateralFactor大于债务价值则将差额部分作为用户本金本金以baseToken显示否则将差额部分作为坏账由协议承担\n */\n function _absorbInternal(address absorber, address borrower) internal {\n if (!isLiquidatable(borrower)) revert NotLiquidatable();\n \n // 获取用户当前本金\n UserBasic memory user = userBasic[borrower];\n int104 oldPrincipal = user.principal;\n \n // 计算当前实际余额(含利息累计的债务)\n int256 oldBalance = LendingMath.principalToBalance(oldPrincipal, borrowIndex);\n if (oldBalance >= 0) revert NotLiquidatable();\n \n // 计算所有抵押品的总价值(按 liquidationFactor 折扣)\n uint256 basePrice = IPriceFeed(baseTokenPriceFeed).getPrice();\n uint256 totalCollateralValue = 0;\n \n for (uint i = 0; i < assetList.length; i++) {\n address asset = assetList[i];\n uint256 collateralAmount = userCollateral[borrower][asset];\n \n if (collateralAmount > 0) {\n AssetConfig memory assetConfig = assetConfigs[asset];\n uint256 assetPrice = IPriceFeed(assetConfig.priceFeed).getPrice();\n \n // 计算抵押品价值USD8位精度\n uint256 assetScale = 10 ** assetConfig.decimals;\n uint256 collateralValueUSD = (collateralAmount * assetPrice) / assetScale;\n \n // 应用 liquidationFactor 折扣\n uint256 discountedValue = (collateralValueUSD * assetConfig.liquidationFactor) / 1e18;\n totalCollateralValue += discountedValue;\n \n // 将抵押品转移到清算库存\n userCollateral[borrower][asset] = 0;\n collateralReserves[asset] += collateralAmount;\n \n // 发射抵押品吸收事件\n emit AbsorbCollateral(absorber, borrower, asset, collateralAmount, collateralValueUSD);\n }\n }\n \n // 将抵押品价值转换为 baseToken 数量\n uint256 baseScale = 10 ** IERC20Metadata(baseToken).decimals();\n uint256 collateralInBase = (totalCollateralValue * baseScale) / basePrice;\n \n // 计算新余额oldBalance负数+ 抵押品价值\n int256 newBalance = oldBalance + int256(collateralInBase);\n \n // 如果新余额仍为负,强制归零(坏账由协议承担)\n if (newBalance < 0) {\n newBalance = 0;\n }\n \n // 转换为新本金\n int104 newPrincipal = LendingMath.balanceToPrincipal(newBalance, supplyIndex);\n \n // 更新用户本金\n userBasic[borrower].principal = newPrincipal;\n \n // 计算偿还和供应金额\n (uint104 repayAmount, uint104 supplyAmount) = LendingMath.repayAndSupplyAmount(oldPrincipal, newPrincipal);\n \n // 更新全局状态(储备金通过减少 totalBorrowBase 和增加 totalSupplyBase 来承担坏账)\n totalSupplyBase += supplyAmount;\n totalBorrowBase -= repayAmount;\n \n // 计算协议承担的坏账部分\n // 坏账 = 用户债务 - 抵押品价值(当抵押品不足时)\n uint256 basePaidOut = 0;\n if (int256(collateralInBase) < -oldBalance) {\n // 抵押品不足以覆盖债务,差额由协议储备金承担\n basePaidOut = uint256(-oldBalance) - collateralInBase;\n }\n // 如果 collateralInBase >= -oldBalance说明抵押品足够无坏账\n \n uint256 valueOfBasePaidOut = (basePaidOut * basePrice) / baseScale;\n \n // 发射债务吸收事件\n emit AbsorbDebt(absorber, borrower, basePaidOut, valueOfBasePaidOut);\n }\n \n /**\n * @notice 清算不良债务(单个)\n */\n function absorb(address borrower) external override nonReentrant whenNotPaused {\n accrueInterest();\n _absorbInternal(msg.sender, borrower);\n }\n \n /**\n * @notice 批量清算不良债务\n */\n function absorbMultiple(address absorber, address[] calldata accounts) external override nonReentrant whenNotPaused {\n accrueInterest();\n for (uint i = 0; i < accounts.length; ) {\n _absorbInternal(absorber, accounts[i]);\n unchecked { i++; }\n }\n }\n\n /**\n * @notice 购买清算后的抵押品\n */\n function buyCollateral(\n address asset,\n uint256 minAmount,\n uint256 baseAmount,\n address recipient\n ) external override nonReentrant whenNotPaused {\n if (collateralReserves[asset] == 0) revert InsufficientBalance();\n \n // 检查储备金是否充足(使用实时计算的储备金)\n int256 currentReserves = getReserves();\n if (currentReserves >= 0 && uint256(currentReserves) >= targetReserves) {\n revert NotForSale(); // 储备金充足,无需出售\n }\n \n // 计算可购买的抵押品数量\n uint256 collateralAmount = quoteCollateral(asset, baseAmount);\n \n // 验证数量\n if (collateralAmount < minAmount) revert InsufficientBalance();\n if (collateralAmount > collateralReserves[asset]) revert InsufficientBalance();\n \n // 收取清算人支付的资金\n IERC20(baseToken).safeTransferFrom(msg.sender, address(this), baseAmount);\n \n // 抵押品出库\n collateralReserves[asset] -= collateralAmount;\n \n // 转账抵押品到指定接收人\n IERC20(asset).safeTransfer(recipient, collateralAmount);\n \n // 注意:收入会自动体现在 getReserves() 中,因为 balance 增加了\n emit BuyCollateral(msg.sender, asset, baseAmount, collateralAmount);\n }\n \n /**\n * @notice 计算支付指定baseAmount可购买的抵押品数量\n */\n function quoteCollateral(address asset, uint256 baseAmount) public view override returns (uint256) {\n AssetConfig memory assetConfig = assetConfigs[asset];\n \n uint256 assetPrice = IPriceFeed(assetConfig.priceFeed).getPrice();\n uint256 basePrice = IPriceFeed(baseTokenPriceFeed).getPrice();\n \n // 计算折扣率\n // discountFactor = storeFrontPriceFactor * (FACTOR_SCALE - liquidationFactor) / FACTOR_SCALE\n uint256 FACTOR_SCALE = 1e18;\n uint256 discountFactor = (storeFrontPriceFactor * (FACTOR_SCALE - assetConfig.liquidationFactor)) / FACTOR_SCALE;\n \n // 计算折扣后的资产价格\n // assetPriceDiscounted = assetPrice * (FACTOR_SCALE - discountFactor) / FACTOR_SCALE\n uint256 assetPriceDiscounted = (assetPrice * (FACTOR_SCALE - discountFactor)) / FACTOR_SCALE;\n \n // 计算可购买的抵押品数量\n // 公式:(basePrice * baseAmount * assetScale) / (assetPriceDiscounted * baseScale)\n uint256 baseScale = 10 ** uint256(IERC20Metadata(baseToken).decimals());\n uint256 assetScale = 10 ** uint256(assetConfig.decimals);\n \n // 使用中间变量分步计算,避免潜在的溢出\n // 先计算分子和分母,再进行除法\n return (basePrice * baseAmount * assetScale) / (assetPriceDiscounted * baseScale);\n }\n\n /**\n * @notice 检查账户偿付能力\n */\n function _isSolvent(address account) internal view returns (bool) {\n int104 principal = userBasic[account].principal;\n if (principal >= 0) return true;\n \n // 计算实际债务(含利息)- 使用 borrowIndex\n int256 balance = LendingMath.principalToBalance(principal, borrowIndex);\n uint256 debt = uint256(-balance);\n \n // 将 debt 转换为美元价值(使用 baseToken 价格)\n uint256 basePrice = IPriceFeed(baseTokenPriceFeed).getPrice();\n uint256 baseDecimals = IERC20Metadata(baseToken).decimals();\n uint256 debtValue = (debt * basePrice) / (10 ** baseDecimals);\n \n // 计算借款能力(抵押品价值已经在 _getCollateralValue 中应用了借款系数)\n uint256 borrowCapacity = _getCollateralValue(account);\n \n // 比较:借款能力 >= 债务价值\n return borrowCapacity >= debtValue;\n }\n\n /**\n * @notice 计算账户抵押品总价值\n */\n function _getCollateralValue(address account) internal view returns (uint256) {\n uint256 totalValue = 0;\n \n for (uint i = 0; i < assetList.length; i++) {\n address asset = assetList[i];\n uint256 amount = userCollateral[account][asset];\n if (amount > 0) {\n AssetConfig memory config = assetConfigs[asset];\n uint256 price = IPriceFeed(config.priceFeed).getPrice();\n uint256 value = LendingMath.getCollateralValue(amount, price, config.decimals);\n totalValue += (value * config.borrowCollateralFactor) / 1e18;\n }\n }\n \n return totalValue;\n }\n\n // ========== View Functions ==========\n\n function getBalance(address account) external view override returns (int256) {\n int104 principal = userBasic[account].principal;\n // 使用 supplyIndex 计算实际余额(含利息)\n return LendingMath.principalToBalance(principal, supplyIndex);\n }\n \n function supplyBalanceOf(address account) external view override returns (uint256) {\n int104 principal = userBasic[account].principal;\n if (principal <= 0) return 0;\n // 只返回正余额(存款)\n return uint256(LendingMath.principalToBalance(principal, supplyIndex));\n }\n \n function borrowBalanceOf(address account) external view override returns (uint256) {\n int104 principal = userBasic[account].principal;\n if (principal >= 0) return 0;\n // 只返回负余额(借款),转为正数\n int256 balance = LendingMath.principalToBalance(principal, borrowIndex);\n return uint256(-balance);\n }\n\n function getCollateral(address account, address asset) external view override returns (uint256) {\n return userCollateral[account][asset];\n }\n\n function isLiquidatable(address account) public view override returns (bool) {\n int104 principal = userBasic[account].principal;\n if (principal >= 0) return false;\n \n // 计算实际债务(含利息)\n int256 balance = LendingMath.principalToBalance(principal, borrowIndex);\n uint256 debt = uint256(-balance);\n \n // 将 debt 转换为美元价值(使用 baseToken 价格和 price feed 精度)\n uint256 basePrice = IPriceFeed(baseTokenPriceFeed).getPrice();\n uint256 baseDecimals = IERC20Metadata(baseToken).decimals();\n uint256 debtValue = (debt * basePrice) / (10 ** baseDecimals);\n \n // 计算抵押品总价值(清算阈值)\n uint256 collateralValue = 0;\n for (uint i = 0; i < assetList.length; i++) {\n address asset = assetList[i];\n uint256 amount = userCollateral[account][asset];\n if (amount > 0) {\n AssetConfig memory config = assetConfigs[asset];\n uint256 price = IPriceFeed(config.priceFeed).getPrice();\n uint256 value = LendingMath.getCollateralValue(amount, price, config.decimals);\n collateralValue += (value * config.liquidateCollateralFactor) / 1e18;\n }\n }\n \n // 比较:债务价值 > 抵押品清算阈值价值\n return debtValue > collateralValue;\n }\n\n function getTotalSupply() external view returns (uint256) {\n return (uint256(totalSupplyBase) * supplyIndex) / 1e18;\n }\n \n function getTotalBorrow() external view returns (uint256) {\n return (uint256(totalBorrowBase) * borrowIndex) / 1e18;\n }\n \n function getCollateralReserves(address asset) external view override returns (uint256) {\n return collateralReserves[asset];\n }\n \n function getReserves() public view override returns (int256) {\n // 计算最新的利息索引(不修改状态)\n uint256 timeElapsed = block.timestamp - lastAccrualTime;\n (uint256 newSupplyIndex, uint256 newBorrowIndex) = accruedInterestIndices(timeElapsed);\n \n // 使用最新索引计算实际总供应和总借款(含利息)\n uint256 balance = IERC20(baseToken).balanceOf(address(this));\n uint256 totalSupply = (uint256(totalSupplyBase) * newSupplyIndex) / 1e18;\n uint256 totalBorrow = (uint256(totalBorrowBase) * newBorrowIndex) / 1e18;\n \n // reserves = balance - totalSupply + totalBorrow\n return int256(balance) - int256(totalSupply) + int256(totalBorrow);\n }\n \n function getUtilization() external view override returns (uint256) {\n uint256 totalSupply = (uint256(totalSupplyBase) * supplyIndex) / 1e18;\n uint256 totalBorrow = (uint256(totalBorrowBase) * borrowIndex) / 1e18;\n return LendingMath.getUtilization(totalSupply, totalBorrow);\n }\n \n function getSupplyRate() external view override returns (uint64) {\n uint256 totalSupply = (uint256(totalSupplyBase) * supplyIndex) / 1e18;\n uint256 totalBorrow = (uint256(totalBorrowBase) * borrowIndex) / 1e18;\n uint64 utilization = LendingMath.getUtilization(totalSupply, totalBorrow);\n uint64 perSecondRate = LendingMath.getSupplyRate(\n utilization,\n supplyKink,\n supplyPerSecondInterestRateSlopeLow,\n supplyPerSecondInterestRateSlopeHigh,\n supplyPerSecondInterestRateBase\n );\n // 转换为年化利率APY\n return perSecondRate * 31536000; // SECONDS_PER_YEAR\n }\n\n function getBorrowRate() external view override returns (uint64) {\n uint256 totalSupply = (uint256(totalSupplyBase) * supplyIndex) / 1e18;\n uint256 totalBorrow = (uint256(totalBorrowBase) * borrowIndex) / 1e18;\n uint64 utilization = LendingMath.getUtilization(totalSupply, totalBorrow);\n uint64 perSecondRate = LendingMath.getBorrowRate(\n utilization,\n borrowKink,\n borrowPerSecondInterestRateSlopeLow,\n borrowPerSecondInterestRateSlopeHigh,\n borrowPerSecondInterestRateBase\n );\n // 转换为年化利率APY\n return perSecondRate * 31536000; // SECONDS_PER_YEAR\n }\n\n /**\n * @notice 提取协议储备金(仅 owner\n */\n function withdrawReserves(address to, uint256 amount) external override onlyOwner nonReentrant {\n // 使用实时计算的储备金\n int256 currentReserves = getReserves();\n \n // 检查储备金是否充足\n if (currentReserves < 0 || amount > uint256(currentReserves)) {\n revert InsufficientReserves();\n }\n \n // 转账储备金\n IERC20(baseToken).safeTransfer(to, amount);\n \n emit WithdrawReserves(to, amount);\n }\n}\n\n"},"contracts/ytLending/LendingConfiguration.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/**\n * @title LendingConfiguration\n * @notice 借贷池配置结构体定义\n */\ncontract LendingConfiguration {\n struct AssetConfig {\n address asset; // 资产地址\n address priceFeed; // 价格预言机地址\n uint8 decimals; // 小数位数\n uint64 borrowCollateralFactor; // 借款抵押率\n uint64 liquidateCollateralFactor; // 清算抵押率\n uint64 liquidationFactor; // 清算折扣\n uint128 supplyCap; // 供应上限\n }\n\n struct Configuration {\n address baseToken; // 基础资产\n address baseTokenPriceFeed; // 基础资产价格预言机\n \n // 利率模型参数\n uint64 supplyKink; // 供应拐点利用率\n uint64 supplyPerYearInterestRateSlopeLow; // 供应拐点前斜率\n uint64 supplyPerYearInterestRateSlopeHigh; // 供应拐点后斜率\n uint64 supplyPerYearInterestRateBase; // 供应基础利率\n \n uint64 borrowKink; // 借款拐点利用率\n uint64 borrowPerYearInterestRateSlopeLow; // 借款拐点前斜率\n uint64 borrowPerYearInterestRateSlopeHigh; // 借款拐点后斜率\n uint64 borrowPerYearInterestRateBase; // 借款基础利率\n \n // 其他核心参数\n uint64 storeFrontPriceFactor; // 清算价格折扣\n uint64 trackingIndexScale; // 追踪索引比例\n uint104 baseBorrowMin; // 最小借款额\n uint104 targetReserves; // 目标储备金\n \n AssetConfig[] assetConfigs; // 抵押资产配置数组\n }\n}\n\n"},"contracts/ytLending/LendingFactory.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"./Lending.sol\";\nimport \"./LendingConfiguration.sol\";\n\ncontract LendingFactory is LendingConfiguration, Ownable {\n\n constructor() Ownable(msg.sender) {}\n \n event LendingDeployed(address indexed lending);\n \n /**\n * @notice 部署新的 Lending 实现合约\n * @return 新 Lending 合约地址\n */\n function deploy() external onlyOwner returns (address) {\n Lending lending = new Lending();\n emit LendingDeployed(address(lending));\n return address(lending);\n }\n}\n\n"},"contracts/ytLending/LendingMath.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/**\n * @title LendingMath\n * @notice 借贷池数学计算库\n */\nlibrary LendingMath {\n uint256 internal constant FACTOR_SCALE = 1e18;\n uint256 internal constant PRICE_SCALE = 1e8;\n uint256 internal constant SECONDS_PER_YEAR = 365 * 24 * 60 * 60;\n\n /**\n * @notice 将本金转换为实际余额(含利息)\n * @param principal 本金(正数或负数)\n * @param index 利息索引\n * @return 实际余额\n */\n function principalToBalance(int104 principal, uint256 index) internal pure returns (int256) {\n return int256(principal) * int256(index) / int256(FACTOR_SCALE);\n }\n \n /**\n * @notice 将实际余额转换为本金\n * @param balance 实际余额(正数或负数)\n * @param index 利息索引\n * @return 本金\n */\n function balanceToPrincipal(int256 balance, uint256 index) internal pure returns (int104) {\n return int104((balance * int256(FACTOR_SCALE)) / int256(index));\n }\n \n /**\n * @notice 计算供应方本金变化和借款方本金变化\n * @dev 用于 absorb 时计算账户状态变化\n */\n function repayAndSupplyAmount(int104 oldPrincipal, int104 newPrincipal) internal pure returns (uint104, uint104) {\n // 如果新本金小于旧本金,没有偿还或供应\n if (newPrincipal < oldPrincipal) return (0, 0);\n \n if (newPrincipal <= 0) {\n // 从负数变得更接近0偿还债务\n return (uint104(newPrincipal - oldPrincipal), 0);\n } else if (oldPrincipal >= 0) {\n // 两个都是正数(增加存款)\n return (0, uint104(newPrincipal - oldPrincipal));\n } else {\n // 从负数变正数(偿还所有债务并存款)\n return (uint104(-oldPrincipal), uint104(newPrincipal));\n }\n }\n \n /**\n * @notice 计算提取金额和借款金额\n * @dev 用于 withdraw/borrow 时计算账户状态变化\n */\n function withdrawAndBorrowAmount(int104 oldPrincipal, int104 newPrincipal) internal pure returns (uint104, uint104) {\n // 如果新本金大于旧本金,没有提取或借款\n if (newPrincipal > oldPrincipal) return (0, 0);\n \n if (newPrincipal >= 0) {\n // 还是正数(提取存款)\n return (uint104(oldPrincipal - newPrincipal), 0);\n } else if (oldPrincipal <= 0) {\n // 两个都是负数(增加借款)\n return (0, uint104(oldPrincipal - newPrincipal));\n } else {\n // 从正数变负数(提取所有存款并借款)\n return (uint104(oldPrincipal), uint104(-newPrincipal));\n }\n }\n\n /**\n * @notice 计算利用率\n * @param totalSupply 总供应量\n * @param totalBorrow 总借款量\n * @return 利用率 (scaled by 1e18)\n */\n function getUtilization(uint256 totalSupply, uint256 totalBorrow) internal pure returns (uint64) {\n if (totalSupply == 0) return 0;\n return uint64((totalBorrow * FACTOR_SCALE) / totalSupply);\n }\n\n /**\n * @notice 计算供应利率(每秒利率)\n */\n function getSupplyRate(\n uint256 utilization,\n uint64 supplyKink,\n uint64 supplyPerSecondInterestRateSlopeLow,\n uint64 supplyPerSecondInterestRateSlopeHigh,\n uint64 supplyPerSecondInterestRateBase\n ) internal pure returns (uint64) {\n if (utilization <= supplyKink) {\n return supplyPerSecondInterestRateBase + uint64((utilization * supplyPerSecondInterestRateSlopeLow) / FACTOR_SCALE);\n } else {\n uint256 excessUtil = utilization - supplyKink;\n return supplyPerSecondInterestRateBase + supplyPerSecondInterestRateSlopeLow + \n uint64((excessUtil * supplyPerSecondInterestRateSlopeHigh) / FACTOR_SCALE);\n }\n }\n\n /**\n * @notice 计算借款利率(每秒利率)\n */\n function getBorrowRate(\n uint256 utilization,\n uint64 borrowKink,\n uint64 borrowPerSecondInterestRateSlopeLow,\n uint64 borrowPerSecondInterestRateSlopeHigh,\n uint64 borrowPerSecondInterestRateBase\n ) internal pure returns (uint64) {\n if (utilization <= borrowKink) {\n return borrowPerSecondInterestRateBase + uint64((utilization * borrowPerSecondInterestRateSlopeLow) / FACTOR_SCALE);\n } else {\n uint256 excessUtil = utilization - borrowKink;\n return borrowPerSecondInterestRateBase + borrowPerSecondInterestRateSlopeLow + \n uint64((excessUtil * borrowPerSecondInterestRateSlopeHigh) / FACTOR_SCALE);\n }\n }\n\n /**\n * @notice 计算复利后的利息累计因子\n * @param index 当前利息累计因子\n * @param interestRatePerSecond 每秒利率\n * @param timeElapsed 经过的秒数\n * @return 新的利息累计因子\n */\n function accrueInterest(\n uint256 index,\n uint64 interestRatePerSecond,\n uint256 timeElapsed\n ) internal pure returns (uint256) {\n // 优化:每秒利率直接乘以时间,只需一次除法\n uint256 interestAccrued = (index * interestRatePerSecond * timeElapsed) / FACTOR_SCALE;\n return index + interestAccrued;\n }\n\n /**\n * @notice 计算抵押品价值\n */\n function getCollateralValue(\n uint256 collateralAmount,\n uint256 collateralPrice,\n uint8 collateralDecimals\n ) internal pure returns (uint256) {\n return (collateralAmount * collateralPrice) / (10 ** collateralDecimals);\n }\n\n /**\n * @notice 计算借款能力\n */\n function getBorrowCapacity(\n uint256 collateralValue,\n uint64 borrowCollateralFactor\n ) internal pure returns (uint256) {\n return (collateralValue * borrowCollateralFactor) / FACTOR_SCALE;\n }\n}\n\n"},"contracts/ytLending/LendingStorage.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"./LendingConfiguration.sol\";\n\n/**\n * @title LendingStorage\n * @notice 借贷池存储变量定义\n */\nabstract contract LendingStorage is LendingConfiguration {\n \n // 市场配置\n address public baseToken;\n address public baseTokenPriceFeed;\n \n // 利率参数(每秒利率,已从年化利率转换)\n uint64 public supplyKink;\n uint64 public supplyPerSecondInterestRateSlopeLow;\n uint64 public supplyPerSecondInterestRateSlopeHigh;\n uint64 public supplyPerSecondInterestRateBase;\n \n uint64 public borrowKink;\n uint64 public borrowPerSecondInterestRateSlopeLow;\n uint64 public borrowPerSecondInterestRateSlopeHigh;\n uint64 public borrowPerSecondInterestRateBase;\n \n // 清算参数\n uint64 public storeFrontPriceFactor;\n uint64 public trackingIndexScale;\n uint104 public baseBorrowMin;\n uint104 public targetReserves;\n \n // 资产映射\n mapping(address => AssetConfig) public assetConfigs;\n address[] public assetList;\n \n // 用户账户信息\n struct UserBasic {\n int104 principal; // 本金(正数=存款本金,负数=借款本金)\n }\n mapping(address => UserBasic) public userBasic;\n \n // 用户抵押品余额\n mapping(address => mapping(address => uint256)) public userCollateral;\n \n // 总存款本金和总借款本金\n uint104 public totalSupplyBase;\n uint104 public totalBorrowBase;\n \n // 利息索引\n uint256 public supplyIndex;\n uint256 public borrowIndex;\n uint256 public lastAccrualTime;\n \n // 清算后的抵押品库存(不同于 reserves\n // reserves 通过公式动态计算balance - totalSupply + totalBorrow\n mapping(address => uint256) public collateralReserves;\n}\n\n"},"contracts/ytLp/core/YTPoolManager.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport \"../../interfaces/IYTVault.sol\";\nimport \"../../interfaces/IYTLPToken.sol\";\nimport \"../../interfaces/IUSDY.sol\";\n\n/**\n * @title YTPoolManager\n * @notice 管理ytLP的铸造和赎回计算池子AUM\n * @dev UUPS可升级合约\n */\ncontract YTPoolManager is Initializable, UUPSUpgradeable, ReentrancyGuardUpgradeable {\n using SafeERC20 for IERC20;\n \n error Forbidden();\n error InvalidAddress();\n error InvalidDuration();\n error PrivateMode();\n error InvalidAmount();\n error InsufficientOutput();\n error CooldownNotPassed();\n \n uint256 public constant PRICE_PRECISION = 10 ** 30;\n uint256 public constant YTLP_PRECISION = 10 ** 18;\n uint256 public constant BASIS_POINTS_DIVISOR = 10000;\n uint256 public constant MAX_COOLDOWN_DURATION = 48 hours;\n \n address public gov;\n address public ytVault;\n address public usdy;\n address public ytLP;\n \n uint256 public cooldownDuration;\n mapping(address => uint256) public lastAddedAt;\n\n mapping(address => bool) public isHandler;\n \n uint256 public aumAddition;\n uint256 public aumDeduction;\n \n event AddLiquidity(\n address indexed account,\n address indexed token,\n uint256 amount,\n uint256 aumInUsdy,\n uint256 ytLPSupply,\n uint256 usdyAmount,\n uint256 mintAmount\n );\n event RemoveLiquidity(\n address indexed account,\n address indexed token,\n uint256 ytLPAmount,\n uint256 aumInUsdy,\n uint256 ytLPSupply,\n uint256 usdyAmount,\n uint256 amountOut\n );\n event CooldownDurationSet(uint256 duration);\n event HandlerSet(address indexed handler, bool isActive);\n \n modifier onlyGov() {\n if (msg.sender != gov) revert Forbidden();\n _;\n }\n \n modifier onlyHandler() {\n if (!isHandler[msg.sender] && msg.sender != gov) revert Forbidden();\n _;\n }\n \n /**\n * @notice 初始化合约\n * @param _ytVault YTVault合约地址\n * @param _usdy USDY代币地址\n * @param _ytLP ytLP代币地址\n * @param _cooldownDuration 冷却时间(秒)\n */\n function initialize(\n address _ytVault,\n address _usdy,\n address _ytLP,\n uint256 _cooldownDuration\n ) external initializer {\n if (_ytVault == address(0) || _usdy == address(0) || _ytLP == address(0)) revert InvalidAddress();\n if (_cooldownDuration > MAX_COOLDOWN_DURATION) revert InvalidDuration();\n \n __ReentrancyGuard_init();\n __UUPSUpgradeable_init();\n \n gov = msg.sender;\n ytVault = _ytVault;\n usdy = _usdy;\n ytLP = _ytLP;\n cooldownDuration = _cooldownDuration;\n }\n \n /**\n * @notice 授权升级仅gov可调用\n * @param newImplementation 新实现合约地址\n */\n function _authorizeUpgrade(address newImplementation) internal override onlyGov {}\n \n function setGov(address _gov) external onlyGov {\n if (_gov == address(0)) revert InvalidAddress();\n gov = _gov;\n }\n \n function setHandler(address _handler, bool _isActive) external onlyGov {\n isHandler[_handler] = _isActive;\n emit HandlerSet(_handler, _isActive);\n }\n \n function setCooldownDuration(uint256 _duration) external onlyGov {\n if (_duration > MAX_COOLDOWN_DURATION) revert InvalidDuration();\n cooldownDuration = _duration;\n emit CooldownDurationSet(_duration);\n }\n \n function setAumAdjustment(uint256 _addition, uint256 _deduction) external onlyGov {\n aumAddition = _addition;\n aumDeduction = _deduction;\n }\n \n /**\n * @notice 为指定账户添加流动性Handler调用\n */\n function addLiquidityForAccount(\n address _fundingAccount,\n address _account,\n address _token,\n uint256 _amount,\n uint256 _minUsdy,\n uint256 _minYtLP\n ) external onlyHandler nonReentrant returns (uint256) {\n return _addLiquidity(_fundingAccount, _account, _token, _amount, _minUsdy, _minYtLP);\n }\n \n function _addLiquidity(\n address _fundingAccount,\n address _account,\n address _token,\n uint256 _amount,\n uint256 _minUsdy,\n uint256 _minYtLP\n ) private returns (uint256) {\n if (_amount == 0) revert InvalidAmount();\n \n uint256 aumInUsdy = getAumInUsdy(true);\n uint256 ytLPSupply = IERC20(ytLP).totalSupply();\n \n IERC20(_token).safeTransferFrom(_fundingAccount, ytVault, _amount);\n uint256 usdyAmount = IYTVault(ytVault).buyUSDY(_token, address(this));\n if (usdyAmount < _minUsdy) revert InsufficientOutput();\n \n uint256 mintAmount;\n if (ytLPSupply == 0) {\n mintAmount = usdyAmount;\n } else {\n mintAmount = usdyAmount * ytLPSupply / aumInUsdy;\n }\n \n if (mintAmount < _minYtLP) revert InsufficientOutput();\n \n IYTLPToken(ytLP).mint(_account, mintAmount);\n lastAddedAt[_account] = block.timestamp;\n \n emit AddLiquidity(_account, _token, _amount, aumInUsdy, ytLPSupply, usdyAmount, mintAmount);\n \n return mintAmount;\n }\n \n /**\n * @notice 为指定账户移除流动性Handler调用\n */\n function removeLiquidityForAccount(\n address _account,\n address _tokenOut,\n uint256 _ytLPAmount,\n uint256 _minOut,\n address _receiver\n ) external onlyHandler nonReentrant returns (uint256) {\n return _removeLiquidity(_account, _tokenOut, _ytLPAmount, _minOut, _receiver);\n }\n \n function _removeLiquidity(\n address _account,\n address _tokenOut,\n uint256 _ytLPAmount,\n uint256 _minOut,\n address _receiver\n ) private returns (uint256) {\n if (_ytLPAmount == 0) revert InvalidAmount();\n \n if (lastAddedAt[_account] + cooldownDuration > block.timestamp) revert CooldownNotPassed();\n \n uint256 aumInUsdy = getAumInUsdy(false);\n uint256 ytLPSupply = IERC20(ytLP).totalSupply();\n \n uint256 usdyAmount = _ytLPAmount * aumInUsdy / ytLPSupply;\n \n // 先销毁ytLP\n IYTLPToken(ytLP).burn(_account, _ytLPAmount);\n \n // 检查余额,只铸造差额部分\n uint256 usdyBalance = IERC20(usdy).balanceOf(address(this));\n if (usdyAmount > usdyBalance) {\n IUSDY(usdy).mint(address(this), usdyAmount - usdyBalance);\n }\n \n // 转账USDY到Vault并换回代币\n IERC20(usdy).safeTransfer(ytVault, usdyAmount);\n uint256 amountOut = IYTVault(ytVault).sellUSDY(_tokenOut, _receiver);\n \n if (amountOut < _minOut) revert InsufficientOutput();\n \n emit RemoveLiquidity(_account, _tokenOut, _ytLPAmount, aumInUsdy, ytLPSupply, usdyAmount, amountOut);\n \n return amountOut;\n }\n \n /**\n * @notice 获取ytLP价格\n * @param _maximise 是否取最大值\n * @return ytLP价格18位精度\n */\n function getPrice(bool _maximise) external view returns (uint256) {\n uint256 aum = getAumInUsdy(_maximise);\n uint256 supply = IERC20(ytLP).totalSupply();\n \n if (supply == 0) return YTLP_PRECISION;\n \n return aum * YTLP_PRECISION / supply;\n }\n \n /**\n * @notice 获取池子总价值AUM\n * @param _maximise true=使用最大价格(添加流动性时), false=使用最小价格(移除流动性时)\n * @return USDY计价的总价值\n */\n function getAumInUsdy(bool _maximise) public view returns (uint256) {\n uint256 aum = IYTVault(ytVault).getPoolValue(_maximise);\n \n aum += aumAddition;\n if (aum > aumDeduction) {\n aum -= aumDeduction;\n } else {\n aum = 0;\n }\n \n return aum;\n }\n \n /**\n * @dev 预留存储空间,用于未来升级时添加新的状态变量\n * 50个slot = 50 * 32 bytes = 1600 bytes\n */\n uint256[50] private __gap;\n}\n\n"},"contracts/ytLp/core/YTPriceFeed.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\nimport \"../../interfaces/IYTToken.sol\";\n\n/**\n * @title YTPriceFeed\n * @notice 价格读取器直接从YT合约读取价格变量带保护机制和价差\n * @dev UUPS可升级合约\n */\ncontract YTPriceFeed is Initializable, UUPSUpgradeable {\n\n error Forbidden();\n error MaxChangeTooHigh();\n error PriceChangeTooLarge();\n error SpreadTooHigh();\n error InvalidAddress();\n \n address public gov;\n \n uint256 public constant PRICE_PRECISION = 10 ** 30;\n uint256 public constant BASIS_POINTS_DIVISOR = 10000;\n uint256 public constant MAX_SPREAD_BASIS_POINTS = 200; // 最大2%价差\n \n // WUSD固定价格\n address public wusdAddress;\n \n // WUSD价格来源\n address public wusdPriceSource;\n \n // 价格保护参数\n uint256 public maxPriceChangeBps; // 5% 最大价格变动\n \n // 价差配置(每个代币可以有不同的价差)\n mapping(address => uint256) public spreadBasisPoints;\n \n // 价格历史记录\n mapping(address => uint256) public lastPrice;\n \n // 价格更新权限\n mapping(address => bool) public isKeeper;\n \n event PriceUpdate(address indexed token, uint256 oldPrice, uint256 newPrice, uint256 timestamp);\n event SpreadUpdate(address indexed token, uint256 spreadBps);\n event KeeperSet(address indexed keeper, bool isActive);\n \n modifier onlyGov() {\n if (msg.sender != gov) revert Forbidden();\n _;\n }\n \n modifier onlyKeeper() {\n if (!isKeeper[msg.sender] && msg.sender != gov) revert Forbidden();\n _;\n }\n \n /**\n * @notice 初始化合约\n */\n function initialize(address _wusdAddress) external initializer {\n __UUPSUpgradeable_init();\n if (_wusdAddress == address(0)) revert InvalidAddress();\n wusdAddress = _wusdAddress;\n gov = msg.sender;\n maxPriceChangeBps = 500; // 5% 最大价格变动\n }\n \n /**\n * @notice 授权升级仅gov可调用\n * @param newImplementation 新实现合约地址\n */\n function _authorizeUpgrade(address newImplementation) internal override onlyGov {}\n \n /**\n * @notice 设置WUSD价格来源YTAssetVault地址\n * @param _wusdPriceSource YTAssetVault合约地址\n */\n function setWusdPriceSource(address _wusdPriceSource) external onlyGov {\n wusdPriceSource = _wusdPriceSource;\n }\n \n /**\n * @notice 设置keeper权限\n * @param _keeper keeper地址\n * @param _isActive 是否激活\n */\n function setKeeper(address _keeper, bool _isActive) external onlyGov {\n isKeeper[_keeper] = _isActive;\n emit KeeperSet(_keeper, _isActive);\n }\n \n /**\n * @notice 设置最大价格变动百分比\n * @param _maxPriceChangeBps 最大变动(基点)\n */\n function setMaxPriceChangeBps(uint256 _maxPriceChangeBps) external onlyGov {\n if (_maxPriceChangeBps > 2000) revert MaxChangeTooHigh(); // 最大20%\n maxPriceChangeBps = _maxPriceChangeBps;\n }\n \n /**\n * @notice 设置代币价差\n * @param _token 代币地址\n * @param _spreadBasisPoints 价差基点例如10 = 0.1%, 100 = 1%\n */\n function setSpreadBasisPoints(address _token, uint256 _spreadBasisPoints) external onlyGov {\n if (_spreadBasisPoints > MAX_SPREAD_BASIS_POINTS) revert SpreadTooHigh();\n spreadBasisPoints[_token] = _spreadBasisPoints;\n emit SpreadUpdate(_token, _spreadBasisPoints);\n }\n \n /**\n * @notice 批量设置代币价差\n * @param _tokens 代币地址数组\n * @param _spreadBasisPoints 价差数组\n */\n function setSpreadBasisPointsForMultiple(\n address[] calldata _tokens,\n uint256[] calldata _spreadBasisPoints\n ) external onlyGov {\n require(_tokens.length == _spreadBasisPoints.length, \"length mismatch\");\n for (uint256 i = 0; i < _tokens.length; i++) {\n if (_spreadBasisPoints[i] > MAX_SPREAD_BASIS_POINTS) revert SpreadTooHigh();\n spreadBasisPoints[_tokens[i]] = _spreadBasisPoints[i];\n emit SpreadUpdate(_tokens[i], _spreadBasisPoints[i]);\n }\n }\n \n /**\n * @notice 强制更新价格(紧急情况)\n * @param _token 代币地址\n * @param _price 新价格\n */\n function forceUpdatePrice(address _token, uint256 _price) external onlyGov {\n uint256 oldPrice = lastPrice[_token];\n lastPrice[_token] = _price;\n emit PriceUpdate(_token, oldPrice, _price, block.timestamp);\n }\n \n /**\n * @notice 获取YT代币价格带波动保护和价差\n * @param _token 代币地址\n * @param _maximise true=最大价格(上浮价差,对协议有利), false=最小价格(下压价差,对协议有利)\n * @return 价格30位精度\n * \n * 使用场景:\n * - 添加流动性时AUM计算_maximise=true高估AUM用户获得较少LP\n * - 移除流动性时AUM计算_maximise=false低估AUM用户获得较少代币\n * - buyUSDY时用户卖代币_maximise=false低估用户代币价值\n * - sellUSDY时用户买代币_maximise=true高估需支付的代币价值\n * - swap时tokenIn_maximise=false低估输入\n * - swap时tokenOut_maximise=true高估输出\n */\n function getPrice(address _token, bool _maximise) external view returns (uint256) {\n if (_token == wusdAddress) {\n return _getWUSDPrice();\n }\n \n uint256 basePrice = _getRawPrice(_token);\n \n // 价格波动检查\n _validatePriceChange(_token, basePrice);\n \n // 应用价差\n return _applySpread(_token, basePrice, _maximise);\n }\n \n /**\n * @notice 更新价格并返回由keeper调用\n * @param _token 代币地址\n * @return 新价格\n */\n function updatePrice(address _token) external onlyKeeper returns (uint256) {\n if (_token == wusdAddress) {\n return _getWUSDPrice();\n }\n \n uint256 oldPrice = lastPrice[_token];\n uint256 newPrice = _getRawPrice(_token);\n \n // 价格波动检查\n _validatePriceChange(_token, newPrice);\n \n lastPrice[_token] = newPrice;\n \n emit PriceUpdate(_token, oldPrice, newPrice, block.timestamp);\n \n return newPrice;\n }\n \n /**\n * @notice 直接读取YT代币的ytPrice变量\n */\n function _getRawPrice(address _token) private view returns (uint256) {\n return IYTToken(_token).ytPrice();\n }\n\n /**\n * @notice 从配置的YTAssetVault读取wusdPrice\n * @dev 如果未设置wusdPriceSource返回固定价格1.0\n */\n function _getWUSDPrice() private view returns (uint256) {\n if (wusdPriceSource == address(0)) {\n return PRICE_PRECISION; // 默认1.0\n }\n return IYTToken(wusdPriceSource).wusdPrice();\n }\n \n /**\n * @notice 应用价差\n * @param _token 代币地址\n * @param _basePrice 基础价格\n * @param _maximise true=上浮价格false=下压价格\n * @return 应用价差后的价格\n */\n function _applySpread(\n address _token,\n uint256 _basePrice,\n bool _maximise\n ) private view returns (uint256) {\n uint256 spread = spreadBasisPoints[_token];\n \n // 如果没有设置价差,直接返回基础价格\n if (spread == 0) {\n return _basePrice;\n }\n \n if (_maximise) {\n // 上浮价格basePrice * (1 + spread%)\n return _basePrice * (BASIS_POINTS_DIVISOR + spread) / BASIS_POINTS_DIVISOR;\n } else {\n // 下压价格basePrice * (1 - spread%)\n return _basePrice * (BASIS_POINTS_DIVISOR - spread) / BASIS_POINTS_DIVISOR;\n }\n }\n \n /**\n * @notice 验证价格变动是否在允许范围内\n */\n function _validatePriceChange(address _token, uint256 _newPrice) private view {\n uint256 oldPrice = lastPrice[_token];\n \n // 首次设置价格,跳过检查\n if (oldPrice == 0) {\n return;\n }\n \n // 计算价格变动百分比\n uint256 priceDiff = _newPrice > oldPrice ? _newPrice - oldPrice : oldPrice - _newPrice;\n uint256 maxDiff = oldPrice * maxPriceChangeBps / BASIS_POINTS_DIVISOR;\n \n if (priceDiff > maxDiff) revert PriceChangeTooLarge();\n }\n \n /**\n * @notice 获取价格详细信息\n */\n function getPriceInfo(address _token) external view returns (\n uint256 currentPrice,\n uint256 cachedPrice,\n uint256 maxPrice,\n uint256 minPrice,\n uint256 spread\n ) {\n if (_token == wusdAddress) {\n uint256 wusdPrice = _getWUSDPrice();\n currentPrice = wusdPrice;\n cachedPrice = wusdPrice;\n maxPrice = wusdPrice;\n minPrice = wusdPrice;\n spread = 0;\n } else {\n currentPrice = _getRawPrice(_token);\n cachedPrice = lastPrice[_token];\n spread = spreadBasisPoints[_token];\n maxPrice = _applySpread(_token, currentPrice, true);\n minPrice = _applySpread(_token, currentPrice, false);\n }\n }\n \n /**\n * @notice 获取最大价格(上浮价差)\n */\n function getMaxPrice(address _token) external view returns (uint256) {\n if (_token == wusdAddress) {\n // WUSD通常不需要价差直接返回原价格\n return _getWUSDPrice();\n }\n uint256 basePrice = _getRawPrice(_token);\n _validatePriceChange(_token, basePrice);\n return _applySpread(_token, basePrice, true);\n }\n \n /**\n * @notice 获取最小价格(下压价差)\n */\n function getMinPrice(address _token) external view returns (uint256) {\n if (_token == wusdAddress) {\n // WUSD通常不需要价差直接返回原价格\n return _getWUSDPrice();\n }\n uint256 basePrice = _getRawPrice(_token);\n _validatePriceChange(_token, basePrice);\n return _applySpread(_token, basePrice, false);\n }\n \n /**\n * @dev 预留存储空间,用于未来升级时添加新的状态变量\n * 50个slot = 50 * 32 bytes = 1600 bytes\n */\n uint256[50] private __gap;\n}\n"},"contracts/ytLp/core/YTRewardRouter.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport \"../../interfaces/IYTPoolManager.sol\";\nimport \"../../interfaces/IYTVault.sol\";\n\n/**\n * @title YTRewardRouter\n * @notice 用户交互入口\n * @dev UUPS可升级合约\n */\ncontract YTRewardRouter is Initializable, UUPSUpgradeable, ReentrancyGuardUpgradeable, PausableUpgradeable {\n using SafeERC20 for IERC20;\n \n error Forbidden();\n error AlreadyInitialized();\n error InvalidAddress();\n error InvalidAmount();\n error InsufficientOutput();\n \n address public gov;\n address public usdy;\n address public ytLP;\n address public ytPoolManager;\n address public ytVault;\n \n event Swap(\n address indexed account,\n address tokenIn,\n address tokenOut,\n uint256 amountIn,\n uint256 amountOut\n );\n \n modifier onlyGov() {\n if (msg.sender != gov) revert Forbidden();\n _;\n }\n \n /**\n * @notice 初始化合约\n * @param _usdy USDY代币地址\n * @param _ytLP ytLP代币地址\n * @param _ytPoolManager YTPoolManager地址\n * @param _ytVault YTVault地址\n */\n function initialize(\n address _usdy,\n address _ytLP,\n address _ytPoolManager,\n address _ytVault\n ) external initializer {\n if (_usdy == address(0)) revert InvalidAddress();\n if (_ytLP == address(0)) revert InvalidAddress();\n if (_ytPoolManager == address(0)) revert InvalidAddress();\n if (_ytVault == address(0)) revert InvalidAddress();\n \n __ReentrancyGuard_init();\n __UUPSUpgradeable_init();\n __Pausable_init();\n \n gov = msg.sender;\n\n \n usdy = _usdy;\n ytLP = _ytLP;\n ytPoolManager = _ytPoolManager;\n ytVault = _ytVault;\n }\n \n /**\n * @notice 授权升级仅gov可调用\n * @param newImplementation 新实现合约地址\n */\n function _authorizeUpgrade(address newImplementation) internal override onlyGov {}\n \n /**\n * @notice 暂停合约仅gov可调用\n * @dev 暂停后,所有资金流动操作将被禁止\n */\n function pause() external onlyGov {\n _pause();\n }\n \n /**\n * @notice 恢复合约仅gov可调用\n */\n function unpause() external onlyGov {\n _unpause();\n }\n \n /**\n * @notice 添加流动性\n * @param _token YT代币或WUSD地址\n * @param _amount 代币数量\n * @param _minUsdy 最小USDY数量\n * @param _minYtLP 最小ytLP数量\n * @return ytLPAmount 获得的ytLP数量\n */\n function addLiquidity(\n address _token,\n uint256 _amount,\n uint256 _minUsdy,\n uint256 _minYtLP\n ) external nonReentrant whenNotPaused returns (uint256) {\n if (_amount == 0) revert InvalidAmount();\n \n address account = msg.sender;\n \n IERC20(_token).safeTransferFrom(account, address(this), _amount);\n IERC20(_token).approve(ytPoolManager, _amount);\n \n uint256 ytLPAmount = IYTPoolManager(ytPoolManager).addLiquidityForAccount(\n address(this),\n account,\n _token,\n _amount,\n _minUsdy,\n _minYtLP\n );\n \n return ytLPAmount;\n }\n \n /**\n * @notice 移除流动性\n * @param _tokenOut 输出代币地址\n * @param _ytLPAmount ytLP数量\n * @param _minOut 最小输出数量\n * @param _receiver 接收地址\n * @return amountOut 获得的代币数量\n */\n function removeLiquidity(\n address _tokenOut,\n uint256 _ytLPAmount,\n uint256 _minOut,\n address _receiver\n ) external nonReentrant whenNotPaused returns (uint256) {\n if (_ytLPAmount == 0) revert InvalidAmount();\n \n address account = msg.sender;\n \n uint256 amountOut = IYTPoolManager(ytPoolManager).removeLiquidityForAccount(\n account,\n _tokenOut,\n _ytLPAmount,\n _minOut,\n _receiver\n );\n \n return amountOut;\n }\n \n /**\n * @notice YT代币互换\n * @param _tokenIn 输入代币地址\n * @param _tokenOut 输出代币地址\n * @param _amountIn 输入数量\n * @param _minOut 最小输出数量\n * @param _receiver 接收地址\n * @return amountOut 获得的代币数量\n */\n function swapYT(\n address _tokenIn,\n address _tokenOut,\n uint256 _amountIn,\n uint256 _minOut,\n address _receiver\n ) external nonReentrant whenNotPaused returns (uint256) {\n if (_amountIn == 0) revert InvalidAmount();\n \n address account = msg.sender;\n \n IERC20(_tokenIn).safeTransferFrom(account, ytVault, _amountIn);\n \n uint256 amountOut = IYTVault(ytVault).swap(_tokenIn, _tokenOut, _receiver);\n \n if (amountOut < _minOut) revert InsufficientOutput();\n \n emit Swap(account, _tokenIn, _tokenOut, _amountIn, amountOut);\n \n return amountOut;\n }\n \n /**\n * @notice 获取ytLP价格\n * @return ytLP价格18位精度\n */\n function getYtLPPrice() external view returns (uint256) {\n return IYTPoolManager(ytPoolManager).getPrice(true);\n }\n \n /**\n * @notice 获取账户价值\n * @param _account 账户地址\n * @return 账户持有的ytLP价值USDY计价\n */\n function getAccountValue(address _account) external view returns (uint256) {\n uint256 ytLPBalance = IERC20(ytLP).balanceOf(_account);\n uint256 ytLPPrice = IYTPoolManager(ytPoolManager).getPrice(true);\n return ytLPBalance * ytLPPrice / (10 ** 18);\n }\n \n /**\n * @dev 预留存储空间,用于未来升级时添加新的状态变量\n * 50个slot = 50 * 32 bytes = 1600 bytes\n */\n uint256[50] private __gap;\n}\n\n"},"contracts/ytLp/core/YTVault.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport \"../../interfaces/IUSDY.sol\";\nimport \"../../interfaces/IYTPriceFeed.sol\";\n\n/**\n * @title YTVault\n * @notice 核心资金池处理YT代币的存储、交换和动态手续费\n * @dev UUPS可升级合约\n */\ncontract YTVault is Initializable, UUPSUpgradeable, ReentrancyGuardUpgradeable {\n using SafeERC20 for IERC20;\n \n error Forbidden();\n error OnlyPoolManager();\n error NotSwapper();\n error EmergencyMode();\n error InvalidAddress();\n error TokenNotWhitelisted();\n error InvalidFee();\n error NotInEmergency();\n error SlippageTooHigh();\n error SwapDisabled();\n error InvalidAmount();\n error InsufficientPool();\n error SameToken();\n error AmountExceedsLimit();\n error MaxUSDYExceeded();\n error InsufficientUSDYAmount();\n error InvalidPoolAmount();\n error DailyLimitExceeded();\n \n uint256 public constant PRICE_PRECISION = 10 ** 30;\n uint256 public constant BASIS_POINTS_DIVISOR = 10000;\n uint256 public constant USDY_DECIMALS = 18;\n \n address public gov;\n address public ytPoolManager;\n address public priceFeed;\n address public usdy;\n \n mapping(address => bool) public isSwapper; // 授权的swap调用者\n \n bool public isSwapEnabled;\n bool public emergencyMode;\n \n // 代币白名单\n address[] public allWhitelistedTokens;\n mapping(address => bool) public whitelistedTokens;\n mapping(address => bool) public stableTokens; // 稳定币标记\n mapping(address => uint256) public tokenDecimals;\n mapping(address => uint256) public tokenWeights;\n uint256 public totalTokenWeights;\n \n // 池子资产\n mapping(address => uint256) public poolAmounts;\n mapping(address => uint256) public tokenBalances; // 跟踪实际代币余额\n \n // USDY债务追踪用于动态手续费\n mapping(address => uint256) public usdyAmounts;\n mapping(address => uint256) public maxUsdyAmounts;\n \n // 手续费配置\n uint256 public swapFeeBasisPoints;\n uint256 public stableSwapFeeBasisPoints;\n uint256 public taxBasisPoints;\n uint256 public stableTaxBasisPoints;\n bool public hasDynamicFees;\n \n // 全局滑点保护\n uint256 public maxSwapSlippageBps; // 10% 最大滑点\n \n // 单笔交易限额\n mapping(address => uint256) public maxSwapAmount;\n \n event Swap(\n address indexed account,\n address indexed tokenIn,\n address indexed tokenOut,\n uint256 amountIn,\n uint256 amountOut,\n uint256 feeBasisPoints\n );\n event AddLiquidity(\n address indexed account,\n address indexed token,\n uint256 amount,\n uint256 usdyAmount\n );\n event RemoveLiquidity(\n address indexed account,\n address indexed token,\n uint256 usdyAmount,\n uint256 amountOut\n );\n event EmergencyModeSet(bool enabled);\n event SwapEnabledSet(bool enabled);\n \n modifier onlyGov() {\n if (msg.sender != gov) revert Forbidden();\n _;\n }\n \n modifier onlyPoolManager() {\n if (msg.sender != ytPoolManager) revert OnlyPoolManager();\n _;\n }\n \n modifier onlySwapper() {\n if (!isSwapper[msg.sender] && msg.sender != ytPoolManager) revert NotSwapper();\n _;\n }\n \n modifier notInEmergency() {\n if (emergencyMode) revert EmergencyMode();\n _;\n }\n \n /**\n * @notice 初始化合约\n * @param _usdy USDY代币地址\n * @param _priceFeed 价格预言机地址\n */\n function initialize(address _usdy, address _priceFeed) external initializer {\n if (_usdy == address(0) || _priceFeed == address(0)) revert InvalidAddress();\n \n __ReentrancyGuard_init();\n __UUPSUpgradeable_init();\n \n gov = msg.sender;\n usdy = _usdy;\n priceFeed = _priceFeed;\n \n // 初始化默认值\n isSwapEnabled = true;\n emergencyMode = false;\n swapFeeBasisPoints = 30;\n stableSwapFeeBasisPoints = 4;\n taxBasisPoints = 50;\n stableTaxBasisPoints = 20;\n hasDynamicFees = true;\n maxSwapSlippageBps = 1000; // 10% 最大滑点\n \n // 将 USDY 标记为稳定币,这样 USDY ↔ 稳定币的互换可以享受低费率\n stableTokens[_usdy] = true;\n }\n \n /**\n * @notice 授权升级仅gov可调用\n * @param newImplementation 新实现合约地址\n */\n function _authorizeUpgrade(address newImplementation) internal override onlyGov {}\n \n function setGov(address _gov) external onlyGov {\n if (_gov == address(0)) revert InvalidAddress();\n gov = _gov;\n }\n \n function setPoolManager(address _manager) external onlyGov {\n if (_manager == address(0)) revert InvalidAddress();\n ytPoolManager = _manager;\n }\n \n function setSwapper(address _swapper, bool _isActive) external onlyGov {\n if (_swapper == address(0)) revert InvalidAddress();\n isSwapper[_swapper] = _isActive;\n }\n \n function setWhitelistedToken(\n address _token,\n uint256 _decimals,\n uint256 _weight,\n uint256 _maxUsdyAmount,\n bool _isStable\n ) external onlyGov {\n if (_token == address(0)) revert InvalidAddress();\n \n if (!whitelistedTokens[_token]) {\n allWhitelistedTokens.push(_token);\n whitelistedTokens[_token] = true;\n }\n \n totalTokenWeights = totalTokenWeights - tokenWeights[_token] + _weight;\n tokenDecimals[_token] = _decimals;\n tokenWeights[_token] = _weight;\n maxUsdyAmounts[_token] = _maxUsdyAmount;\n stableTokens[_token] = _isStable;\n }\n \n function clearWhitelistedToken(address _token) external onlyGov {\n if (!whitelistedTokens[_token]) revert TokenNotWhitelisted();\n totalTokenWeights = totalTokenWeights - tokenWeights[_token];\n delete whitelistedTokens[_token];\n delete stableTokens[_token];\n delete tokenDecimals[_token];\n delete tokenWeights[_token];\n delete maxUsdyAmounts[_token];\n }\n \n function setSwapFees(\n uint256 _swapFee,\n uint256 _stableSwapFee,\n uint256 _taxBasisPoints,\n uint256 _stableTaxBasisPoints\n ) external onlyGov {\n if (_swapFee > 100 || _stableSwapFee > 50) revert InvalidFee();\n swapFeeBasisPoints = _swapFee;\n stableSwapFeeBasisPoints = _stableSwapFee;\n taxBasisPoints = _taxBasisPoints;\n stableTaxBasisPoints = _stableTaxBasisPoints;\n }\n \n function setDynamicFees(bool _hasDynamicFees) external onlyGov {\n hasDynamicFees = _hasDynamicFees;\n }\n \n function setEmergencyMode(bool _emergencyMode) external onlyGov {\n emergencyMode = _emergencyMode;\n emit EmergencyModeSet(_emergencyMode);\n }\n \n function setSwapEnabled(bool _isSwapEnabled) external onlyGov {\n isSwapEnabled = _isSwapEnabled;\n emit SwapEnabledSet(_isSwapEnabled);\n }\n \n function withdrawToken(address _token, address _receiver, uint256 _amount) external onlyGov {\n if (!emergencyMode) revert NotInEmergency();\n IERC20(_token).safeTransfer(_receiver, _amount);\n _updateTokenBalance(_token);\n }\n \n function setMaxSwapSlippageBps(uint256 _slippageBps) external onlyGov {\n if (_slippageBps > 2000) revert SlippageTooHigh(); // 最大20%\n maxSwapSlippageBps = _slippageBps;\n }\n \n function setMaxSwapAmount(address _token, uint256 _amount) external onlyGov {\n maxSwapAmount[_token] = _amount;\n }\n \n /**\n * @notice 用YT代币购买USDY添加流动性时调用\n * @param _token YT代币地址\n * @param _receiver USDY接收地址\n * @return usdyAmountAfterFees 实际获得的USDY数量\n */\n function buyUSDY(address _token, address _receiver) \n external \n onlyPoolManager \n nonReentrant \n notInEmergency\n returns (uint256) \n {\n if (!whitelistedTokens[_token]) revert TokenNotWhitelisted();\n if (!isSwapEnabled) revert SwapDisabled();\n \n uint256 tokenAmount = _transferIn(_token);\n if (tokenAmount == 0) revert InvalidAmount();\n \n uint256 price = _getPrice(_token, false);\n uint256 usdyAmount = tokenAmount * price / PRICE_PRECISION;\n usdyAmount = _adjustForDecimals(usdyAmount, _token, usdy);\n if (usdyAmount == 0) revert InvalidAmount();\n \n uint256 feeBasisPoints = _getSwapFeeBasisPoints(_token, usdy, usdyAmount);\n uint256 feeAmount = tokenAmount * feeBasisPoints / BASIS_POINTS_DIVISOR;\n uint256 amountAfterFees = tokenAmount - feeAmount;\n \n uint256 usdyAmountAfterFees = amountAfterFees * price / PRICE_PRECISION;\n usdyAmountAfterFees = _adjustForDecimals(usdyAmountAfterFees, _token, usdy);\n \n // 手续费直接留在池子中全部代币加入poolAmount但只铸造扣费后的USDY\n _increasePoolAmount(_token, tokenAmount);\n _increaseUsdyAmount(_token, usdyAmountAfterFees);\n \n IUSDY(usdy).mint(_receiver, usdyAmountAfterFees);\n \n emit AddLiquidity(_receiver, _token, tokenAmount, usdyAmountAfterFees);\n \n return usdyAmountAfterFees;\n }\n \n /**\n * @notice 用USDY卖出换取YT代币移除流动性时调用\n * @param _token YT代币地址\n * @param _receiver YT代币接收地址\n * @return amountOutAfterFees 实际获得的YT代币数量\n */\n function sellUSDY(address _token, address _receiver) \n external \n onlyPoolManager \n nonReentrant \n notInEmergency\n returns (uint256) \n {\n if (!whitelistedTokens[_token]) revert TokenNotWhitelisted();\n if (!isSwapEnabled) revert SwapDisabled();\n \n uint256 usdyAmount = _transferIn(usdy);\n if (usdyAmount == 0) revert InvalidAmount();\n \n uint256 price = _getPrice(_token, true);\n \n // 计算赎回金额(扣费前)\n uint256 redemptionAmount = usdyAmount * PRICE_PRECISION / price;\n redemptionAmount = _adjustForDecimals(redemptionAmount, usdy, _token);\n if (redemptionAmount == 0) revert InvalidAmount();\n \n // 计算手续费和实际转出金额\n uint256 feeBasisPoints = _getSwapFeeBasisPoints(usdy, _token, redemptionAmount);\n uint256 amountOut = redemptionAmount * (BASIS_POINTS_DIVISOR - feeBasisPoints) / BASIS_POINTS_DIVISOR;\n if (amountOut == 0) revert InvalidAmount();\n if (poolAmounts[_token] < amountOut) revert InsufficientPool();\n \n // 计算实际转出的代币对应的USDY价值用于减少usdyAmount记账\n uint256 usdyAmountOut = amountOut * price / PRICE_PRECISION;\n usdyAmountOut = _adjustForDecimals(usdyAmountOut, _token, usdy);\n \n // 手续费留在池子:只减少实际转出的部分\n _decreasePoolAmount(_token, amountOut);\n _decreaseUsdyAmount(_token, usdyAmountOut);\n \n // 销毁USDY\n IUSDY(usdy).burn(address(this), usdyAmount);\n \n // 转出代币\n IERC20(_token).safeTransfer(_receiver, amountOut);\n _updateTokenBalance(_token);\n \n emit RemoveLiquidity(_receiver, _token, usdyAmount, amountOut);\n \n return amountOut;\n }\n \n /**\n * @notice YT代币互换\n * @param _tokenIn 输入代币地址\n * @param _tokenOut 输出代币地址\n * @param _receiver 接收地址\n * @return amountOutAfterFees 实际获得的输出代币数量\n */\n function swap(\n address _tokenIn,\n address _tokenOut,\n address _receiver\n ) external onlySwapper nonReentrant notInEmergency returns (uint256) {\n if (!isSwapEnabled) revert SwapDisabled();\n if (!whitelistedTokens[_tokenIn]) revert TokenNotWhitelisted();\n if (!whitelistedTokens[_tokenOut]) revert TokenNotWhitelisted();\n if (_tokenIn == _tokenOut) revert SameToken();\n \n uint256 amountIn = _transferIn(_tokenIn);\n if (amountIn == 0) revert InvalidAmount();\n \n // 检查单笔交易限额\n if (maxSwapAmount[_tokenIn] > 0) {\n if (amountIn > maxSwapAmount[_tokenIn]) revert AmountExceedsLimit();\n }\n \n uint256 priceIn = _getPrice(_tokenIn, false);\n uint256 priceOut = _getPrice(_tokenOut, true);\n \n uint256 usdyAmount = amountIn * priceIn / PRICE_PRECISION;\n usdyAmount = _adjustForDecimals(usdyAmount, _tokenIn, usdy);\n \n uint256 amountOut = usdyAmount * PRICE_PRECISION / priceOut;\n amountOut = _adjustForDecimals(amountOut, usdy, _tokenOut);\n \n uint256 feeBasisPoints = _getSwapFeeBasisPoints(_tokenIn, _tokenOut, usdyAmount);\n uint256 amountOutAfterFees = amountOut * (BASIS_POINTS_DIVISOR - feeBasisPoints) / BASIS_POINTS_DIVISOR;\n \n if (amountOutAfterFees == 0) revert InvalidAmount();\n if (poolAmounts[_tokenOut] < amountOutAfterFees) revert InsufficientPool();\n \n // 全局滑点保护\n _validateSwapSlippage(amountIn, amountOutAfterFees, priceIn, priceOut);\n \n _increasePoolAmount(_tokenIn, amountIn);\n _decreasePoolAmount(_tokenOut, amountOutAfterFees);\n \n _increaseUsdyAmount(_tokenIn, usdyAmount);\n _decreaseUsdyAmount(_tokenOut, usdyAmount);\n \n IERC20(_tokenOut).safeTransfer(_receiver, amountOutAfterFees);\n _updateTokenBalance(_tokenOut);\n \n emit Swap(msg.sender, _tokenIn, _tokenOut, amountIn, amountOutAfterFees, feeBasisPoints);\n \n return amountOutAfterFees;\n }\n \n /**\n * @notice 获取代币价格(带价差)\n * @param _token 代币地址\n * @param _maximise true=最大价格, false=最小价格\n * @return 价格30位精度\n */\n function getPrice(address _token, bool _maximise) external view returns (uint256) {\n return _getPrice(_token, _maximise);\n }\n \n /**\n * @notice 获取最大价格\n */\n function getMaxPrice(address _token) external view returns (uint256) {\n return _getPrice(_token, true);\n }\n \n /**\n * @notice 获取最小价格\n */\n function getMinPrice(address _token) external view returns (uint256) {\n return _getPrice(_token, false);\n }\n \n function getAllPoolTokens() external view returns (address[] memory) {\n return allWhitelistedTokens;\n }\n \n /**\n * @notice 获取池子总价值\n * @param _maximise true=使用最大价格(对协议有利), false=使用最小价格(对用户有利)\n * @return 池子总价值USDY计价\n */\n function getPoolValue(bool _maximise) external view returns (uint256) {\n uint256 totalValue = 0;\n for (uint256 i = 0; i < allWhitelistedTokens.length; i++) {\n address token = allWhitelistedTokens[i];\n if (!whitelistedTokens[token]) continue;\n \n uint256 amount = poolAmounts[token];\n uint256 price = _getPrice(token, _maximise);\n uint256 value = amount * price / PRICE_PRECISION;\n value = _adjustForDecimals(value, token, usdy);\n totalValue += value;\n }\n return totalValue;\n }\n \n function getTargetUsdyAmount(address _token) public view returns (uint256) {\n uint256 supply = IERC20(usdy).totalSupply();\n if (supply == 0) { return 0; }\n uint256 weight = tokenWeights[_token];\n return weight * supply / totalTokenWeights;\n }\n \n function _increaseUsdyAmount(address _token, uint256 _amount) private {\n usdyAmounts[_token] = usdyAmounts[_token] + _amount;\n uint256 maxUsdyAmount = maxUsdyAmounts[_token];\n if (maxUsdyAmount != 0) {\n if (usdyAmounts[_token] > maxUsdyAmount) revert MaxUSDYExceeded();\n }\n }\n \n function _decreaseUsdyAmount(address _token, uint256 _amount) private {\n uint256 value = usdyAmounts[_token];\n if (value < _amount) revert InsufficientUSDYAmount();\n usdyAmounts[_token] = value - _amount;\n }\n \n /**\n * @notice 获取swap手续费率公开方法供前端调用\n * @param _tokenIn 输入代币\n * @param _tokenOut 输出代币\n * @param _usdyAmount USDY数量\n * @return 手续费率basis points\n */\n function getSwapFeeBasisPoints(\n address _tokenIn,\n address _tokenOut,\n uint256 _usdyAmount\n ) public view returns (uint256) {\n return _getSwapFeeBasisPoints(_tokenIn, _tokenOut, _usdyAmount);\n }\n \n /**\n * @notice 获取赎回手续费率sellUSDY时使用\n * @param _token 代币地址\n * @param _usdyAmount USDY数量\n * @return 手续费率basis points\n */\n function getRedemptionFeeBasisPoints(\n address _token,\n uint256 _usdyAmount\n ) public view returns (uint256) {\n return _getSwapFeeBasisPoints(usdy, _token, _usdyAmount);\n }\n \n function _getSwapFeeBasisPoints(\n address _tokenIn,\n address _tokenOut,\n uint256 _usdyAmount\n ) private view returns (uint256) {\n // 稳定币交换是指两个代币都是稳定币(如 WUSD <-> USDC\n bool isStableSwap = stableTokens[_tokenIn] && stableTokens[_tokenOut];\n uint256 baseBps = isStableSwap ? stableSwapFeeBasisPoints : swapFeeBasisPoints;\n uint256 taxBps = isStableSwap ? stableTaxBasisPoints : taxBasisPoints;\n \n if (!hasDynamicFees) {\n return baseBps;\n }\n \n uint256 feesBasisPoints0 = getFeeBasisPoints(_tokenIn, _usdyAmount, baseBps, taxBps, true);\n uint256 feesBasisPoints1 = getFeeBasisPoints(_tokenOut, _usdyAmount, baseBps, taxBps, false);\n \n return feesBasisPoints0 > feesBasisPoints1 ? feesBasisPoints0 : feesBasisPoints1;\n }\n\n function getFeeBasisPoints(\n address _token,\n uint256 _usdyDelta,\n uint256 _feeBasisPoints,\n uint256 _taxBasisPoints,\n bool _increment\n ) public view returns (uint256) {\n if (!hasDynamicFees) { return _feeBasisPoints; }\n \n uint256 initialAmount = usdyAmounts[_token];\n uint256 nextAmount = initialAmount + _usdyDelta;\n if (!_increment) {\n nextAmount = _usdyDelta > initialAmount ? 0 : initialAmount - _usdyDelta;\n }\n \n uint256 targetAmount = getTargetUsdyAmount(_token);\n if (targetAmount == 0) { return _feeBasisPoints; }\n \n uint256 initialDiff = initialAmount > targetAmount \n ? initialAmount - targetAmount \n : targetAmount - initialAmount;\n uint256 nextDiff = nextAmount > targetAmount \n ? nextAmount - targetAmount \n : targetAmount - nextAmount;\n \n // 改善平衡 → 降低手续费\n if (nextDiff < initialDiff) {\n uint256 rebateBps = _taxBasisPoints * initialDiff / targetAmount;\n return rebateBps > _feeBasisPoints ? 0 : _feeBasisPoints - rebateBps;\n }\n \n // 恶化平衡 → 提高手续费\n uint256 averageDiff = (initialDiff + nextDiff) / 2;\n if (averageDiff > targetAmount) {\n averageDiff = targetAmount;\n }\n uint256 taxBps = _taxBasisPoints * averageDiff / targetAmount;\n return _feeBasisPoints + taxBps;\n }\n \n function _transferIn(address _token) private returns (uint256) {\n uint256 prevBalance = tokenBalances[_token];\n uint256 nextBalance = IERC20(_token).balanceOf(address(this));\n tokenBalances[_token] = nextBalance;\n return nextBalance - prevBalance;\n }\n \n function _updateTokenBalance(address _token) private {\n tokenBalances[_token] = IERC20(_token).balanceOf(address(this));\n }\n \n function _increasePoolAmount(address _token, uint256 _amount) private {\n poolAmounts[_token] += _amount;\n _validatePoolAmount(_token);\n }\n \n function _decreasePoolAmount(address _token, uint256 _amount) private {\n if (poolAmounts[_token] < _amount) revert InsufficientPool();\n poolAmounts[_token] -= _amount;\n }\n \n function _validatePoolAmount(address _token) private view {\n if (poolAmounts[_token] > tokenBalances[_token]) revert InvalidPoolAmount();\n }\n \n function _validateSwapSlippage(\n uint256 _amountIn,\n uint256 _amountOut,\n uint256 _priceIn,\n uint256 _priceOut\n ) private view {\n // 计算预期输出(不含手续费)\n uint256 expectedOut = _amountIn * _priceIn / _priceOut;\n \n // 计算实际滑点\n if (expectedOut > _amountOut) {\n uint256 slippage = (expectedOut - _amountOut) * BASIS_POINTS_DIVISOR / expectedOut;\n if (slippage > maxSwapSlippageBps) revert SlippageTooHigh();\n }\n }\n \n function _getPrice(address _token, bool _maximise) private view returns (uint256) {\n return IYTPriceFeed(priceFeed).getPrice(_token, _maximise);\n }\n \n function _adjustForDecimals(\n uint256 _amount,\n address _tokenFrom,\n address _tokenTo\n ) private view returns (uint256) {\n uint256 decimalsFrom = _tokenFrom == usdy ? USDY_DECIMALS : tokenDecimals[_tokenFrom];\n uint256 decimalsTo = _tokenTo == usdy ? USDY_DECIMALS : tokenDecimals[_tokenTo];\n \n if (decimalsFrom == decimalsTo) {\n return _amount;\n }\n \n if (decimalsFrom > decimalsTo) {\n return _amount / (10 ** (decimalsFrom - decimalsTo));\n }\n \n return _amount * (10 ** (decimalsTo - decimalsFrom));\n }\n \n /**\n * @dev 预留存储空间,用于未来升级时添加新的状态变量\n * 50个slot = 50 * 32 bytes = 1600 bytes\n */\n uint256[50] private __gap;\n}\n\n"},"contracts/ytLp/tokens/USDY.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\n\n/**\n * @title USDY Token\n * @notice 统一计价代币\n * @dev 只有授权的Vault可以铸造和销毁UUPS可升级合约\n */\ncontract USDY is Initializable, ERC20Upgradeable, OwnableUpgradeable, UUPSUpgradeable {\n \n error Forbidden();\n error InvalidVault();\n \n mapping(address => bool) public vaults;\n \n event VaultAdded(address indexed vault);\n event VaultRemoved(address indexed vault);\n \n modifier onlyVault() {\n if (!vaults[msg.sender]) revert Forbidden();\n _;\n }\n \n /**\n * @notice 初始化合约\n */\n function initialize() external initializer {\n __ERC20_init(\"YT USD\", \"USDY\");\n __Ownable_init(msg.sender);\n __UUPSUpgradeable_init();\n }\n \n /**\n * @notice 授权升级仅owner可调用\n * @param newImplementation 新实现合约地址\n */\n function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\n \n /**\n * @notice 添加授权的Vault地址\n * @param _vault Vault合约地址\n */\n function addVault(address _vault) external onlyOwner {\n if (_vault == address(0)) revert InvalidVault();\n vaults[_vault] = true;\n emit VaultAdded(_vault);\n }\n \n /**\n * @notice 移除授权的Vault地址\n * @param _vault Vault合约地址\n */\n function removeVault(address _vault) external onlyOwner {\n vaults[_vault] = false;\n emit VaultRemoved(_vault);\n }\n \n /**\n * @notice 铸造USDY代币\n * @param _account 接收地址\n * @param _amount 铸造数量\n */\n function mint(address _account, uint256 _amount) external onlyVault {\n _mint(_account, _amount);\n }\n \n /**\n * @notice 销毁USDY代币\n * @param _account 销毁地址\n * @param _amount 销毁数量\n */\n function burn(address _account, uint256 _amount) external onlyVault {\n _burn(_account, _amount);\n }\n \n /**\n * @dev 预留存储空间,用于未来升级时添加新的状态变量\n * 50个slot = 50 * 32 bytes = 1600 bytes\n */\n uint256[50] private __gap;\n}\n\n"},"contracts/ytLp/tokens/WUSD.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\";\n\n/**\n * @title WUSD\n * @notice Wrapped USD - 简单的ERC20代币\n */\ncontract WUSD is Initializable, ERC20Upgradeable, UUPSUpgradeable, OwnableUpgradeable {\n \n /**\n * @notice 初始化合约\n * @param _name 代币名称\n * @param _symbol 代币符号\n */\n function initialize(string memory _name, string memory _symbol) external initializer {\n __ERC20_init(_name, _symbol);\n __UUPSUpgradeable_init();\n __Ownable_init(msg.sender);\n }\n \n /**\n * @notice 授权升级仅owner可调用\n * @param newImplementation 新实现合约地址\n */\n function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\n \n /**\n * @notice 铸造代币\n * @param _to 接收地址\n * @param _amount 铸造数量\n */\n function mint(address _to, uint256 _amount) external onlyOwner {\n _mint(_to, _amount);\n }\n \n /**\n * @notice 销毁代币\n * @param _from 销毁地址\n * @param _amount 销毁数量\n */\n function burn(address _from, uint256 _amount) external onlyOwner {\n _burn(_from, _amount);\n }\n \n /**\n * @dev 预留存储空间,用于未来升级时添加新的状态变量\n */\n uint256[50] private __gap;\n}\n"},"contracts/ytLp/tokens/YTLPToken.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\n\n/**\n * @title YTLPToken\n * @notice LP代币代表用户在池子中的份额\n * @dev 只有授权的MinterYTPoolManager可以铸造和销毁UUPS可升级合约\n */\ncontract YTLPToken is Initializable, ERC20Upgradeable, OwnableUpgradeable, UUPSUpgradeable {\n\n error NotMinter();\n error InvalidMinter();\n \n mapping(address => bool) public isMinter;\n \n event MinterSet(address indexed minter, bool isActive);\n \n /**\n * @notice 初始化合约\n */\n function initialize() external initializer {\n __ERC20_init(\"YT Liquidity Provider\", \"ytLP\");\n __Ownable_init(msg.sender);\n __UUPSUpgradeable_init();\n }\n \n /**\n * @notice 授权升级仅owner可调用\n * @param newImplementation 新实现合约地址\n */\n function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}\n \n modifier onlyMinter() {\n if (!isMinter[msg.sender]) revert NotMinter();\n _;\n }\n \n /**\n * @notice 设置铸造权限\n * @param _minter 铸造者地址\n * @param _isActive 是否激活\n */\n function setMinter(address _minter, bool _isActive) external onlyOwner {\n if (_minter == address(0)) revert InvalidMinter();\n isMinter[_minter] = _isActive;\n emit MinterSet(_minter, _isActive);\n }\n \n /**\n * @notice 铸造ytLP代币\n * @param _to 接收地址\n * @param _amount 铸造数量\n */\n function mint(address _to, uint256 _amount) external onlyMinter {\n _mint(_to, _amount);\n }\n \n /**\n * @notice 销毁ytLP代币\n * @param _from 销毁地址\n * @param _amount 销毁数量\n */\n function burn(address _from, uint256 _amount) external onlyMinter {\n _burn(_from, _amount);\n }\n \n /**\n * @dev 预留存储空间,用于未来升级时添加新的状态变量\n * 50个slot = 50 * 32 bytes = 1600 bytes\n */\n uint256[50] private __gap;\n}\n\n"},"node_modules/@openzeppelin/contracts/access/Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\n\npragma solidity ^0.8.20;\n\nimport {Context} from \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * The initial owner is set to the address provided by the deployer. This can\n * later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n /**\n * @dev The caller account is not authorized to perform an operation.\n */\n error OwnableUnauthorizedAccount(address account);\n\n /**\n * @dev The owner is not a valid owner account. (eg. `address(0)`)\n */\n error OwnableInvalidOwner(address owner);\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\n */\n constructor(address initialOwner) {\n if (initialOwner == address(0)) {\n revert OwnableInvalidOwner(address(0));\n }\n _transferOwnership(initialOwner);\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n if (owner() != _msgSender()) {\n revert OwnableUnauthorizedAccount(_msgSender());\n }\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n if (newOwner == address(0)) {\n revert OwnableInvalidOwner(address(0));\n }\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n"},"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC1363.sol)\n\npragma solidity >=0.6.2;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC165} from \"./IERC165.sol\";\n\n/**\n * @title IERC1363\n * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\n *\n * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\n * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\n */\ninterface IERC1363 is IERC20, IERC165 {\n /*\n * Note: the ERC-165 identifier for this interface is 0xb0202a11.\n * 0xb0202a11 ===\n * bytes4(keccak256('transferAndCall(address,uint256)')) ^\n * bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^\n * bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^\n * bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^\n * bytes4(keccak256('approveAndCall(address,uint256)')) ^\n * bytes4(keccak256('approveAndCall(address,uint256,bytes)'))\n */\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`\n * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n * @param to The address which you want to transfer to.\n * @param value The amount of tokens to be transferred.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function transferAndCall(address to, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`\n * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n * @param to The address which you want to transfer to.\n * @param value The amount of tokens to be transferred.\n * @param data Additional data with no specified format, sent in call to `to`.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n * @param from The address which you want to send tokens from.\n * @param to The address which you want to transfer to.\n * @param value The amount of tokens to be transferred.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function transferFromAndCall(address from, address to, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n * @param from The address which you want to send tokens from.\n * @param to The address which you want to transfer to.\n * @param value The amount of tokens to be transferred.\n * @param data Additional data with no specified format, sent in call to `to`.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n * @param spender The address which will spend the funds.\n * @param value The amount of tokens to be spent.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function approveAndCall(address spender, uint256 value) external returns (bool);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n * @param spender The address which will spend the funds.\n * @param value The amount of tokens to be spent.\n * @param data Additional data with no specified format, sent in call to `spender`.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);\n}\n"},"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC165.sol)\n\npragma solidity >=0.4.16;\n\nimport {IERC165} from \"../utils/introspection/IERC165.sol\";\n"},"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC1967.sol)\n\npragma solidity >=0.4.11;\n\n/**\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\n */\ninterface IERC1967 {\n /**\n * @dev Emitted when the implementation is upgraded.\n */\n event Upgraded(address indexed implementation);\n\n /**\n * @dev Emitted when the admin account has changed.\n */\n event AdminChanged(address previousAdmin, address newAdmin);\n\n /**\n * @dev Emitted when the beacon is changed.\n */\n event BeaconUpgraded(address indexed beacon);\n}\n"},"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC20.sol)\n\npragma solidity >=0.4.16;\n\nimport {IERC20} from \"../token/ERC20/IERC20.sol\";\n"},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity >=0.4.16;\n\n/**\n * @dev ERC-1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822Proxiable {\n /**\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n * address.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy.\n */\n function proxiableUUID() external view returns (bytes32);\n}\n"},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/draft-IERC6093.sol)\npragma solidity >=0.8.4;\n\n/**\n * @dev Standard ERC-20 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\n */\ninterface IERC20Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC20InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC20InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `spender`s `allowance`. Used in transfers.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n * @param allowance Amount of tokens a `spender` is allowed to operate with.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC20InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC20InvalidSpender(address spender);\n}\n\n/**\n * @dev Standard ERC-721 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\n */\ninterface IERC721Errors {\n /**\n * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n * Used in balance queries.\n * @param owner Address of the current owner of a token.\n */\n error ERC721InvalidOwner(address owner);\n\n /**\n * @dev Indicates a `tokenId` whose `owner` is the zero address.\n * @param tokenId Identifier number of a token.\n */\n error ERC721NonexistentToken(uint256 tokenId);\n\n /**\n * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param tokenId Identifier number of a token.\n * @param owner Address of the current owner of a token.\n */\n error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC721InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC721InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param tokenId Identifier number of a token.\n */\n error ERC721InsufficientApproval(address operator, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC721InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC721InvalidOperator(address operator);\n}\n\n/**\n * @dev Standard ERC-1155 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\n */\ninterface IERC1155Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n * @param tokenId Identifier number of a token.\n */\n error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC1155InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC1155InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param owner Address of the current owner of a token.\n */\n error ERC1155MissingApprovalForAll(address operator, address owner);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC1155InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC1155InvalidOperator(address operator);\n\n /**\n * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n * Used in batch transfers.\n * @param idsLength Length of the array of token identifiers\n * @param valuesLength Length of the array of token amounts\n */\n error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\n}\n"},"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/ERC1967/ERC1967Proxy.sol)\n\npragma solidity ^0.8.22;\n\nimport {Proxy} from \"../Proxy.sol\";\nimport {ERC1967Utils} from \"./ERC1967Utils.sol\";\n\n/**\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n * implementation address that can be changed. This address is stored in storage in the location specified by\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967], so that it doesn't conflict with the storage layout of the\n * implementation behind the proxy.\n */\ncontract ERC1967Proxy is Proxy {\n /**\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`.\n *\n * If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\n * encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\n *\n * Requirements:\n *\n * - If `data` is empty, `msg.value` must be zero.\n */\n constructor(address implementation, bytes memory _data) payable {\n ERC1967Utils.upgradeToAndCall(implementation, _data);\n }\n\n /**\n * @dev Returns the current implementation address.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\n * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\n */\n function _implementation() internal view virtual override returns (address) {\n return ERC1967Utils.getImplementation();\n }\n}\n"},"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (proxy/ERC1967/ERC1967Utils.sol)\n\npragma solidity ^0.8.21;\n\nimport {IBeacon} from \"../beacon/IBeacon.sol\";\nimport {IERC1967} from \"../../interfaces/IERC1967.sol\";\nimport {Address} from \"../../utils/Address.sol\";\nimport {StorageSlot} from \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This library provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.\n */\nlibrary ERC1967Utils {\n /**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n /**\n * @dev The `implementation` of the proxy is invalid.\n */\n error ERC1967InvalidImplementation(address implementation);\n\n /**\n * @dev The `admin` of the proxy is invalid.\n */\n error ERC1967InvalidAdmin(address admin);\n\n /**\n * @dev The `beacon` of the proxy is invalid.\n */\n error ERC1967InvalidBeacon(address beacon);\n\n /**\n * @dev An upgrade function sees `msg.value > 0` that may be lost.\n */\n error ERC1967NonPayable();\n\n /**\n * @dev Returns the current implementation address.\n */\n function getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the ERC-1967 implementation slot.\n */\n function _setImplementation(address newImplementation) private {\n if (newImplementation.code.length == 0) {\n revert ERC1967InvalidImplementation(newImplementation);\n }\n StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\n }\n\n /**\n * @dev Performs implementation upgrade with additional setup call if data is nonempty.\n * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n * to avoid stuck value in the contract.\n *\n * Emits an {IERC1967-Upgraded} event.\n */\n function upgradeToAndCall(address newImplementation, bytes memory data) internal {\n _setImplementation(newImplementation);\n emit IERC1967.Upgraded(newImplementation);\n\n if (data.length > 0) {\n Address.functionDelegateCall(newImplementation, data);\n } else {\n _checkNonPayable();\n }\n }\n\n /**\n * @dev Storage slot with the admin of the contract.\n * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n /**\n * @dev Returns the current admin.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\n * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n */\n function getAdmin() internal view returns (address) {\n return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the ERC-1967 admin slot.\n */\n function _setAdmin(address newAdmin) private {\n if (newAdmin == address(0)) {\n revert ERC1967InvalidAdmin(address(0));\n }\n StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\n }\n\n /**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {IERC1967-AdminChanged} event.\n */\n function changeAdmin(address newAdmin) internal {\n emit IERC1967.AdminChanged(getAdmin(), newAdmin);\n _setAdmin(newAdmin);\n }\n\n /**\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n * This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n /**\n * @dev Returns the current beacon.\n */\n function getBeacon() internal view returns (address) {\n return StorageSlot.getAddressSlot(BEACON_SLOT).value;\n }\n\n /**\n * @dev Stores a new beacon in the ERC-1967 beacon slot.\n */\n function _setBeacon(address newBeacon) private {\n if (newBeacon.code.length == 0) {\n revert ERC1967InvalidBeacon(newBeacon);\n }\n\n StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\n\n address beaconImplementation = IBeacon(newBeacon).implementation();\n if (beaconImplementation.code.length == 0) {\n revert ERC1967InvalidImplementation(beaconImplementation);\n }\n }\n\n /**\n * @dev Change the beacon and trigger a setup call if data is nonempty.\n * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n * to avoid stuck value in the contract.\n *\n * Emits an {IERC1967-BeaconUpgraded} event.\n *\n * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n * efficiency.\n */\n function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\n _setBeacon(newBeacon);\n emit IERC1967.BeaconUpgraded(newBeacon);\n\n if (data.length > 0) {\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n } else {\n _checkNonPayable();\n }\n }\n\n /**\n * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n * if an upgrade doesn't perform an initialization call.\n */\n function _checkNonPayable() private {\n if (msg.value > 0) {\n revert ERC1967NonPayable();\n }\n }\n}\n"},"node_modules/@openzeppelin/contracts/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n /**\n * @dev Delegates the current call to `implementation`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _delegate(address implementation) internal virtual {\n assembly {\n // Copy msg.data. We take full control of memory in this inline assembly\n // block because it will not return to Solidity code. We overwrite the\n // Solidity scratch pad at memory position 0.\n calldatacopy(0, 0, calldatasize())\n\n // Call the implementation.\n // out and outsize are 0 because we don't know the size yet.\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n // Copy the returned data.\n returndatacopy(0, 0, returndatasize())\n\n switch result\n // delegatecall returns 0 on error.\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n }\n }\n\n /**\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback\n * function and {_fallback} should delegate.\n */\n function _implementation() internal view virtual returns (address);\n\n /**\n * @dev Delegates the current call to the address returned by `_implementation()`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _fallback() internal virtual {\n _delegate(_implementation());\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n * function in the contract matches the call data.\n */\n fallback() external payable virtual {\n _fallback();\n }\n}\n"},"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (proxy/beacon/IBeacon.sol)\n\npragma solidity >=0.4.16;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeacon {\n /**\n * @dev Must return an address that can be used as a delegate call target.\n *\n * {UpgradeableBeacon} will check that this address is a contract.\n */\n function implementation() external view returns (address);\n}\n"},"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/IERC20.sol)\n\npragma solidity >=0.4.16;\n\n/**\n * @dev Interface of the ERC-20 standard as defined in the ERC.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the value of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the value of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 value) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the\n * allowance mechanism. `value` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n"},"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity >=0.6.2;\n\nimport {IERC20} from \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC-20 standard.\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n"},"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/utils/SafeERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../IERC20.sol\";\nimport {IERC1363} from \"../../../interfaces/IERC1363.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC-20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n /**\n * @dev An operation with an ERC-20 token failed.\n */\n error SafeERC20FailedOperation(address token);\n\n /**\n * @dev Indicates a failed `decreaseAllowance` request.\n */\n error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\n\n /**\n * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n */\n function safeTransfer(IERC20 token, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\n }\n\n /**\n * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\n */\n function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\n }\n\n /**\n * @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful.\n */\n function trySafeTransfer(IERC20 token, address to, uint256 value) internal returns (bool) {\n return _callOptionalReturnBool(token, abi.encodeCall(token.transfer, (to, value)));\n }\n\n /**\n * @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful.\n */\n function trySafeTransferFrom(IERC20 token, address from, address to, uint256 value) internal returns (bool) {\n return _callOptionalReturnBool(token, abi.encodeCall(token.transferFrom, (from, to, value)));\n }\n\n /**\n * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n *\n * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n * smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\n */\n function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n uint256 oldAllowance = token.allowance(address(this), spender);\n forceApprove(token, spender, oldAllowance + value);\n }\n\n /**\n * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\n * value, non-reverting calls are assumed to be successful.\n *\n * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n * smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\n */\n function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\n unchecked {\n uint256 currentAllowance = token.allowance(address(this), spender);\n if (currentAllowance < requestedDecrease) {\n revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\n }\n forceApprove(token, spender, currentAllowance - requestedDecrease);\n }\n }\n\n /**\n * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n * to be set to zero before setting it to a non-zero value, such as USDT.\n *\n * NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\n * only sets the \"standard\" allowance. Any temporary allowance will remain active, in addition to the value being\n * set here.\n */\n function forceApprove(IERC20 token, address spender, uint256 value) internal {\n bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\n\n if (!_callOptionalReturnBool(token, approvalCall)) {\n _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\n _callOptionalReturn(token, approvalCall);\n }\n }\n\n /**\n * @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\n * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n * targeting contracts.\n *\n * Reverts if the returned value is other than `true`.\n */\n function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\n if (to.code.length == 0) {\n safeTransfer(token, to, value);\n } else if (!token.transferAndCall(to, value, data)) {\n revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\n * has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n * targeting contracts.\n *\n * Reverts if the returned value is other than `true`.\n */\n function transferFromAndCallRelaxed(\n IERC1363 token,\n address from,\n address to,\n uint256 value,\n bytes memory data\n ) internal {\n if (to.code.length == 0) {\n safeTransferFrom(token, from, to, value);\n } else if (!token.transferFromAndCall(from, to, value, data)) {\n revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\n * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n * targeting contracts.\n *\n * NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\n * Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\n * once without retrying, and relies on the returned value to be true.\n *\n * Reverts if the returned value is other than `true`.\n */\n function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\n if (to.code.length == 0) {\n forceApprove(token, to, value);\n } else if (!token.approveAndCall(to, value, data)) {\n revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Imitates a Solidity 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 * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n *\n * This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.\n */\n function _callOptionalReturn(IERC20 token, bytes memory data) private {\n uint256 returnSize;\n uint256 returnValue;\n assembly (\"memory-safe\") {\n let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\n // bubble errors\n if iszero(success) {\n let ptr := mload(0x40)\n returndatacopy(ptr, 0, returndatasize())\n revert(ptr, returndatasize())\n }\n returnSize := returndatasize()\n returnValue := mload(0)\n }\n\n if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {\n revert SafeERC20FailedOperation(address(token));\n }\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 * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n *\n * This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.\n */\n function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\n bool success;\n uint256 returnSize;\n uint256 returnValue;\n assembly (\"memory-safe\") {\n success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\n returnSize := returndatasize()\n returnValue := mload(0)\n }\n return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);\n }\n}\n"},"node_modules/@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (utils/Address.sol)\n\npragma solidity ^0.8.20;\n\nimport {Errors} from \"./Errors.sol\";\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev There's no code at `target` (it is not a contract).\n */\n error AddressEmptyCode(address target);\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://consensys.net/diligence/blog/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.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n if (address(this).balance < amount) {\n revert Errors.InsufficientBalance(address(this).balance, amount);\n }\n\n (bool success, bytes memory returndata) = recipient.call{value: amount}(\"\");\n if (!success) {\n _revert(returndata);\n }\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 or custom error, it is bubbled\n * up by this function (like regular Solidity function calls). However, if\n * the call reverted with no returned reason, this function reverts with a\n * {Errors.FailedCall} error.\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 * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n if (address(this).balance < value) {\n revert Errors.InsufficientBalance(address(this).balance, value);\n }\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n * was not a contract or bubbling up the revert reason (falling back to {Errors.FailedCall}) in case\n * of an unsuccessful call.\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata\n ) internal view returns (bytes memory) {\n if (!success) {\n _revert(returndata);\n } else {\n // only check if target is a contract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n if (returndata.length == 0 && target.code.length == 0) {\n revert AddressEmptyCode(target);\n }\n return returndata;\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n * revert reason or with a default {Errors.FailedCall} error.\n */\n function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\n if (!success) {\n _revert(returndata);\n } else {\n return returndata;\n }\n }\n\n /**\n * @dev Reverts with returndata if present. Otherwise reverts with {Errors.FailedCall}.\n */\n function _revert(bytes memory returndata) private pure {\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 assembly (\"memory-safe\") {\n revert(add(returndata, 0x20), mload(returndata))\n }\n } else {\n revert Errors.FailedCall();\n }\n }\n}\n"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n"},"node_modules/@openzeppelin/contracts/utils/Errors.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Collection of common custom errors used in multiple contracts\n *\n * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\n * It is recommended to avoid relying on the error API for critical functionality.\n *\n * _Available since v5.1._\n */\nlibrary Errors {\n /**\n * @dev The ETH balance of the account is not enough to perform the operation.\n */\n error InsufficientBalance(uint256 balance, uint256 needed);\n\n /**\n * @dev A call to an address target failed. The target may have reverted.\n */\n error FailedCall();\n\n /**\n * @dev The deployment failed.\n */\n error FailedDeployment();\n\n /**\n * @dev A necessary precompile is missing.\n */\n error MissingPrecompile(address);\n}\n"},"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC-1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n * // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(newImplementation.code.length > 0);\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * TIP: Consider using this library along with {SlotDerivation}.\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n struct Int256Slot {\n int256 value;\n }\n\n struct StringSlot {\n string value;\n }\n\n struct BytesSlot {\n bytes value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `Int256Slot` with member `value` located at `slot`.\n */\n function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `StringSlot` with member `value` located at `slot`.\n */\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n */\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := store.slot\n }\n }\n\n /**\n * @dev Returns a `BytesSlot` with member `value` located at `slot`.\n */\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n */\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := store.slot\n }\n }\n}\n"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (utils/introspection/IERC165.sol)\n\npragma solidity >=0.4.16;\n\n/**\n * @dev Interface of the ERC-165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\n\npragma solidity ^0.8.20;\n\nimport {ContextUpgradeable} from \"../utils/ContextUpgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * The initial owner is set to the address provided by the deployer. This can\n * later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\n /// @custom:storage-location erc7201:openzeppelin.storage.Ownable\n struct OwnableStorage {\n address _owner;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.Ownable\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300;\n\n function _getOwnableStorage() private pure returns (OwnableStorage storage $) {\n assembly {\n $.slot := OwnableStorageLocation\n }\n }\n\n /**\n * @dev The caller account is not authorized to perform an operation.\n */\n error OwnableUnauthorizedAccount(address account);\n\n /**\n * @dev The owner is not a valid owner account. (eg. `address(0)`)\n */\n error OwnableInvalidOwner(address owner);\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\n */\n function __Ownable_init(address initialOwner) internal onlyInitializing {\n __Ownable_init_unchained(initialOwner);\n }\n\n function __Ownable_init_unchained(address initialOwner) internal onlyInitializing {\n if (initialOwner == address(0)) {\n revert OwnableInvalidOwner(address(0));\n }\n _transferOwnership(initialOwner);\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n OwnableStorage storage $ = _getOwnableStorage();\n return $._owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n if (owner() != _msgSender()) {\n revert OwnableUnauthorizedAccount(_msgSender());\n }\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n if (newOwner == address(0)) {\n revert OwnableInvalidOwner(address(0));\n }\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n OwnableStorage storage $ = _getOwnableStorage();\n address oldOwner = $._owner;\n $._owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n"},"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n * function initialize() initializer public {\n * __ERC20_init(\"MyToken\", \"MTK\");\n * }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n * function initializeV2() reinitializer(2) public {\n * __ERC20Permit_init(\"MyToken\");\n * }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n * _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n /**\n * @dev Storage of the initializable contract.\n *\n * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n * when using with upgradeable contracts.\n *\n * @custom:storage-location erc7201:openzeppelin.storage.Initializable\n */\n struct InitializableStorage {\n /**\n * @dev Indicates that the contract has been initialized.\n */\n uint64 _initialized;\n /**\n * @dev Indicates that the contract is in the process of being initialized.\n */\n bool _initializing;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.Initializable\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\n\n /**\n * @dev The contract is already initialized.\n */\n error InvalidInitialization();\n\n /**\n * @dev The contract is not initializing.\n */\n error NotInitializing();\n\n /**\n * @dev Triggered when the contract has been initialized or reinitialized.\n */\n event Initialized(uint64 version);\n\n /**\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n * `onlyInitializing` functions can be used to initialize parent contracts.\n *\n * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n * production.\n *\n * Emits an {Initialized} event.\n */\n modifier initializer() {\n // solhint-disable-next-line var-name-mixedcase\n InitializableStorage storage $ = _getInitializableStorage();\n\n // Cache values to avoid duplicated sloads\n bool isTopLevelCall = !$._initializing;\n uint64 initialized = $._initialized;\n\n // Allowed calls:\n // - initialSetup: the contract is not in the initializing state and no previous version was\n // initialized\n // - construction: the contract is initialized at version 1 (no reinitialization) and the\n // current contract is just being deployed\n bool initialSetup = initialized == 0 && isTopLevelCall;\n bool construction = initialized == 1 && address(this).code.length == 0;\n\n if (!initialSetup && !construction) {\n revert InvalidInitialization();\n }\n $._initialized = 1;\n if (isTopLevelCall) {\n $._initializing = true;\n }\n _;\n if (isTopLevelCall) {\n $._initializing = false;\n emit Initialized(1);\n }\n }\n\n /**\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n * used to initialize parent contracts.\n *\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n * are added through upgrades and that require initialization.\n *\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n * cannot be nested. If one is invoked in the context of another, execution will revert.\n *\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n * a contract, executing them in the right order is up to the developer or operator.\n *\n * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n *\n * Emits an {Initialized} event.\n */\n modifier reinitializer(uint64 version) {\n // solhint-disable-next-line var-name-mixedcase\n InitializableStorage storage $ = _getInitializableStorage();\n\n if ($._initializing || $._initialized >= version) {\n revert InvalidInitialization();\n }\n $._initialized = version;\n $._initializing = true;\n _;\n $._initializing = false;\n emit Initialized(version);\n }\n\n /**\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\n */\n modifier onlyInitializing() {\n _checkInitializing();\n _;\n }\n\n /**\n * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\n */\n function _checkInitializing() internal view virtual {\n if (!_isInitializing()) {\n revert NotInitializing();\n }\n }\n\n /**\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n * through proxies.\n *\n * Emits an {Initialized} event the first time it is successfully executed.\n */\n function _disableInitializers() internal virtual {\n // solhint-disable-next-line var-name-mixedcase\n InitializableStorage storage $ = _getInitializableStorage();\n\n if ($._initializing) {\n revert InvalidInitialization();\n }\n if ($._initialized != type(uint64).max) {\n $._initialized = type(uint64).max;\n emit Initialized(type(uint64).max);\n }\n }\n\n /**\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\n */\n function _getInitializedVersion() internal view returns (uint64) {\n return _getInitializableStorage()._initialized;\n }\n\n /**\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n */\n function _isInitializing() internal view returns (bool) {\n return _getInitializableStorage()._initializing;\n }\n\n /**\n * @dev Pointer to storage slot. Allows integrators to override it with a custom storage location.\n *\n * NOTE: Consider following the ERC-7201 formula to derive storage locations.\n */\n function _initializableStorageSlot() internal pure virtual returns (bytes32) {\n return INITIALIZABLE_STORAGE;\n }\n\n /**\n * @dev Returns a pointer to the storage namespace.\n */\n // solhint-disable-next-line var-name-mixedcase\n function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\n bytes32 slot = _initializableStorageSlot();\n assembly {\n $.slot := slot\n }\n }\n}\n"},"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (proxy/utils/UUPSUpgradeable.sol)\n\npragma solidity ^0.8.22;\n\nimport {IERC1822Proxiable} from \"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\";\nimport {ERC1967Utils} from \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\";\nimport {Initializable} from \"./Initializable.sol\";\n\n/**\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n *\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n * `UUPSUpgradeable` with a custom implementation of upgrades.\n *\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\n */\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address private immutable __self = address(this);\n\n /**\n * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\n * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\n * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\n * If the getter returns `\"5.0.0\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\n * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\n * during an upgrade.\n */\n string public constant UPGRADE_INTERFACE_VERSION = \"5.0.0\";\n\n /**\n * @dev The call is from an unauthorized context.\n */\n error UUPSUnauthorizedCallContext();\n\n /**\n * @dev The storage `slot` is unsupported as a UUID.\n */\n error UUPSUnsupportedProxiableUUID(bytes32 slot);\n\n /**\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n * a proxy contract with an implementation (as defined in ERC-1967) pointing to self. This should only be the case\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n * function through ERC-1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n * fail.\n */\n modifier onlyProxy() {\n _checkProxy();\n _;\n }\n\n /**\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n * callable on the implementing contract but not through proxies.\n */\n modifier notDelegated() {\n _checkNotDelegated();\n _;\n }\n\n function __UUPSUpgradeable_init() internal onlyInitializing {\n }\n\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\n */\n function proxiableUUID() external view virtual notDelegated returns (bytes32) {\n return ERC1967Utils.IMPLEMENTATION_SLOT;\n }\n\n /**\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n * encoded in `data`.\n *\n * Calls {_authorizeUpgrade}.\n *\n * Emits an {Upgraded} event.\n *\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\n */\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\n _authorizeUpgrade(newImplementation);\n _upgradeToAndCallUUPS(newImplementation, data);\n }\n\n /**\n * @dev Reverts if the execution is not performed via delegatecall or the execution\n * context is not of a proxy with an ERC-1967 compliant implementation pointing to self.\n */\n function _checkProxy() internal view virtual {\n if (\n address(this) == __self || // Must be called through delegatecall\n ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\n ) {\n revert UUPSUnauthorizedCallContext();\n }\n }\n\n /**\n * @dev Reverts if the execution is performed via delegatecall.\n * See {notDelegated}.\n */\n function _checkNotDelegated() internal view virtual {\n if (address(this) != __self) {\n // Must not be called through delegatecall\n revert UUPSUnauthorizedCallContext();\n }\n }\n\n /**\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n * {upgradeToAndCall}.\n *\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n *\n * ```solidity\n * function _authorizeUpgrade(address) internal onlyOwner {}\n * ```\n */\n function _authorizeUpgrade(address newImplementation) internal virtual;\n\n /**\n * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\n *\n * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\n * is expected to be the implementation slot in ERC-1967.\n *\n * Emits an {IERC1967-Upgraded} event.\n */\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\n revert UUPSUnsupportedProxiableUUID(slot);\n }\n ERC1967Utils.upgradeToAndCall(newImplementation, data);\n } catch {\n // The implementation is not UUPS\n revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\n }\n }\n}\n"},"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport {IERC20Metadata} from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport {ContextUpgradeable} from \"../../utils/ContextUpgradeable.sol\";\nimport {IERC20Errors} from \"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\";\nimport {Initializable} from \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC-20\n * applications.\n */\nabstract contract ERC20Upgradeable is Initializable, ContextUpgradeable, IERC20, IERC20Metadata, IERC20Errors {\n /// @custom:storage-location erc7201:openzeppelin.storage.ERC20\n struct ERC20Storage {\n mapping(address account => uint256) _balances;\n\n mapping(address account => mapping(address spender => uint256)) _allowances;\n\n uint256 _totalSupply;\n\n string _name;\n string _symbol;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.ERC20\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant ERC20StorageLocation = 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00;\n\n function _getERC20Storage() private pure returns (ERC20Storage storage $) {\n assembly {\n $.slot := ERC20StorageLocation\n }\n }\n\n /**\n * @dev Sets the values for {name} and {symbol}.\n *\n * Both values are immutable: they can only be set once during construction.\n */\n function __ERC20_init(string memory name_, string memory symbol_) internal onlyInitializing {\n __ERC20_init_unchained(name_, symbol_);\n }\n\n function __ERC20_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\n ERC20Storage storage $ = _getERC20Storage();\n $._name = name_;\n $._symbol = symbol_;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view virtual returns (string memory) {\n ERC20Storage storage $ = _getERC20Storage();\n return $._name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view virtual returns (string memory) {\n ERC20Storage storage $ = _getERC20Storage();\n return $._symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the default value returned by this function, unless\n * it's overridden.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view virtual returns (uint8) {\n return 18;\n }\n\n /// @inheritdoc IERC20\n function totalSupply() public view virtual returns (uint256) {\n ERC20Storage storage $ = _getERC20Storage();\n return $._totalSupply;\n }\n\n /// @inheritdoc IERC20\n function balanceOf(address account) public view virtual returns (uint256) {\n ERC20Storage storage $ = _getERC20Storage();\n return $._balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `value`.\n */\n function transfer(address to, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _transfer(owner, to, value);\n return true;\n }\n\n /// @inheritdoc IERC20\n function allowance(address owner, address spender) public view virtual returns (uint256) {\n ERC20Storage storage $ = _getERC20Storage();\n return $._allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, value);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Skips emitting an {Approval} event indicating an allowance update. This is not\n * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `value`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `value`.\n */\n function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\n address spender = _msgSender();\n _spendAllowance(from, spender, value);\n _transfer(from, to, value);\n return true;\n }\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _transfer(address from, address to, uint256 value) internal {\n if (from == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n if (to == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(from, to, value);\n }\n\n /**\n * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n * this function.\n *\n * Emits a {Transfer} event.\n */\n function _update(address from, address to, uint256 value) internal virtual {\n ERC20Storage storage $ = _getERC20Storage();\n if (from == address(0)) {\n // Overflow check required: The rest of the code assumes that totalSupply never overflows\n $._totalSupply += value;\n } else {\n uint256 fromBalance = $._balances[from];\n if (fromBalance < value) {\n revert ERC20InsufficientBalance(from, fromBalance, value);\n }\n unchecked {\n // Overflow not possible: value <= fromBalance <= totalSupply.\n $._balances[from] = fromBalance - value;\n }\n }\n\n if (to == address(0)) {\n unchecked {\n // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\n $._totalSupply -= value;\n }\n } else {\n unchecked {\n // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\n $._balances[to] += value;\n }\n }\n\n emit Transfer(from, to, value);\n }\n\n /**\n * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n * Relies on the `_update` mechanism\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _mint(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(address(0), account, value);\n }\n\n /**\n * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n * Relies on the `_update` mechanism.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead\n */\n function _burn(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n _update(account, address(0), value);\n }\n\n /**\n * @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n *\n * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n */\n function _approve(address owner, address spender, uint256 value) internal {\n _approve(owner, spender, value, true);\n }\n\n /**\n * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n *\n * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n * `Approval` event during `transferFrom` operations.\n *\n * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n * true using the following override:\n *\n * ```solidity\n * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n * super._approve(owner, spender, value, true);\n * }\n * ```\n *\n * Requirements are the same as {_approve}.\n */\n function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\n ERC20Storage storage $ = _getERC20Storage();\n if (owner == address(0)) {\n revert ERC20InvalidApprover(address(0));\n }\n if (spender == address(0)) {\n revert ERC20InvalidSpender(address(0));\n }\n $._allowances[owner][spender] = value;\n if (emitEvent) {\n emit Approval(owner, spender, value);\n }\n }\n\n /**\n * @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n *\n * Does not update the allowance value in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Does not emit an {Approval} event.\n */\n function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\n uint256 currentAllowance = allowance(owner, spender);\n if (currentAllowance < type(uint256).max) {\n if (currentAllowance < value) {\n revert ERC20InsufficientAllowance(spender, currentAllowance, value);\n }\n unchecked {\n _approve(owner, spender, currentAllowance - value, false);\n }\n }\n }\n}\n"},"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n function __Context_init() internal onlyInitializing {\n }\n\n function __Context_init_unchained() internal onlyInitializing {\n }\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n"},"node_modules/@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/Pausable.sol)\n\npragma solidity ^0.8.20;\n\nimport {ContextUpgradeable} from \"../utils/ContextUpgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which allows children to implement an emergency stop\n * mechanism that can be triggered by an authorized account.\n *\n * This module is used through inheritance. It will make available the\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n * the functions of your contract. Note that they will not be pausable by\n * simply including this module, only once the modifiers are put in place.\n */\nabstract contract PausableUpgradeable is Initializable, ContextUpgradeable {\n /// @custom:storage-location erc7201:openzeppelin.storage.Pausable\n struct PausableStorage {\n bool _paused;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.Pausable\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant PausableStorageLocation = 0xcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300;\n\n function _getPausableStorage() private pure returns (PausableStorage storage $) {\n assembly {\n $.slot := PausableStorageLocation\n }\n }\n\n /**\n * @dev Emitted when the pause is triggered by `account`.\n */\n event Paused(address account);\n\n /**\n * @dev Emitted when the pause is lifted by `account`.\n */\n event Unpaused(address account);\n\n /**\n * @dev The operation failed because the contract is paused.\n */\n error EnforcedPause();\n\n /**\n * @dev The operation failed because the contract is not paused.\n */\n error ExpectedPause();\n\n /**\n * @dev Modifier to make a function callable only when the contract is not paused.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n modifier whenNotPaused() {\n _requireNotPaused();\n _;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is paused.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n modifier whenPaused() {\n _requirePaused();\n _;\n }\n\n function __Pausable_init() internal onlyInitializing {\n }\n\n function __Pausable_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev Returns true if the contract is paused, and false otherwise.\n */\n function paused() public view virtual returns (bool) {\n PausableStorage storage $ = _getPausableStorage();\n return $._paused;\n }\n\n /**\n * @dev Throws if the contract is paused.\n */\n function _requireNotPaused() internal view virtual {\n if (paused()) {\n revert EnforcedPause();\n }\n }\n\n /**\n * @dev Throws if the contract is not paused.\n */\n function _requirePaused() internal view virtual {\n if (!paused()) {\n revert ExpectedPause();\n }\n }\n\n /**\n * @dev Triggers stopped state.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n function _pause() internal virtual whenNotPaused {\n PausableStorage storage $ = _getPausableStorage();\n $._paused = true;\n emit Paused(_msgSender());\n }\n\n /**\n * @dev Returns to normal state.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n function _unpause() internal virtual whenPaused {\n PausableStorage storage $ = _getPausableStorage();\n $._paused = false;\n emit Unpaused(_msgSender());\n }\n}\n"},"node_modules/@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/ReentrancyGuard.sol)\n\npragma solidity ^0.8.20;\nimport {Initializable} from \"../proxy/utils/Initializable.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 EIP-1153 (transient storage) is available on the chain you're deploying at,\n * consider using {ReentrancyGuardTransient} instead.\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 ReentrancyGuardUpgradeable is Initializable {\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 /// @custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard\n struct ReentrancyGuardStorage {\n uint256 _status;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.ReentrancyGuard\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant ReentrancyGuardStorageLocation = 0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00;\n\n function _getReentrancyGuardStorage() private pure returns (ReentrancyGuardStorage storage $) {\n assembly {\n $.slot := ReentrancyGuardStorageLocation\n }\n }\n\n /**\n * @dev Unauthorized reentrant call.\n */\n error ReentrancyGuardReentrantCall();\n\n function __ReentrancyGuard_init() internal onlyInitializing {\n __ReentrancyGuard_init_unchained();\n }\n\n function __ReentrancyGuard_init_unchained() internal onlyInitializing {\n ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\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 making it call a\n * `private` function that does the actual work.\n */\n modifier nonReentrant() {\n _nonReentrantBefore();\n _;\n _nonReentrantAfter();\n }\n\n function _nonReentrantBefore() private {\n ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\n // On the first call to nonReentrant, _status will be NOT_ENTERED\n if ($._status == ENTERED) {\n revert ReentrancyGuardReentrantCall();\n }\n\n // Any calls to nonReentrant after this point will fail\n $._status = ENTERED;\n }\n\n function _nonReentrantAfter() private {\n ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\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 /**\n * @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n * `nonReentrant` function in the call stack.\n */\n function _reentrancyGuardEntered() internal view returns (bool) {\n ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\n return $._status == ENTERED;\n }\n}\n"}},"settings":{"remappings":["@ensdomains/=node_modules/@ensdomains/","@openzeppelin/=node_modules/@openzeppelin/","forge-std/=lib/forge-std/src/","hardhat/=node_modules/hardhat/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"contracts/interfaces/ILending.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"contracts/interfaces/IPriceFeed.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"contracts/interfaces/IUSDY.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"contracts/interfaces/IYTLPToken.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"contracts/interfaces/IYTPoolManager.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"contracts/interfaces/IYTPriceFeed.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"contracts/interfaces/IYTToken.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"contracts/interfaces/IYTVault.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"contracts/vault/YTAssetFactory.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"contracts/vault/YTAssetVault.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"contracts/ytLending/Configurator.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"contracts/ytLending/ConfiguratorStorage.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"contracts/ytLending/Lending.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"contracts/ytLending/LendingConfiguration.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"contracts/ytLending/LendingFactory.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"contracts/ytLending/LendingMath.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"contracts/ytLending/LendingStorage.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"contracts/ytLp/core/YTPoolManager.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"contracts/ytLp/core/YTPriceFeed.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"contracts/ytLp/core/YTRewardRouter.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"contracts/ytLp/core/YTVault.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"contracts/ytLp/tokens/USDY.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"contracts/ytLp/tokens/WUSD.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"contracts/ytLp/tokens/YTLPToken.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"node_modules/@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"node_modules/@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"node_modules/@openzeppelin/contracts/access/Ownable.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"node_modules/@openzeppelin/contracts/proxy/Proxy.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"node_modules/@openzeppelin/contracts/utils/Address.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"node_modules/@openzeppelin/contracts/utils/Errors.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]}},"evmVersion":"prague","viaIR":true,"libraries":{}},"allowPaths":["/Users/kiro/Documents/item/ytLp","/Users/kiro/Documents/item/ytLp/lib","/Users/kiro/Documents/item/ytLp/node_modules"],"basePath":"/Users/kiro/Documents/item/ytLp","includePaths":["/Users/kiro/Documents/item/ytLp"]},"output":{"contracts":{"contracts/interfaces/ILending.sol":{"ILending":{"abi":[{"type":"function","name":"absorb","inputs":[{"name":"borrower","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"absorbMultiple","inputs":[{"name":"absorber","type":"address","internalType":"address"},{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"borrow","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"borrowBalanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"buyCollateral","inputs":[{"name":"asset","type":"address","internalType":"address"},{"name":"minAmount","type":"uint256","internalType":"uint256"},{"name":"baseAmount","type":"uint256","internalType":"uint256"},{"name":"recipient","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getBalance","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"getBorrowRate","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getCollateral","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"asset","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCollateralReserves","inputs":[{"name":"asset","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getReserves","inputs":[],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"getSupplyRate","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getUtilization","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isLiquidatable","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"quoteCollateral","inputs":[{"name":"asset","type":"address","internalType":"address"},{"name":"baseAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"supply","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supplyBalanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"supplyCollateral","inputs":[{"name":"asset","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawCollateral","inputs":[{"name":"asset","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawReserves","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AbsorbCollateral","inputs":[{"name":"absorber","type":"address","indexed":true,"internalType":"address"},{"name":"borrower","type":"address","indexed":true,"internalType":"address"},{"name":"asset","type":"address","indexed":true,"internalType":"address"},{"name":"collateralAbsorbed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"usdValue","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"AbsorbDebt","inputs":[{"name":"absorber","type":"address","indexed":true,"internalType":"address"},{"name":"borrower","type":"address","indexed":true,"internalType":"address"},{"name":"basePaidOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"usdValue","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BuyCollateral","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"asset","type":"address","indexed":true,"internalType":"address"},{"name":"baseAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"collateralAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Supply","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"dst","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SupplyCollateral","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"dst","type":"address","indexed":true,"internalType":"address"},{"name":"asset","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Withdraw","inputs":[{"name":"src","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WithdrawCollateral","inputs":[{"name":"src","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"asset","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WithdrawReserves","inputs":[{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"BorrowTooSmall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[]},{"type":"error","name":"InsufficientCollateral","inputs":[]},{"type":"error","name":"InsufficientReserves","inputs":[]},{"type":"error","name":"InvalidBorrowCollateralFactor","inputs":[]},{"type":"error","name":"InvalidLiquidateCollateralFactor","inputs":[]},{"type":"error","name":"InvalidLiquidationFactor","inputs":[]},{"type":"error","name":"NotForSale","inputs":[]},{"type":"error","name":"NotLiquidatable","inputs":[]},{"type":"error","name":"SupplyCapExceeded","inputs":[]},{"type":"error","name":"Unauthorized","inputs":[]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"BorrowTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientCollateral\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientReserves\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBorrowCollateralFactor\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLiquidateCollateralFactor\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLiquidationFactor\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotForSale\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SupplyCapExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"absorber\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateralAbsorbed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"usdValue\",\"type\":\"uint256\"}],\"name\":\"AbsorbCollateral\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"absorber\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"basePaidOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"usdValue\",\"type\":\"uint256\"}],\"name\":\"AbsorbDebt\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateralAmount\",\"type\":\"uint256\"}],\"name\":\"BuyCollateral\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Supply\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SupplyCollateral\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"WithdrawCollateral\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"WithdrawReserves\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"}],\"name\":\"absorb\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"absorber\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"absorbMultiple\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"buyCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBorrowRate\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getCollateral\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getCollateralReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupplyRate\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUtilization\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isLiquidatable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"}],\"name\":\"quoteCollateral\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"supplyBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"supplyCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawReserves\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"ILending\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"\\u501f\\u8d37\\u6c60\\u6838\\u5fc3\\u63a5\\u53e3\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/ILending.sol\":\"ILending\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"contracts/interfaces/ILending.sol\":{\"keccak256\":\"0xd355b033318695723c227bfe24e298518046a0225594d14e90aec56311ff0873\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://32a34bad59749eceac7b2d7fe45e1f2e3b03d36ad518e977ea8f39bb63cab950\",\"dweb:/ipfs/QmdUvXnU75hTPXGoGWb1XpA64CNHoQ2Xso6EH1TKkDgLZs\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"absorb(address)":"ba1b2447","absorbMultiple(address,address[])":"74485e78","borrow(uint256)":"c5ebeaec","borrowBalanceOf(address)":"374c49b4","buyCollateral(address,uint256,uint256,address)":"e4e6e779","getBalance(address)":"f8b2cb4f","getBorrowRate()":"ba1c5e80","getCollateral(address,address)":"52226ef0","getCollateralReserves(address)":"9ff567f8","getReserves()":"0902f1ac","getSupplyRate()":"84bdc9a8","getUtilization()":"7eb71131","isLiquidatable(address)":"042e02cf","quoteCollateral(address,uint256)":"7ac88ed1","supply(uint256)":"35403023","supplyBalanceOf(address)":"93889f06","supplyCollateral(address,uint256)":"d2a8607b","withdraw(uint256)":"2e1a7d4d","withdrawCollateral(address,uint256)":"350c35e9","withdrawReserves(address,uint256)":"e478795d"}}}},"contracts/interfaces/IPriceFeed.sol":{"IPriceFeed":{"abi":[{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"getPrice","inputs":[],"outputs":[{"name":"price","type":"uint256","internalType":"uint256"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"IPriceFeed\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"\\u4ef7\\u683c\\u9884\\u8a00\\u673a\\u63a5\\u53e3\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IPriceFeed.sol\":\"IPriceFeed\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IPriceFeed.sol\":{\"keccak256\":\"0x70d3c43bb10de1881f27e2ae4cfdc7d9fe88b49bff734a570c01c8f40a75ede8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce0ae7615d33b4d3af325a392b862dcc8a5136b89b674c9bb9c1f644390d67b4\",\"dweb:/ipfs/QmWAbyrMQkF4e8YMRA8JUnBbHcgwPLXjBJjTdfXQ2ekJPm\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"decimals()":"313ce567","getPrice()":"98d5fdca"}}}},"contracts/interfaces/IUSDY.sol":{"IUSDY":{"abi":[{"type":"function","name":"burn","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mint","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IUSDY.sol\":\"IUSDY\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IUSDY.sol\":{\"keccak256\":\"0xaade47070265f223011892bc2430ecb819edb10b1a46e41ea2c69f3d8cc84816\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a7501875c15baa98120e7b5607953b1874e2a0e80ac521e97d2bc834d590b6ef\",\"dweb:/ipfs/QmYJ8CkJV3XgPjGUBx6EKV4mgEUqRHeZGna193MrThpkjc\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"burn(address,uint256)":"9dc29fac","mint(address,uint256)":"40c10f19","totalSupply()":"18160ddd"}}}},"contracts/interfaces/IYTLPToken.sol":{"IYTLPToken":{"abi":[{"type":"function","name":"burn","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mint","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IYTLPToken.sol\":\"IYTLPToken\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IYTLPToken.sol\":{\"keccak256\":\"0xd45ede40a52600b47b7a3fb2851f40e57ee60bf6ac4b64a2f534a8c2c09fc4ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://751553bdd966010f2f8f11ae6c6abcff57b8671562dbac516dd89dc5042a1352\",\"dweb:/ipfs/QmfMeQqUTcEQJJCgiT54SFiXQ3dkojrZkqQjkhR9QDBXDo\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"burn(address,uint256)":"9dc29fac","mint(address,uint256)":"40c10f19"}}}},"contracts/interfaces/IYTPoolManager.sol":{"IYTPoolManager":{"abi":[{"type":"function","name":"addLiquidityForAccount","inputs":[{"name":"_fundingAccount","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"},{"name":"_token","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_minUsdy","type":"uint256","internalType":"uint256"},{"name":"_minYtLP","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getPrice","inputs":[{"name":"_maximise","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"removeLiquidityForAccount","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_tokenOut","type":"address","internalType":"address"},{"name":"_ytLPAmount","type":"uint256","internalType":"uint256"},{"name":"_minOut","type":"uint256","internalType":"uint256"},{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_fundingAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minUsdy\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minYtLP\",\"type\":\"uint256\"}],\"name\":\"addLiquidityForAccount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_maximise\",\"type\":\"bool\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_ytLPAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"removeLiquidityForAccount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IYTPoolManager.sol\":\"IYTPoolManager\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IYTPoolManager.sol\":{\"keccak256\":\"0x41073e177c27df96724e618d5bd1077cd1413ce415770818c0b7a0716677d8a7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e114a1f3bd39b837f7f9a19a06c65a3ce0ab80788912777479d5f540a157ab9\",\"dweb:/ipfs/QmXrSiZ3jjbzNtxtq5mACxrkWVAkA22MZYs4QcZ6Eqt4BC\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addLiquidityForAccount(address,address,address,uint256,uint256,uint256)":"17eb2a15","getPrice(bool)":"e245b5af","removeLiquidityForAccount(address,address,uint256,uint256,address)":"71d597ad"}}}},"contracts/interfaces/IYTPriceFeed.sol":{"IYTPriceFeed":{"abi":[{"type":"function","name":"getPrice","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_maximise","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_maximise\",\"type\":\"bool\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IYTPriceFeed.sol\":\"IYTPriceFeed\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IYTPriceFeed.sol\":{\"keccak256\":\"0xf6ef53e156a8b9ca9d7dbdd3e48846285649e57cfaee4762293fae944d48779e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5d361a60315543c8137ab2ddb31676bf017f49739760eb7d97637886ba134a9d\",\"dweb:/ipfs/QmQYPz1FmCWwk1WCt5J46eSoSST4mHV4RiRwNfqV8CLMCT\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getPrice(address,bool)":"76d69760"}}}},"contracts/interfaces/IYTToken.sol":{"IYTToken":{"abi":[{"type":"function","name":"wusdPrice","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"ytPrice","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"wusdPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ytPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IYTToken.sol\":\"IYTToken\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IYTToken.sol\":{\"keccak256\":\"0x878548d078048386430ce746d410f532280526f0c7a91c4d027c98ec4a9970be\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://253337575d8d268cd5ff5a10a5b794b901a697a2984fa9dc2c590513b4a402f6\",\"dweb:/ipfs/QmeBtCbpJeJx2VkCnSH8yq84EvPbSf6sUbHWzRLvMXjU8e\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"wusdPrice()":"61b4fbde","ytPrice()":"adcc40cb"}}}},"contracts/interfaces/IYTVault.sol":{"IYTVault":{"abi":[{"type":"function","name":"buyUSDY","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getMaxPrice","inputs":[{"name":"_token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMinPrice","inputs":[{"name":"_token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPoolValue","inputs":[{"name":"_maximise","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPrice","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_maximise","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRedemptionFeeBasisPoints","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_usdyAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getSwapFeeBasisPoints","inputs":[{"name":"_tokenIn","type":"address","internalType":"address"},{"name":"_tokenOut","type":"address","internalType":"address"},{"name":"_usdyAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"sellUSDY","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"swap","inputs":[{"name":"_tokenIn","type":"address","internalType":"address"},{"name":"_tokenOut","type":"address","internalType":"address"},{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"buyUSDY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"getMaxPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"getMinPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_maximise\",\"type\":\"bool\"}],\"name\":\"getPoolValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_maximise\",\"type\":\"bool\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usdyAmount\",\"type\":\"uint256\"}],\"name\":\"getRedemptionFeeBasisPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usdyAmount\",\"type\":\"uint256\"}],\"name\":\"getSwapFeeBasisPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"sellUSDY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tokenOut\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IYTVault.sol\":\"IYTVault\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IYTVault.sol\":{\"keccak256\":\"0xd0d67c7560f2c46466a2575b3da8a3253bc955c1023abaebd29e2f7ec1cf0b42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c830f6a2e31c80a1c74570613baf4e653eca1425de20a2869ff38fc77fae3800\",\"dweb:/ipfs/QmbLR7bMSyLqAMMuHMDC8y9B7e4f8tDGpmmS8RyrvSk12z\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"buyUSDY(address,address)":"2efc7660","getMaxPrice(address)":"e124e6d2","getMinPrice(address)":"81a612d6","getPoolValue(bool)":"bab3e9e6","getPrice(address,bool)":"76d69760","getRedemptionFeeBasisPoints(address,uint256)":"802f9270","getSwapFeeBasisPoints(address,address,uint256)":"da133816","sellUSDY(address,address)":"3d332583","swap(address,address,address)":"93316212"}}}},"contracts/vault/YTAssetFactory.sol":{"YTAssetFactory":{"abi":[{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"allVaults","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"createVault","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_manager","type":"address","internalType":"address"},{"name":"_hardCap","type":"uint256","internalType":"uint256"},{"name":"_wusd","type":"address","internalType":"address"},{"name":"_redemptionTime","type":"uint256","internalType":"uint256"},{"name":"_initialWusdPrice","type":"uint256","internalType":"uint256"},{"name":"_initialYtPrice","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"vault","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"createVaultBatch","inputs":[{"name":"_names","type":"string[]","internalType":"string[]"},{"name":"_symbols","type":"string[]","internalType":"string[]"},{"name":"_managers","type":"address[]","internalType":"address[]"},{"name":"_hardCaps","type":"uint256[]","internalType":"uint256[]"},{"name":"_wusd","type":"address","internalType":"address"},{"name":"_redemptionTimes","type":"uint256[]","internalType":"uint256[]"},{"name":"_initialWusdPrices","type":"uint256[]","internalType":"uint256[]"},{"name":"_initialYtPrices","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"vaults","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"defaultHardCap","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAllVaults","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getVaultCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getVaultInfo","inputs":[{"name":"_vault","type":"address","internalType":"address"}],"outputs":[{"name":"exists","type":"bool","internalType":"bool"},{"name":"totalAssets","type":"uint256","internalType":"uint256"},{"name":"idleAssets","type":"uint256","internalType":"uint256"},{"name":"managedAssets","type":"uint256","internalType":"uint256"},{"name":"totalSupply","type":"uint256","internalType":"uint256"},{"name":"hardCap","type":"uint256","internalType":"uint256"},{"name":"wusdPrice","type":"uint256","internalType":"uint256"},{"name":"ytPrice","type":"uint256","internalType":"uint256"},{"name":"nextRedemptionTime","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getVaults","inputs":[{"name":"_start","type":"uint256","internalType":"uint256"},{"name":"_end","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"vaults","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_vaultImplementation","type":"address","internalType":"address"},{"name":"_defaultHardCap","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isVault","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pauseVault","inputs":[{"name":"_vault","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pauseVaultBatch","inputs":[{"name":"_vaults","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultHardCap","inputs":[{"name":"_defaultHardCap","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setHardCap","inputs":[{"name":"_vault","type":"address","internalType":"address"},{"name":"_hardCap","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setHardCapBatch","inputs":[{"name":"_vaults","type":"address[]","internalType":"address[]"},{"name":"_hardCaps","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setVaultImplementation","inputs":[{"name":"_newImplementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setVaultManager","inputs":[{"name":"_vault","type":"address","internalType":"address"},{"name":"_manager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setVaultNextRedemptionTime","inputs":[{"name":"_vault","type":"address","internalType":"address"},{"name":"_nextRedemptionTime","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setVaultNextRedemptionTimeBatch","inputs":[{"name":"_vaults","type":"address[]","internalType":"address[]"},{"name":"_nextRedemptionTime","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpauseVault","inputs":[{"name":"_vault","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpauseVaultBatch","inputs":[{"name":"_vaults","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateVaultPrices","inputs":[{"name":"_vault","type":"address","internalType":"address"},{"name":"_wusdPrice","type":"uint256","internalType":"uint256"},{"name":"_ytPrice","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateVaultPricesBatch","inputs":[{"name":"_vaults","type":"address[]","internalType":"address[]"},{"name":"_wusdPrices","type":"uint256[]","internalType":"uint256[]"},{"name":"_ytPrices","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"upgradeVault","inputs":[{"name":"_vault","type":"address","internalType":"address"},{"name":"_newImplementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeVaultBatch","inputs":[{"name":"_vaults","type":"address[]","internalType":"address[]"},{"name":"_newImplementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vaultImplementation","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"DefaultHardCapSet","inputs":[{"name":"newDefaultHardCap","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"HardCapSet","inputs":[{"name":"vault","type":"address","indexed":true,"internalType":"address"},{"name":"newHardCap","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"NextRedemptionTimeSet","inputs":[{"name":"vault","type":"address","indexed":true,"internalType":"address"},{"name":"redemptionTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PricesUpdated","inputs":[{"name":"vault","type":"address","indexed":true,"internalType":"address"},{"name":"wusdPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ytPrice","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"VaultCreated","inputs":[{"name":"vault","type":"address","indexed":true,"internalType":"address"},{"name":"manager","type":"address","indexed":true,"internalType":"address"},{"name":"name","type":"string","indexed":false,"internalType":"string"},{"name":"symbol","type":"string","indexed":false,"internalType":"string"},{"name":"hardCap","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"VaultImplementationUpdated","inputs":[{"name":"newImplementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InvalidAddress","inputs":[]},{"type":"error","name":"InvalidHardCap","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"VaultNotExists","inputs":[]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidHardCap\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultNotExists\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newDefaultHardCap\",\"type\":\"uint256\"}],\"name\":\"DefaultHardCapSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newHardCap\",\"type\":\"uint256\"}],\"name\":\"HardCapSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"redemptionTime\",\"type\":\"uint256\"}],\"name\":\"NextRedemptionTimeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wusdPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ytPrice\",\"type\":\"uint256\"}],\"name\":\"PricesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"hardCap\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"VaultCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"VaultImplementationUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allVaults\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_hardCap\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_wusd\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_redemptionTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_initialWusdPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_initialYtPrice\",\"type\":\"uint256\"}],\"name\":\"createVault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"_names\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"_symbols\",\"type\":\"string[]\"},{\"internalType\":\"address[]\",\"name\":\"_managers\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_hardCaps\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"_wusd\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_redemptionTimes\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_initialWusdPrices\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_initialYtPrices\",\"type\":\"uint256[]\"}],\"name\":\"createVaultBatch\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"vaults\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultHardCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllVaults\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVaultCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vault\",\"type\":\"address\"}],\"name\":\"getVaultInfo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"totalAssets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"idleAssets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"managedAssets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"hardCap\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wusdPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ytPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nextRedemptionTime\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_end\",\"type\":\"uint256\"}],\"name\":\"getVaults\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"vaults\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vaultImplementation\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_defaultHardCap\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isVault\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vault\",\"type\":\"address\"}],\"name\":\"pauseVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_vaults\",\"type\":\"address[]\"}],\"name\":\"pauseVaultBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_defaultHardCap\",\"type\":\"uint256\"}],\"name\":\"setDefaultHardCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vault\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_hardCap\",\"type\":\"uint256\"}],\"name\":\"setHardCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_vaults\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_hardCaps\",\"type\":\"uint256[]\"}],\"name\":\"setHardCapBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newImplementation\",\"type\":\"address\"}],\"name\":\"setVaultImplementation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vault\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_manager\",\"type\":\"address\"}],\"name\":\"setVaultManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vault\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_nextRedemptionTime\",\"type\":\"uint256\"}],\"name\":\"setVaultNextRedemptionTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_vaults\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"_nextRedemptionTime\",\"type\":\"uint256\"}],\"name\":\"setVaultNextRedemptionTimeBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vault\",\"type\":\"address\"}],\"name\":\"unpauseVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_vaults\",\"type\":\"address[]\"}],\"name\":\"unpauseVaultBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vault\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_wusdPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ytPrice\",\"type\":\"uint256\"}],\"name\":\"updateVaultPrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_vaults\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_wusdPrices\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_ytPrices\",\"type\":\"uint256[]\"}],\"name\":\"updateVaultPricesBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vault\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_vaults\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"_newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeVaultBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vaultImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"UUPS\\u53ef\\u5347\\u7ea7\\u5408\\u7ea6\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"createVault(string,string,address,uint256,address,uint256,uint256,uint256)\":{\"params\":{\"_hardCap\":\"\\u786c\\u9876\\u9650\\u5236\\uff080\\u8868\\u793a\\u4f7f\\u7528\\u9ed8\\u8ba4\\u503c\\uff09\",\"_initialWusdPrice\":\"\\u521d\\u59cbWUSD\\u4ef7\\u683c\\uff08\\u7cbe\\u5ea61e30\\uff0c\\u4f200\\u5219\\u4f7f\\u7528\\u9ed8\\u8ba4\\u503c1.0\\uff09\",\"_initialYtPrice\":\"\\u521d\\u59cbYT\\u4ef7\\u683c\\uff08\\u7cbe\\u5ea61e30\\uff0c\\u4f200\\u5219\\u4f7f\\u7528\\u9ed8\\u8ba4\\u503c1.0\\uff09\",\"_manager\":\"\\u7ba1\\u7406\\u5458\\u5730\\u5740\",\"_name\":\"YT\\u4ee3\\u5e01\\u540d\\u79f0\",\"_redemptionTime\":\"\\u8d4e\\u56de\\u65f6\\u95f4\\uff08Unix\\u65f6\\u95f4\\u6233\\uff09\",\"_symbol\":\"YT\\u4ee3\\u5e01\\u7b26\\u53f7\",\"_wusd\":\"WUSD\\u4ee3\\u5e01\\u5730\\u5740\\uff08\\u4f200\\u4f7f\\u7528\\u9ed8\\u8ba4\\u5730\\u5740\\uff09\"},\"returns\":{\"vault\":\"\\u65b0\\u521b\\u5efa\\u7684vault\\u5730\\u5740\"}},\"createVaultBatch(string[],string[],address[],uint256[],address,uint256[],uint256[],uint256[])\":{\"params\":{\"_hardCaps\":\"\\u786c\\u9876\\u6570\\u7ec4\",\"_initialWusdPrices\":\"\\u521d\\u59cbWUSD\\u4ef7\\u683c\\u6570\\u7ec4\\uff08\\u7cbe\\u5ea61e30\\uff09\",\"_initialYtPrices\":\"\\u521d\\u59cbYT\\u4ef7\\u683c\\u6570\\u7ec4\\uff08\\u7cbe\\u5ea61e30\\uff09\",\"_managers\":\"\\u7ba1\\u7406\\u5458\\u5730\\u5740\\u6570\\u7ec4\",\"_names\":\"YT\\u4ee3\\u5e01\\u540d\\u79f0\\u6570\\u7ec4\",\"_redemptionTimes\":\"\\u8d4e\\u56de\\u65f6\\u95f4\\u6570\\u7ec4\\uff08Unix\\u65f6\\u95f4\\u6233\\uff09\",\"_symbols\":\"YT\\u4ee3\\u5e01\\u7b26\\u53f7\\u6570\\u7ec4\",\"_wusd\":\"WUSD\\u4ee3\\u5e01\\u5730\\u5740\\uff08\\u4f200\\u4f7f\\u7528\\u9ed8\\u8ba4\\u5730\\u5740\\uff09\"},\"returns\":{\"vaults\":\"\\u521b\\u5efa\\u7684vault\\u5730\\u5740\\u6570\\u7ec4\"}},\"getVaultInfo(address)\":{\"params\":{\"_vault\":\"vault\\u5730\\u5740\"}},\"getVaults(uint256,uint256)\":{\"params\":{\"_end\":\"\\u7ed3\\u675f\\u7d22\\u5f15\\uff08\\u4e0d\\u5305\\u542b\\uff09\",\"_start\":\"\\u8d77\\u59cb\\u7d22\\u5f15\"}},\"initialize(address,uint256)\":{\"params\":{\"_defaultHardCap\":\"\\u9ed8\\u8ba4\\u786c\\u9876\\u503c\",\"_vaultImplementation\":\"YTAssetVault\\u5b9e\\u73b0\\u5408\\u7ea6\\u5730\\u5740\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pauseVault(address)\":{\"params\":{\"_vault\":\"vault\\u5730\\u5740\"}},\"pauseVaultBatch(address[])\":{\"params\":{\"_vaults\":\"vault\\u5730\\u5740\\u6570\\u7ec4\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setDefaultHardCap(uint256)\":{\"params\":{\"_defaultHardCap\":\"\\u65b0\\u7684\\u9ed8\\u8ba4\\u786c\\u9876\\u503c\"}},\"setHardCap(address,uint256)\":{\"params\":{\"_hardCap\":\"\\u65b0\\u7684\\u786c\\u9876\\u503c\",\"_vault\":\"vault\\u5730\\u5740\"}},\"setHardCapBatch(address[],uint256[])\":{\"params\":{\"_hardCaps\":\"\\u786c\\u9876\\u503c\\u6570\\u7ec4\",\"_vaults\":\"vault\\u5730\\u5740\\u6570\\u7ec4\"}},\"setVaultImplementation(address)\":{\"params\":{\"_newImplementation\":\"\\u65b0\\u7684\\u5b9e\\u73b0\\u5408\\u7ea6\\u5730\\u5740\"}},\"setVaultManager(address,address)\":{\"params\":{\"_manager\":\"\\u65b0\\u7ba1\\u7406\\u5458\\u5730\\u5740\",\"_vault\":\"vault\\u5730\\u5740\"}},\"setVaultNextRedemptionTime(address,uint256)\":{\"params\":{\"_nextRedemptionTime\":\"\\u8d4e\\u56de\\u65f6\\u95f4\\uff08Unix\\u65f6\\u95f4\\u6233\\uff09\",\"_vault\":\"vault\\u5730\\u5740\"}},\"setVaultNextRedemptionTimeBatch(address[],uint256)\":{\"params\":{\"_nextRedemptionTime\":\"\\u7edf\\u4e00\\u7684\\u8d4e\\u56de\\u65f6\\u95f4\",\"_vaults\":\"vault\\u5730\\u5740\\u6570\\u7ec4\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unpauseVault(address)\":{\"params\":{\"_vault\":\"vault\\u5730\\u5740\"}},\"unpauseVaultBatch(address[])\":{\"params\":{\"_vaults\":\"vault\\u5730\\u5740\\u6570\\u7ec4\"}},\"updateVaultPrices(address,uint256,uint256)\":{\"params\":{\"_vault\":\"vault\\u5730\\u5740\",\"_wusdPrice\":\"WUSD\\u4ef7\\u683c\\uff08\\u7cbe\\u5ea61e30\\uff09\",\"_ytPrice\":\"YT\\u4ef7\\u683c\\uff08\\u7cbe\\u5ea61e30\\uff09\"}},\"updateVaultPricesBatch(address[],uint256[],uint256[])\":{\"params\":{\"_vaults\":\"vault\\u5730\\u5740\\u6570\\u7ec4\",\"_wusdPrices\":\"WUSD\\u4ef7\\u683c\\u6570\\u7ec4\\uff08\\u7cbe\\u5ea61e30\\uff09\",\"_ytPrices\":\"YT\\u4ef7\\u683c\\u6570\\u7ec4\\uff08\\u7cbe\\u5ea61e30\\uff09\"}},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeVault(address,address)\":{\"params\":{\"_newImplementation\":\"\\u65b0\\u5b9e\\u73b0\\u5730\\u5740\",\"_vault\":\"vault\\u5730\\u5740\"}},\"upgradeVaultBatch(address[],address)\":{\"params\":{\"_newImplementation\":\"\\u65b0\\u5b9e\\u73b0\\u5730\\u5740\",\"_vaults\":\"vault\\u5730\\u5740\\u6570\\u7ec4\"}}},\"stateVariables\":{\"__gap\":{\"details\":\"\\u9884\\u7559\\u5b58\\u50a8\\u7a7a\\u95f4\\uff0c\\u7528\\u4e8e\\u672a\\u6765\\u5347\\u7ea7\\u65f6\\u6dfb\\u52a0\\u65b0\\u7684\\u72b6\\u6001\\u53d8\\u91cf 50\\u4e2aslot = 50 * 32 bytes = 1600 bytes\"}},\"title\":\"YTAssetFactory\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allVaults(uint256)\":{\"notice\":\"\\u6240\\u6709\\u521b\\u5efa\\u7684vault\\u5730\\u5740\\u5217\\u8868\"},\"createVault(string,string,address,uint256,address,uint256,uint256,uint256)\":{\"notice\":\"\\u521b\\u5efa\\u65b0\\u7684YTAssetVault\"},\"createVaultBatch(string[],string[],address[],uint256[],address,uint256[],uint256[],uint256[])\":{\"notice\":\"\\u6279\\u91cf\\u521b\\u5efavault\"},\"defaultHardCap()\":{\"notice\":\"\\u9ed8\\u8ba4\\u786c\\u9876\\u503c\\uff080\\u8868\\u793a\\u65e0\\u9650\\u5236\\uff09\"},\"getAllVaults()\":{\"notice\":\"\\u83b7\\u53d6\\u6240\\u6709vault\\u5730\\u5740\"},\"getVaultCount()\":{\"notice\":\"\\u83b7\\u53d6\\u6240\\u6709vault\\u6570\\u91cf\"},\"getVaultInfo(address)\":{\"notice\":\"\\u83b7\\u53d6vault\\u8be6\\u7ec6\\u4fe1\\u606f\"},\"getVaults(uint256,uint256)\":{\"notice\":\"\\u83b7\\u53d6\\u6307\\u5b9a\\u8303\\u56f4\\u7684vault\\u5730\\u5740\"},\"initialize(address,uint256)\":{\"notice\":\"\\u521d\\u59cb\\u5316\\u5de5\\u5382\"},\"isVault(address)\":{\"notice\":\"vault\\u5730\\u5740 => \\u662f\\u5426\\u5b58\\u5728\"},\"pauseVault(address)\":{\"notice\":\"\\u6682\\u505cvault\\uff08\\u7d27\\u6025\\u60c5\\u51b5\\uff09\"},\"pauseVaultBatch(address[])\":{\"notice\":\"\\u6279\\u91cf\\u6682\\u505cvaults\"},\"setDefaultHardCap(uint256)\":{\"notice\":\"\\u8bbe\\u7f6e\\u9ed8\\u8ba4\\u786c\\u9876\"},\"setHardCap(address,uint256)\":{\"notice\":\"\\u8bbe\\u7f6e\\u6307\\u5b9avault\\u7684\\u786c\\u9876\"},\"setHardCapBatch(address[],uint256[])\":{\"notice\":\"\\u6279\\u91cf\\u8bbe\\u7f6e\\u786c\\u9876\"},\"setVaultImplementation(address)\":{\"notice\":\"\\u66f4\\u65b0YTAssetVault\\u5b9e\\u73b0\\u5408\\u7ea6\"},\"setVaultManager(address,address)\":{\"notice\":\"\\u8bbe\\u7f6evault\\u7684\\u7ba1\\u7406\\u5458\"},\"setVaultNextRedemptionTime(address,uint256)\":{\"notice\":\"\\u8bbe\\u7f6evault\\u7684\\u4e0b\\u4e00\\u4e2a\\u8d4e\\u56de\\u65f6\\u95f4\"},\"setVaultNextRedemptionTimeBatch(address[],uint256)\":{\"notice\":\"\\u6279\\u91cf\\u8bbe\\u7f6e\\u8d4e\\u56de\\u65f6\\u95f4\"},\"unpauseVault(address)\":{\"notice\":\"\\u6062\\u590dvault\"},\"unpauseVaultBatch(address[])\":{\"notice\":\"\\u6279\\u91cf\\u6062\\u590dvaults\"},\"updateVaultPrices(address,uint256,uint256)\":{\"notice\":\"\\u66f4\\u65b0vault\\u4ef7\\u683c\"},\"updateVaultPricesBatch(address[],uint256[],uint256[])\":{\"notice\":\"\\u6279\\u91cf\\u66f4\\u65b0\\u4ef7\\u683c\"},\"upgradeVault(address,address)\":{\"notice\":\"\\u5347\\u7ea7\\u6307\\u5b9avault\"},\"upgradeVaultBatch(address[],address)\":{\"notice\":\"\\u6279\\u91cf\\u5347\\u7ea7vault\"},\"vaultImplementation()\":{\"notice\":\"YTAssetVault\\u5b9e\\u73b0\\u5408\\u7ea6\\u5730\\u5740\"}},\"notice\":\"\\u7528\\u4e8e\\u6279\\u91cf\\u521b\\u5efa\\u548c\\u7ba1\\u7406YT\\u8d44\\u4ea7\\u91d1\\u5e93\\u5408\\u7ea6\\u7684\\u5de5\\u5382\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/vault/YTAssetFactory.sol\":\"YTAssetFactory\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"contracts/vault/YTAssetFactory.sol\":{\"keccak256\":\"0x3ff83a85670e52b0bd42146d501164dcf3bb2f9233e729e0c1f9e96ae743ba38\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0c9445bce69babb69b18188fe2eafb17ff45c8c84d29b84bceee0963c71ba26\",\"dweb:/ipfs/QmYPbccoZfz3vJoNcZpiLCNMfTin4ga3aWZYh7Y27tTvbK\"]},\"contracts/vault/YTAssetVault.sol\":{\"keccak256\":\"0x33fa687de53b2b284f1dda632bbdd4f2b37b82f638dcdfeda04b68ba383337f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60e617369f96bb82c8e424597d538447c2f0a4f37517e917ae63a67e54489dab\",\"dweb:/ipfs/QmbbNxAYiFyKGd3P6nn5VHsuWXvy3rSbiDRSvyDmFHMUQR\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x574a7451e42724f7de29e2855c392a8a5020acd695169466a18459467d719d63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bc189f63b639ee173dd7b6fecc39baf7113bf161776aea22b34c57fdd1872ec\",\"dweb:/ipfs/QmZAf2VtjDLRULqjJkde6LNsxAg12tUqpPqgUQQZbAjgtZ\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xfcd09c2aa8cc3f93e12545454359f901965db312bc03833daf84de0c03e05022\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07701188648d2ab83dab1037808298585264559bddf243bd8929037adcb984b0\",\"dweb:/ipfs/QmavmG5REdHCAWsZ8Cag26BCxAq27DRKGxr3uBg5ZYxQ51\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0xa6bf6b7efe0e6625a9dcd30c5ddf52c4c24fe8372f37c7de9dbf5034746768d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c353ee3705bbf6fadb84c0fb10ef1b736e8ca3ca1867814349d1487ed207beb\",\"dweb:/ipfs/QmcugaPssrzGGE8q4YZKm2ZhnD3kCijjcgdWWg76nWt3FY\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa3066ff86b94128a9d3956a63a0511fa1aae41bd455772ab587b32ff322acb2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf7b192fd82acf6187970c80548f624b1b9c80425b62fa49e7fdb538a52de049\",\"dweb:/ipfs/QmWXG1YCde1tqDYTbNwjkZDWVgPEjzaQGSDqWkyKLzaNua\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8150ceb4ac947e8a442b2a9c017e01e880b2be2dd958f1fa9bc405f4c5a86508\",\"dweb:/ipfs/QmbcBmFX66AY6Kbhnd5gx7zpkgqnUafo43XnmayAM7zVdB\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60a08060405234602957306080526123ac908161002e82396080518181816113ff01526114a30152f35b5f80fdfe60806040526004361015610011575f80fd5b5f5f3560e01c806303213e9e14611a44578063054bf171146119635780632efbab2c146118f557806336a788041461182c5780633c40339c146116745780634f1ef2861461145357806352d1902d146113ec57806353e78b6b1461138457806360bf3eac14611366578063652b9b4114611327578063715018a6146112be57806374d4e491146112a057806378db5eb6146111d65780637912922514611131578063818e32f514610ea457806383d8605914610d8e5780638da5cb5b14610d5957806390229af714610cf75780639094a91e14610cb357806396403a5214610b9a57806397331bf914610b1057806398d59b61146109ab578063ad3cb1cc14610962578063b18800ee146108a7578063b98cca37146107de578063bba48a90146107b7578063c0bd6f9e14610726578063c6ee542b14610658578063cd6dc687146104dc578063e7f6b6e814610282578063ece3221d146101a95763f2fde38b1461017a575f80fd5b346101a65760203660031901126101a6576101a3610196611a90565b61019e611fbd565b611f4c565b80f35b80fd5b50346101a65760403660031901126101a6576101c3611a90565b602435906101cf611fbd565b6001600160a01b03168083526002602052604083205490919060ff161561027357813b15610264578260405163d18d944b60e01b8152826004820152818160248183885af180156102685761024f575b505060207fa665793cc0376980a860c5c155c641bf10dbf171a5913408c71bb6613aacaf0991604051908152a280f35b8161025991611ad2565b61026457825f61021f565b8280fd5b6040513d84823e3d90fd5b63055d22df60e51b8352600483fd5b50346101a6576101003660031901126101a6576004356001600160401b0381116104d8576102b4903690600401611c3a565b906024356001600160401b0381116104d8576102d4903690600401611c3a565b906044356001600160a01b038116918282036101a6576064356102f5611abc565b906102fe611fbd565b84156104c957806104bf575061034e600354935b6103406040519384926311b937e560e31b60208501528a60e435928960c435938d60a4359460248a01611dec565b03601f198101835282611ad2565b8154604051919061029d808401916001600160a01b0316906001600160401b038311858410176104ab576103969285949260409261207a873981528160208201520190611d44565b039082f0801561049e5760018060a01b0316936001546801000000000000000081101561048a578060016103cd9201600155611d18565b81546001600160a01b0360039290921b91821b19169087901b179055848252600260205260408220805460ff19166001908117909155545f19810192908311610476575060209585937f886e083bee1affc6ceee5fa0f6210a363873440f01062b989895c303d787d9549361046061045394604051958695608087526080870190611d44565b908582038c870152611d44565b91604084015260608301520390a3604051908152f35b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526041600452602483fd5b50604051903d90823e3d90fd5b634e487b7160e01b86526041600452602486fd5b61034e9093610312565b63e6c4247b60e01b8352600483fd5b5080fd5b50346101a65760403660031901126101a6576104f6611a90565b5f5160206123575f395f51905f52549060ff8260401c1615916001600160401b03811680159081610650575b6001149081610646575b15908161063d575b5061062e5767ffffffffffffffff1981166001175f5160206123575f395f51905f525582610602575b506001600160a01b031680156104c957610575611ff0565b61057d611ff0565b61058633611f4c565b61058e611ff0565b82546001600160a01b0319161782556024356003556105aa5780f35b68ff0000000000000000195f5160206123575f395f51905f5254165f5160206123575f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b68ffffffffffffffffff191668010000000000000001175f5160206123575f395f51905f52555f61055d565b63f92ee8a960e01b8452600484fd5b9050155f610534565b303b15915061052c565b849150610522565b50346101a65760203660031901126101a6576004356001600160401b0381116104d857610689903690600401611b1e565b610691611fbd565b815b8151811015610722576001600160a01b036106ae8284611da6565b51168352600260205260ff6040842054161561027357826001600160a01b036106d78385611da6565b5116803b156104d857818091600460405180948193631fa5d41d60e11b83525af180156102685761070d575b5050600101610693565b8161071791611ad2565b61026457825f610703565b8280f35b50346101a65760203660031901126101a657610740611a90565b610748611fbd565b6001600160a01b03168082526002602052604082205460ff16156107a8578082913b156107a557818091600460405180948193638456cb5960e01b83525af18015610268576107945750f35b8161079e91611ad2565b6101a65780f35b50fd5b63055d22df60e51b8252600482fd5b50346101a657806003193601126101a657546040516001600160a01b039091168152602090f35b50346101a65760403660031901126101a6576004356024358082108061089b575b15610866576108166108118383611f2b565b611dba565b91805b828110610832576040518061082e8682611cd6565b0390f35b8061083e600192611d18565b838060a01b0391549060031b1c1661085f6108598584611f2b565b87611da6565b5201610819565b60405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642072616e676560981b6044820152606490fd5b506001548111156107ff565b50346101a65760403660031901126101a6576108c1611a90565b602435906108cd611fbd565b6001600160a01b03168083526002602052604083205490919060ff161561027357813b15610264578260405163792fbf3b60e01b8152826004820152818160248183885af180156102685761094d575b505060207f777741edb3f7326190bede5657cac675b5698ca728fb47631cedb1224d71b04791604051908152a280f35b8161095791611ad2565b61026457825f61091d565b50346101a657806003193601126101a6575061082e604051610985604082611ad2565b60058152640352e302e360dc1b6020820152604051918291602083526020830190611d44565b50346101a65760403660031901126101a6576004356001600160401b0381116104d8576109dc903690600401611b1e565b906024356001600160401b0381116104d8576109fc903690600401611b8c565b610a04611fbd565b610a118351825114611d68565b815b8351811015610722576001600160a01b03610a2e8286611da6565b51168352600260205260ff60408420541615610273576001600160a01b03610a568286611da6565b5116610a628284611da6565b51813b15610b0c57849160248392604051948593849263d18d944b60e01b845260048401525af18015610b0157908491610aec575b5060019190506001600160a01b03610aaf8287611da6565b51167fa665793cc0376980a860c5c155c641bf10dbf171a5913408c71bb6613aacaf096020610ade8487611da6565b51604051908152a201610a13565b81610af691611ad2565b61026457825f610a97565b6040513d86823e3d90fd5b8480fd5b50346101a657806003193601126101a65760405180916020600154928381520191600182527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6915b818110610b7b5761082e85610b6f81870382611ad2565b60405191829182611cd6565b82546001600160a01b0316845260209093019260019283019201610b58565b50346101a65760403660031901126101a6576004356001600160401b0381116104d857610bcb903690600401611b1e565b610bd3611aa6565b610bdb611fbd565b6001600160a01b038116156104c957825b8251811015610caf576001600160a01b03610c078285611da6565b51168452600260205260ff60408520541615610ca057836001600160a01b03610c308386611da6565b5116803b156104d8576040805163278f794360e11b81526001600160a01b038616600482015260248101919091525f60448201529082908290606490829084905af1801561026857610c87575b5050600101610bec565b81610c9191611ad2565b610c9c57835f610c7d565b8380fd5b63055d22df60e51b8452600484fd5b8380f35b50346101a65760203660031901126101a657600435906001548210156101a6576020610cde83611d18565b905460405160039290921b1c6001600160a01b03168152f35b50346101a65760203660031901126101a657610120610d1c610d17611a90565b611e49565b966040969196959295949394519815158952602089015260408801526060870152608086015260a085015260c084015260e0830152610100820152f35b50346101a657806003193601126101a6575f5160206123175f395f51905f52546040516001600160a01b039091168152602090f35b50346101a65760403660031901126101a6576004356001600160401b0381116104d857610dbf903690600401611b1e565b90602435610dcb611fbd565b815b8351811015610722576001600160a01b03610de88286611da6565b51168352600260205260ff60408420541615610273576001600160a01b03610e108286611da6565b5116803b15610c9c5783809160246040518094819363792fbf3b60e01b83528860048401525af18015610b0157908491610e8f575b5060019190506001600160a01b03610e5d8287611da6565b51167f777741edb3f7326190bede5657cac675b5698ca728fb47631cedb1224d71b0476020604051868152a201610dcd565b81610e9991611ad2565b61026457825f610e45565b50346101a6576101003660031901126101a6576004356001600160401b0381116104d857610ed6903690600401611c58565b6024356001600160401b03811161026457610ef5903690600401611c58565b6044356001600160401b038111610c9c57610f14903690600401611b1e565b926064356001600160401b0381116104d857610f34903690600401611b8c565b93610f3d611abc565b60a4356001600160401b038111610c9c57610f5c903690600401611b8c565b9560c4356001600160401b038111610b0c57610f7c903690600401611b8c565b9660e4356001600160401b03811161112d57610f9c903690600401611b8c565b91610fcb8851885181149081611122575b81611117575b8161110c575b81611101575b816110f6575b50611d68565b610fd58851611dba565b96865b89518110156110e857610feb818b611da6565b5190610ff78184611da6565b516001600160a01b0361100a838b611da6565b5116928d836110198189611da6565b5191611025828b611da6565b519161103091611da6565b51908b61103d878d611da6565b51604051631cfed6dd60e31b815298899761105e9792969260048a01611dec565b03823091818c5a94602095f180156110dd578990611095575b60019250611085828c611da6565b90838060a01b0316905201610fd8565b50906020813d82116110d5575b816110af60209383611ad2565b810103126110d157516001600160a01b03811681036110d15790600191611077565b8880fd5b3d91506110a2565b6040513d8b823e3d90fd5b6040518061082e8b82611cd6565b90508451145f610fc5565b8b5181149150610fbf565b845181149150610fb9565b835181149150610fb3565b875181149150610fad565b8580fd5b50346101a65760403660031901126101a65761114b611a90565b90611154611aa6565b9161115d611fbd565b6001600160a01b03168082526002602052604082205490929060ff16156107a8576001600160a01b03169182156111c7578192813b156111c357829160248392604051948593849263d0ebdbe760e01b845260048401525af18015610268576107945750f35b5050fd5b63e6c4247b60e01b8252600482fd5b50346101a65760203660031901126101a6576004356001600160401b0381116104d857611207903690600401611b1e565b61120f611fbd565b815b8151811015610722576001600160a01b0361122c8284611da6565b51168352600260205260ff6040842054161561027357826001600160a01b036112558385611da6565b5116803b156104d857818091600460405180948193638456cb5960e01b83525af180156102685761128b575b5050600101611211565b8161129591611ad2565b61026457825f611281565b50346101a657806003193601126101a6576020600154604051908152f35b50346101a657806003193601126101a6576112d7611fbd565b5f5160206123175f395f51905f5280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346101a65760203660031901126101a65760209060ff906040906001600160a01b03611352611a90565b168152600284522054166040519015158152f35b50346101a657806003193601126101a6576020600354604051908152f35b50346101a65760203660031901126101a65761139e611a90565b6113a6611fbd565b6001600160a01b031680156111c75781546001600160a01b031916811782557fa18254b43b40616bb21983c995ff77276701b68421ab1512749ed80d91e12a858280a280f35b50346101a657806003193601126101a6577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036114445760206040515f5160206123375f395f51905f528152f35b63703e46dd60e11b8152600490fd5b5060403660031901126101a657611468611a90565b906024356001600160401b0381116104d857366023820112156104d857611499903690602481600401359101611c04565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115611652575b50611643576114db611fbd565b6040516352d1902d60e01b8152926001600160a01b0381169190602085600481865afa8095859661160f575b5061152057634c9c8ce360e01b84526004839052602484fd5b9091845f5160206123375f395f51905f5281036115fd5750813b156115eb575f5160206123375f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a281518390156115d157808360206115c595519101845af43d156115c9573d916115a983611be9565b926115b76040519485611ad2565b83523d85602085013e61201b565b5080f35b60609161201b565b505050346115dc5780f35b63b398979f60e01b8152600490fd5b634c9c8ce360e01b8452600452602483fd5b632a87526960e21b8552600452602484fd5b9095506020813d60201161163b575b8161162b60209383611ad2565b81010312610b0c5751945f611507565b3d915061161e565b63703e46dd60e11b8252600482fd5b5f5160206123375f395f51905f52546001600160a01b0316141590505f6114ce565b50346101a65760603660031901126101a6576004356001600160401b0381116104d8576116a5903690600401611b1e565b906024356001600160401b0381116104d8576116c5903690600401611b8c565b6044356001600160401b038111610264576116e4903690600401611b8c565b926116ed611fbd565b61170281518351811490816118215750611d68565b825b8151811015610caf576001600160a01b0361171f8284611da6565b51168452600260205260ff60408520541615610ca0576001600160a01b036117478284611da6565b51166117538285611da6565b5161175e8388611da6565b5190823b1561181d579060448792836040519586948593630ef88d7f60e41b8552600485015260248401525af18015611812579085916117fd575b5060019190506001600160a01b036117b18285611da6565b51167f8182173c5ec5828b584f228420d06be6e62aa539b8e093e4f41756d238ed35c360406117e08488611da6565b516117eb858b611da6565b5182519182526020820152a201611704565b8161180791611ad2565b610c9c57835f611799565b6040513d87823e3d90fd5b8680fd5b90508551145f610fc5565b50346101a65760603660031901126101a657611846611a90565b60243560443591611855611fbd565b6001600160a01b03168084526002602052604084205490929060ff1615610ca057823b15610c9c5783604051630ef88d7f60e41b8152836004820152826024820152818160448183895af18015610268576118e0575b50507f8182173c5ec5828b584f228420d06be6e62aa539b8e093e4f41756d238ed35c39160409182519182526020820152a280f35b816118ea91611ad2565b610c9c57835f6118ab565b50346101a65760203660031901126101a65761190f611a90565b611917611fbd565b6001600160a01b03168082526002602052604082205460ff16156107a8578082913b156107a557818091600460405180948193631fa5d41d60e11b83525af18015610268576107945750f35b5034611a22576040366003190112611a225761197d611a90565b611985611aa6565b9061198e611fbd565b6001600160a01b03165f8181526002602052604090205460ff1615611a35576001600160a01b03821615611a2657803b15611a22576040805163278f794360e11b81526001600160a01b0393909316600484015260248301525f60448301819052908290606490829084905af18015611a1757611a09575080f35b611a1591505f90611ad2565b005b6040513d5f823e3d90fd5b5f80fd5b63e6c4247b60e01b5f5260045ffd5b63055d22df60e51b5f5260045ffd5b34611a22576020366003190112611a22577f313330c0aba7de8d1883a630d2afa55482bc3d64e68700c5dcb3a1488205acbe6020600435611a83611fbd565b80600355604051908152a1005b600435906001600160a01b0382168203611a2257565b602435906001600160a01b0382168203611a2257565b608435906001600160a01b0382168203611a2257565b90601f801991011681019081106001600160401b03821117611af357604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b038111611af35760051b60200190565b9080601f83011215611a2257813590611b3682611b07565b92611b446040519485611ad2565b82845260208085019360051b820101918211611a2257602001915b818310611b6c5750505090565b82356001600160a01b0381168103611a2257815260209283019201611b5f565b9080601f83011215611a22578135611ba381611b07565b92611bb16040519485611ad2565b81845260208085019260051b820101928311611a2257602001905b828210611bd95750505090565b8135815260209182019101611bcc565b6001600160401b038111611af357601f01601f191660200190565b929192611c1082611be9565b91611c1e6040519384611ad2565b829481845281830111611a22578281602093845f960137010152565b9080601f83011215611a2257816020611c5593359101611c04565b90565b9080601f83011215611a22578135611c6f81611b07565b92611c7d6040519485611ad2565b81845260208085019260051b82010191838311611a225760208201905b838210611ca957505050505090565b81356001600160401b038111611a2257602091611ccb87848094880101611c3a565b815201910190611c9a565b60206040818301928281528451809452019201905f5b818110611cf95750505090565b82516001600160a01b0316845260209384019390920191600101611cec565b600154811015611d305760015f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b15611d6f57565b60405162461bcd60e51b815260206004820152600f60248201526e098cadccee8d040dad2e6dac2e8c6d608b1b6044820152606490fd5b8051821015611d305760209160051b010190565b90611dc482611b07565b611dd16040519182611ad2565b8281528092611de2601f1991611b07565b0190602036910137565b9491611e1c90611e0e60e098959b9a9996936101008952610100890190611d44565b908782036020890152611d44565b6001600160a01b03998a16604087015260608601919091529716608084015260a083015260c08201520152565b6001600160a01b03165f8181526002602052604090205460ff1691908215611f155761010060049160405192838092637f98aa7160e01b82525afa8015611a17575f915f915f915f915f915f915f915f91611eaa575b509091929394959697565b975050505050505050610100813d8211611f0d575b81611ecd6101009383611ad2565b81010312611a22578051602082015160408301516060840151608085015160a086015160c087015160e0909701519596949593949293919290915f611e9f565b3d9150611ebf565b505f915081908190819081908190819081908190565b91908203918211611f3857565b634e487b7160e01b5f52601160045260245ffd5b6001600160a01b03168015611faa575f5160206123175f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b5f5160206123175f395f51905f52546001600160a01b03163303611fdd57565b63118cdaa760e01b5f523360045260245ffd5b60ff5f5160206123575f395f51905f525460401c161561200c57565b631afcd79f60e31b5f5260045ffd5b9061203f575080511561203057602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580612070575b612050575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561204856fe608060405261029d8038038061001481610168565b92833981016040828203126101645781516001600160a01b03811692909190838303610164576020810151906001600160401b03821161016457019281601f8501121561016457835161006e610069826101a1565b610168565b9481865260208601936020838301011161016457815f926020809301865e86010152823b15610152577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a282511561013a575f8091610122945190845af43d15610132573d91610113610069846101a1565b9283523d5f602085013e6101bc565b505b6040516082908161021b8239f35b6060916101bc565b50505034156101245763b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761018d57604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b03811161018d57601f01601f191660200190565b906101e057508051156101d157602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580610211575b6101f1575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156101e956fe60806040527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e156048573d5ff35b3d5ffdfea26469706673582212209b47d74a9c6e91276df99b9ba7ac21cf97ab55f726c4bb1ac817a91319f9005a64736f6c634300081e00339016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122081f4e1beb49055c9c4368d04bbcf1a2f0348e87118513c28c993cc75a515281b64736f6c634300081e0033","sourceMap":"511:13951:8:-:0;;;;;;;1171:4:26;1163:13;;511:13951:8;;;;;;1163:13:26;511:13951:8;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"60806040526004361015610011575f80fd5b5f5f3560e01c806303213e9e14611a44578063054bf171146119635780632efbab2c146118f557806336a788041461182c5780633c40339c146116745780634f1ef2861461145357806352d1902d146113ec57806353e78b6b1461138457806360bf3eac14611366578063652b9b4114611327578063715018a6146112be57806374d4e491146112a057806378db5eb6146111d65780637912922514611131578063818e32f514610ea457806383d8605914610d8e5780638da5cb5b14610d5957806390229af714610cf75780639094a91e14610cb357806396403a5214610b9a57806397331bf914610b1057806398d59b61146109ab578063ad3cb1cc14610962578063b18800ee146108a7578063b98cca37146107de578063bba48a90146107b7578063c0bd6f9e14610726578063c6ee542b14610658578063cd6dc687146104dc578063e7f6b6e814610282578063ece3221d146101a95763f2fde38b1461017a575f80fd5b346101a65760203660031901126101a6576101a3610196611a90565b61019e611fbd565b611f4c565b80f35b80fd5b50346101a65760403660031901126101a6576101c3611a90565b602435906101cf611fbd565b6001600160a01b03168083526002602052604083205490919060ff161561027357813b15610264578260405163d18d944b60e01b8152826004820152818160248183885af180156102685761024f575b505060207fa665793cc0376980a860c5c155c641bf10dbf171a5913408c71bb6613aacaf0991604051908152a280f35b8161025991611ad2565b61026457825f61021f565b8280fd5b6040513d84823e3d90fd5b63055d22df60e51b8352600483fd5b50346101a6576101003660031901126101a6576004356001600160401b0381116104d8576102b4903690600401611c3a565b906024356001600160401b0381116104d8576102d4903690600401611c3a565b906044356001600160a01b038116918282036101a6576064356102f5611abc565b906102fe611fbd565b84156104c957806104bf575061034e600354935b6103406040519384926311b937e560e31b60208501528a60e435928960c435938d60a4359460248a01611dec565b03601f198101835282611ad2565b8154604051919061029d808401916001600160a01b0316906001600160401b038311858410176104ab576103969285949260409261207a873981528160208201520190611d44565b039082f0801561049e5760018060a01b0316936001546801000000000000000081101561048a578060016103cd9201600155611d18565b81546001600160a01b0360039290921b91821b19169087901b179055848252600260205260408220805460ff19166001908117909155545f19810192908311610476575060209585937f886e083bee1affc6ceee5fa0f6210a363873440f01062b989895c303d787d9549361046061045394604051958695608087526080870190611d44565b908582038c870152611d44565b91604084015260608301520390a3604051908152f35b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526041600452602483fd5b50604051903d90823e3d90fd5b634e487b7160e01b86526041600452602486fd5b61034e9093610312565b63e6c4247b60e01b8352600483fd5b5080fd5b50346101a65760403660031901126101a6576104f6611a90565b5f5160206123575f395f51905f52549060ff8260401c1615916001600160401b03811680159081610650575b6001149081610646575b15908161063d575b5061062e5767ffffffffffffffff1981166001175f5160206123575f395f51905f525582610602575b506001600160a01b031680156104c957610575611ff0565b61057d611ff0565b61058633611f4c565b61058e611ff0565b82546001600160a01b0319161782556024356003556105aa5780f35b68ff0000000000000000195f5160206123575f395f51905f5254165f5160206123575f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b68ffffffffffffffffff191668010000000000000001175f5160206123575f395f51905f52555f61055d565b63f92ee8a960e01b8452600484fd5b9050155f610534565b303b15915061052c565b849150610522565b50346101a65760203660031901126101a6576004356001600160401b0381116104d857610689903690600401611b1e565b610691611fbd565b815b8151811015610722576001600160a01b036106ae8284611da6565b51168352600260205260ff6040842054161561027357826001600160a01b036106d78385611da6565b5116803b156104d857818091600460405180948193631fa5d41d60e11b83525af180156102685761070d575b5050600101610693565b8161071791611ad2565b61026457825f610703565b8280f35b50346101a65760203660031901126101a657610740611a90565b610748611fbd565b6001600160a01b03168082526002602052604082205460ff16156107a8578082913b156107a557818091600460405180948193638456cb5960e01b83525af18015610268576107945750f35b8161079e91611ad2565b6101a65780f35b50fd5b63055d22df60e51b8252600482fd5b50346101a657806003193601126101a657546040516001600160a01b039091168152602090f35b50346101a65760403660031901126101a6576004356024358082108061089b575b15610866576108166108118383611f2b565b611dba565b91805b828110610832576040518061082e8682611cd6565b0390f35b8061083e600192611d18565b838060a01b0391549060031b1c1661085f6108598584611f2b565b87611da6565b5201610819565b60405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642072616e676560981b6044820152606490fd5b506001548111156107ff565b50346101a65760403660031901126101a6576108c1611a90565b602435906108cd611fbd565b6001600160a01b03168083526002602052604083205490919060ff161561027357813b15610264578260405163792fbf3b60e01b8152826004820152818160248183885af180156102685761094d575b505060207f777741edb3f7326190bede5657cac675b5698ca728fb47631cedb1224d71b04791604051908152a280f35b8161095791611ad2565b61026457825f61091d565b50346101a657806003193601126101a6575061082e604051610985604082611ad2565b60058152640352e302e360dc1b6020820152604051918291602083526020830190611d44565b50346101a65760403660031901126101a6576004356001600160401b0381116104d8576109dc903690600401611b1e565b906024356001600160401b0381116104d8576109fc903690600401611b8c565b610a04611fbd565b610a118351825114611d68565b815b8351811015610722576001600160a01b03610a2e8286611da6565b51168352600260205260ff60408420541615610273576001600160a01b03610a568286611da6565b5116610a628284611da6565b51813b15610b0c57849160248392604051948593849263d18d944b60e01b845260048401525af18015610b0157908491610aec575b5060019190506001600160a01b03610aaf8287611da6565b51167fa665793cc0376980a860c5c155c641bf10dbf171a5913408c71bb6613aacaf096020610ade8487611da6565b51604051908152a201610a13565b81610af691611ad2565b61026457825f610a97565b6040513d86823e3d90fd5b8480fd5b50346101a657806003193601126101a65760405180916020600154928381520191600182527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6915b818110610b7b5761082e85610b6f81870382611ad2565b60405191829182611cd6565b82546001600160a01b0316845260209093019260019283019201610b58565b50346101a65760403660031901126101a6576004356001600160401b0381116104d857610bcb903690600401611b1e565b610bd3611aa6565b610bdb611fbd565b6001600160a01b038116156104c957825b8251811015610caf576001600160a01b03610c078285611da6565b51168452600260205260ff60408520541615610ca057836001600160a01b03610c308386611da6565b5116803b156104d8576040805163278f794360e11b81526001600160a01b038616600482015260248101919091525f60448201529082908290606490829084905af1801561026857610c87575b5050600101610bec565b81610c9191611ad2565b610c9c57835f610c7d565b8380fd5b63055d22df60e51b8452600484fd5b8380f35b50346101a65760203660031901126101a657600435906001548210156101a6576020610cde83611d18565b905460405160039290921b1c6001600160a01b03168152f35b50346101a65760203660031901126101a657610120610d1c610d17611a90565b611e49565b966040969196959295949394519815158952602089015260408801526060870152608086015260a085015260c084015260e0830152610100820152f35b50346101a657806003193601126101a6575f5160206123175f395f51905f52546040516001600160a01b039091168152602090f35b50346101a65760403660031901126101a6576004356001600160401b0381116104d857610dbf903690600401611b1e565b90602435610dcb611fbd565b815b8351811015610722576001600160a01b03610de88286611da6565b51168352600260205260ff60408420541615610273576001600160a01b03610e108286611da6565b5116803b15610c9c5783809160246040518094819363792fbf3b60e01b83528860048401525af18015610b0157908491610e8f575b5060019190506001600160a01b03610e5d8287611da6565b51167f777741edb3f7326190bede5657cac675b5698ca728fb47631cedb1224d71b0476020604051868152a201610dcd565b81610e9991611ad2565b61026457825f610e45565b50346101a6576101003660031901126101a6576004356001600160401b0381116104d857610ed6903690600401611c58565b6024356001600160401b03811161026457610ef5903690600401611c58565b6044356001600160401b038111610c9c57610f14903690600401611b1e565b926064356001600160401b0381116104d857610f34903690600401611b8c565b93610f3d611abc565b60a4356001600160401b038111610c9c57610f5c903690600401611b8c565b9560c4356001600160401b038111610b0c57610f7c903690600401611b8c565b9660e4356001600160401b03811161112d57610f9c903690600401611b8c565b91610fcb8851885181149081611122575b81611117575b8161110c575b81611101575b816110f6575b50611d68565b610fd58851611dba565b96865b89518110156110e857610feb818b611da6565b5190610ff78184611da6565b516001600160a01b0361100a838b611da6565b5116928d836110198189611da6565b5191611025828b611da6565b519161103091611da6565b51908b61103d878d611da6565b51604051631cfed6dd60e31b815298899761105e9792969260048a01611dec565b03823091818c5a94602095f180156110dd578990611095575b60019250611085828c611da6565b90838060a01b0316905201610fd8565b50906020813d82116110d5575b816110af60209383611ad2565b810103126110d157516001600160a01b03811681036110d15790600191611077565b8880fd5b3d91506110a2565b6040513d8b823e3d90fd5b6040518061082e8b82611cd6565b90508451145f610fc5565b8b5181149150610fbf565b845181149150610fb9565b835181149150610fb3565b875181149150610fad565b8580fd5b50346101a65760403660031901126101a65761114b611a90565b90611154611aa6565b9161115d611fbd565b6001600160a01b03168082526002602052604082205490929060ff16156107a8576001600160a01b03169182156111c7578192813b156111c357829160248392604051948593849263d0ebdbe760e01b845260048401525af18015610268576107945750f35b5050fd5b63e6c4247b60e01b8252600482fd5b50346101a65760203660031901126101a6576004356001600160401b0381116104d857611207903690600401611b1e565b61120f611fbd565b815b8151811015610722576001600160a01b0361122c8284611da6565b51168352600260205260ff6040842054161561027357826001600160a01b036112558385611da6565b5116803b156104d857818091600460405180948193638456cb5960e01b83525af180156102685761128b575b5050600101611211565b8161129591611ad2565b61026457825f611281565b50346101a657806003193601126101a6576020600154604051908152f35b50346101a657806003193601126101a6576112d7611fbd565b5f5160206123175f395f51905f5280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346101a65760203660031901126101a65760209060ff906040906001600160a01b03611352611a90565b168152600284522054166040519015158152f35b50346101a657806003193601126101a6576020600354604051908152f35b50346101a65760203660031901126101a65761139e611a90565b6113a6611fbd565b6001600160a01b031680156111c75781546001600160a01b031916811782557fa18254b43b40616bb21983c995ff77276701b68421ab1512749ed80d91e12a858280a280f35b50346101a657806003193601126101a6577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036114445760206040515f5160206123375f395f51905f528152f35b63703e46dd60e11b8152600490fd5b5060403660031901126101a657611468611a90565b906024356001600160401b0381116104d857366023820112156104d857611499903690602481600401359101611c04565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115611652575b50611643576114db611fbd565b6040516352d1902d60e01b8152926001600160a01b0381169190602085600481865afa8095859661160f575b5061152057634c9c8ce360e01b84526004839052602484fd5b9091845f5160206123375f395f51905f5281036115fd5750813b156115eb575f5160206123375f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a281518390156115d157808360206115c595519101845af43d156115c9573d916115a983611be9565b926115b76040519485611ad2565b83523d85602085013e61201b565b5080f35b60609161201b565b505050346115dc5780f35b63b398979f60e01b8152600490fd5b634c9c8ce360e01b8452600452602483fd5b632a87526960e21b8552600452602484fd5b9095506020813d60201161163b575b8161162b60209383611ad2565b81010312610b0c5751945f611507565b3d915061161e565b63703e46dd60e11b8252600482fd5b5f5160206123375f395f51905f52546001600160a01b0316141590505f6114ce565b50346101a65760603660031901126101a6576004356001600160401b0381116104d8576116a5903690600401611b1e565b906024356001600160401b0381116104d8576116c5903690600401611b8c565b6044356001600160401b038111610264576116e4903690600401611b8c565b926116ed611fbd565b61170281518351811490816118215750611d68565b825b8151811015610caf576001600160a01b0361171f8284611da6565b51168452600260205260ff60408520541615610ca0576001600160a01b036117478284611da6565b51166117538285611da6565b5161175e8388611da6565b5190823b1561181d579060448792836040519586948593630ef88d7f60e41b8552600485015260248401525af18015611812579085916117fd575b5060019190506001600160a01b036117b18285611da6565b51167f8182173c5ec5828b584f228420d06be6e62aa539b8e093e4f41756d238ed35c360406117e08488611da6565b516117eb858b611da6565b5182519182526020820152a201611704565b8161180791611ad2565b610c9c57835f611799565b6040513d87823e3d90fd5b8680fd5b90508551145f610fc5565b50346101a65760603660031901126101a657611846611a90565b60243560443591611855611fbd565b6001600160a01b03168084526002602052604084205490929060ff1615610ca057823b15610c9c5783604051630ef88d7f60e41b8152836004820152826024820152818160448183895af18015610268576118e0575b50507f8182173c5ec5828b584f228420d06be6e62aa539b8e093e4f41756d238ed35c39160409182519182526020820152a280f35b816118ea91611ad2565b610c9c57835f6118ab565b50346101a65760203660031901126101a65761190f611a90565b611917611fbd565b6001600160a01b03168082526002602052604082205460ff16156107a8578082913b156107a557818091600460405180948193631fa5d41d60e11b83525af18015610268576107945750f35b5034611a22576040366003190112611a225761197d611a90565b611985611aa6565b9061198e611fbd565b6001600160a01b03165f8181526002602052604090205460ff1615611a35576001600160a01b03821615611a2657803b15611a22576040805163278f794360e11b81526001600160a01b0393909316600484015260248301525f60448301819052908290606490829084905af18015611a1757611a09575080f35b611a1591505f90611ad2565b005b6040513d5f823e3d90fd5b5f80fd5b63e6c4247b60e01b5f5260045ffd5b63055d22df60e51b5f5260045ffd5b34611a22576020366003190112611a22577f313330c0aba7de8d1883a630d2afa55482bc3d64e68700c5dcb3a1488205acbe6020600435611a83611fbd565b80600355604051908152a1005b600435906001600160a01b0382168203611a2257565b602435906001600160a01b0382168203611a2257565b608435906001600160a01b0382168203611a2257565b90601f801991011681019081106001600160401b03821117611af357604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b038111611af35760051b60200190565b9080601f83011215611a2257813590611b3682611b07565b92611b446040519485611ad2565b82845260208085019360051b820101918211611a2257602001915b818310611b6c5750505090565b82356001600160a01b0381168103611a2257815260209283019201611b5f565b9080601f83011215611a22578135611ba381611b07565b92611bb16040519485611ad2565b81845260208085019260051b820101928311611a2257602001905b828210611bd95750505090565b8135815260209182019101611bcc565b6001600160401b038111611af357601f01601f191660200190565b929192611c1082611be9565b91611c1e6040519384611ad2565b829481845281830111611a22578281602093845f960137010152565b9080601f83011215611a2257816020611c5593359101611c04565b90565b9080601f83011215611a22578135611c6f81611b07565b92611c7d6040519485611ad2565b81845260208085019260051b82010191838311611a225760208201905b838210611ca957505050505090565b81356001600160401b038111611a2257602091611ccb87848094880101611c3a565b815201910190611c9a565b60206040818301928281528451809452019201905f5b818110611cf95750505090565b82516001600160a01b0316845260209384019390920191600101611cec565b600154811015611d305760015f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b15611d6f57565b60405162461bcd60e51b815260206004820152600f60248201526e098cadccee8d040dad2e6dac2e8c6d608b1b6044820152606490fd5b8051821015611d305760209160051b010190565b90611dc482611b07565b611dd16040519182611ad2565b8281528092611de2601f1991611b07565b0190602036910137565b9491611e1c90611e0e60e098959b9a9996936101008952610100890190611d44565b908782036020890152611d44565b6001600160a01b03998a16604087015260608601919091529716608084015260a083015260c08201520152565b6001600160a01b03165f8181526002602052604090205460ff1691908215611f155761010060049160405192838092637f98aa7160e01b82525afa8015611a17575f915f915f915f915f915f915f915f91611eaa575b509091929394959697565b975050505050505050610100813d8211611f0d575b81611ecd6101009383611ad2565b81010312611a22578051602082015160408301516060840151608085015160a086015160c087015160e0909701519596949593949293919290915f611e9f565b3d9150611ebf565b505f915081908190819081908190819081908190565b91908203918211611f3857565b634e487b7160e01b5f52601160045260245ffd5b6001600160a01b03168015611faa575f5160206123175f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b5f5160206123175f395f51905f52546001600160a01b03163303611fdd57565b63118cdaa760e01b5f523360045260245ffd5b60ff5f5160206123575f395f51905f525460401c161561200c57565b631afcd79f60e31b5f5260045ffd5b9061203f575080511561203057602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580612070575b612050575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561204856fe608060405261029d8038038061001481610168565b92833981016040828203126101645781516001600160a01b03811692909190838303610164576020810151906001600160401b03821161016457019281601f8501121561016457835161006e610069826101a1565b610168565b9481865260208601936020838301011161016457815f926020809301865e86010152823b15610152577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a282511561013a575f8091610122945190845af43d15610132573d91610113610069846101a1565b9283523d5f602085013e6101bc565b505b6040516082908161021b8239f35b6060916101bc565b50505034156101245763b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761018d57604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b03811161018d57601f01601f191660200190565b906101e057508051156101d157602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580610211575b6101f1575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156101e956fe60806040527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e156048573d5ff35b3d5ffdfea26469706673582212209b47d74a9c6e91276df99b9ba7ac21cf97ab55f726c4bb1ac817a91319f9005a64736f6c634300081e00339016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122081f4e1beb49055c9c4368d04bbcf1a2f0348e87118513c28c993cc75a515281b64736f6c634300081e0033","sourceMap":"511:13951:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;511:13951:8;;;;2357:1:24;511:13951:8;;:::i;:::-;2303:62:24;;:::i;:::-;2357:1;:::i;:::-;511:13951:8;;;;;;;;;;;;-1:-1:-1;;511:13951:8;;;;;;:::i;:::-;;;2303:62:24;;;:::i;:::-;-1:-1:-1;;;;;511:13951:8;;;;6850:7;511:13951;;;;;;;;;;;6849:16;6845:45;;6909:41;;;;;511:13951;;;;;;6909:41;;;511:13951;6909:41;;511:13951;6909:41;;511:13951;6909:41;;;;;;;;;;;511:13951;;;;6965:28;511:13951;;;;;;6965:28;511:13951;;6909:41;;;;;:::i;:::-;511:13951;;6909:41;;;;511:13951;;;;6909:41;511:13951;;;;;;;;;6845:45;-1:-1:-1;;;6874:16:8;;511:13951;11915:16;6874;511:13951;;;;;;;-1:-1:-1;;511:13951:8;;;;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;;:::i;:::-;2303:62:24;;;:::i;:::-;3952:22:8;;3948:51;;4088:13;;;511:13951;4205:275;4104:14;511:13951;4088:41;;4205:275;511:13951;;4241:32;;;;;;511:13951;4205:275;;;511:13951;;;;;;;;;;;4205:275;511:13951;4205:275;;;:::i;:::-;;;;;;;;;;:::i;:::-;511:13951;;;;;;4545:47;;;;;-1:-1:-1;;;;;511:13951:8;;-1:-1:-1;;;;;4545:47:8;;;;;;;;511:13951;4545:47;;;;511:13951;4545:47;;;;511:13951;;;;;;;;;;:::i;:::-;4545:47;;;;;;;;511:13951;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;;;;;;;;;;4672:7;511:13951;;;;;;;-1:-1:-1;;511:13951:8;;;;;;;;;-1:-1:-1;;511:13951:8;;;;;;;;;;;;;4717:164;511:13951;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;4717:164;;;511:13951;;;;;;;-1:-1:-1;;;511:13951:8;;;;;;;;;-1:-1:-1;;;511:13951:8;;;;;;;;4545:47;511:13951;;;;;;;;;;;4545:47;-1:-1:-1;;;511:13951:8;;;;;;;;4088:41;4205:275;4088:41;;;;3948:51;-1:-1:-1;;;3983:16:8;;511:13951;11986:16;3983;511:13951;;;;;;;;;;;-1:-1:-1;;511:13951:8;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;511:13951:8;;;;;;;4301:16:25;511:13951:8;-1:-1:-1;;;;;511:13951:8;;4724:16:25;;:34;;;;511:13951:8;;4788:16:25;:50;;;;511:13951:8;4853:13:25;:30;;;;511:13951:8;4849:91:25;;;-1:-1:-1;;511:13951:8;;;;-1:-1:-1;;;;;;;;;;;511:13951:8;;4977:67:25;;511:13951:8;-1:-1:-1;;;;;;511:13951:8;1895:34;;1891:63;;6891:76:25;;:::i;:::-;;;:::i;:::-;6959:1;1988:10:8;6959:1:25;:::i;:::-;6891:76;;:::i;:::-;511:13951:8;;-1:-1:-1;;;;;;511:13951:8;;;;;;2104:32;511:13951;5064:101:25;;511:13951:8;;5064:101:25;511:13951:8;;-1:-1:-1;;;;;;;;;;;511:13951:8;;-1:-1:-1;;;;;;;;;;;511:13951:8;5140:14:25;511:13951:8;;;;;;5140:14:25;511:13951:8;;4977:67:25;-1:-1:-1;;511:13951:8;;;-1:-1:-1;;;;;;;;;;;511:13951:8;4977:67:25;;;4849:91;-1:-1:-1;;;4906:23:25;;511:13951:8;4906:23:25;;4853:30;4870:13;;;4853:30;;;4788:50;4816:4;4808:25;:30;;-1:-1:-1;4788:50:25;;4724:34;;;-1:-1:-1;4724:34:25;;511:13951:8;;;;;;;-1:-1:-1;;511:13951:8;;;;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;:::i;:::-;2303:62:24;;:::i;:::-;10128:13:8;10163:3;511:13951;;10143:18;;;;;-1:-1:-1;;;;;10195:10:8;;;;:::i;:::-;511:13951;;;;10187:7;511:13951;;;;;;;;10186:20;10182:49;;511:13951;-1:-1:-1;;;;;10258:10:8;;;;:::i;:::-;511:13951;;10245:34;;;;;511:13951;;;;;;;;;;;;;10245:34;;;;;;;;;;10163:3;;;511:13951;;10128:13;;10245:34;;;;;:::i;:::-;511:13951;;10245:34;;;;10143:18;;511:13951;;;;;;;;;-1:-1:-1;;511:13951:8;;;;;;:::i;:::-;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;511:13951:8;;;;9242:7;511:13951;;;;;;;;9241:16;9237:45;;9301:28;;;;;;;511:13951;;;;;;;;;;;;;9301:28;;;;;;;;;;511:13951;;9301:28;;;;;:::i;:::-;511:13951;;9301:28;511:13951;9301:28;511:13951;;9237:45;-1:-1:-1;;;9266:16:8;;511:13951;11915:16;9266;511:13951;;;;;;;;;;;;;;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;;;;;-1:-1:-1;;511:13951:8;;;;;;;;13117:13;;;:41;;;511:13951;;;;13204:28;13218:13;;;;:::i;:::-;13204:28;:::i;:::-;13247:18;;13267:8;;;;;;511:13951;;;;;;;:::i;:::-;;;;13277:3;13317:12;;511:13951;13317:12;;:::i;:::-;511:13951;;;;;;;;;;;;13296:33;13303:10;;;;:::i;:::-;13296:33;;:::i;:::-;511:13951;;13247:18;;511:13951;;;-1:-1:-1;;;511:13951:8;;;;;;;;;;;;-1:-1:-1;;;511:13951:8;;;;;;;13117:41;511:13951;;;13134:24;;;13117:41;;511:13951;;;;;;;-1:-1:-1;;511:13951:8;;;;;;:::i;:::-;;;2303:62:24;;;:::i;:::-;-1:-1:-1;;;;;511:13951:8;;;;8286:7;511:13951;;;;;;;;;;;8285:16;8281:45;;8345:63;;;;;511:13951;;;;;;8345:63;;;511:13951;8345:63;;511:13951;8345:63;;511:13951;8345:63;;;;;;;;;;;511:13951;;;;8423:50;511:13951;;;;;;8423:50;511:13951;;8345:63;;;;;:::i;:::-;511:13951;;8345:63;;;;511:13951;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;511:13951:8;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;511:13951:8;;;;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;:::i;:::-;2303:62:24;;:::i;:::-;7270::8;511:13951;;;;7278:34;7270:62;:::i;:::-;7356:13;7391:3;511:13951;;7371:18;;;;;-1:-1:-1;;;;;7423:10:8;;;;:::i;:::-;511:13951;;;;7415:7;511:13951;;;;;;;;7414:20;7410:49;;-1:-1:-1;;;;;7486:10:8;;;;:::i;:::-;511:13951;;7509:12;;;;:::i;:::-;511:13951;7473:49;;;;;511:13951;;;;;;;;;;;;;;;7473:49;;511:13951;7473:49;;511:13951;7473:49;;;;;;;;;;;7391:3;-1:-1:-1;511:13951:8;;;-1:-1:-1;;;;;;7552:10:8;511:13951;7552:10;;:::i;:::-;511:13951;;7541:36;511:13951;7564:12;;;;:::i;:::-;511:13951;;;;;;7541:36;511:13951;7356:13;;7473:49;;;;;:::i;:::-;511:13951;;7473:49;;;;;511:13951;;;;;;;;;7473:49;511:13951;;;;;;;;;;;;;;;;;;;;;13493:9;511:13951;;;;;;;13493:9;511:13951;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;13493:9;511:13951;;;;;;;;;;;;;;-1:-1:-1;;511:13951:8;;;;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;:::i;:::-;;;:::i;:::-;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;511:13951:8;;12373:32;12369:61;;12454:13;12489:3;511:13951;;12469:18;;;;;-1:-1:-1;;;;;12521:10:8;;;;:::i;:::-;511:13951;;;;12513:7;511:13951;;;;;;;;12512:20;12508:49;;511:13951;-1:-1:-1;;;;;12584:10:8;;;;:::i;:::-;511:13951;;12571:65;;;;;511:13951;;;-1:-1:-1;;;12571:65:8;;-1:-1:-1;;;;;511:13951:8;;;12571:65;;511:13951;;;;;;;;-1:-1:-1;511:13951:8;;;;;;;;;;;;;;;12571:65;;;;;;;;12489:3;;;511:13951;;12454:13;;12571:65;;;;;:::i;:::-;511:13951;;12571:65;;;;511:13951;;;;12508:49;-1:-1:-1;;;12541:16:8;;511:13951;11915:16;12541;12469:18;;511:13951;;;;;;;;;-1:-1:-1;;511:13951:8;;;;;;;;;830:26;;;;;511:13951;830:26;;;:::i;:::-;511:13951;;;;;;;;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;-1:-1:-1;;511:13951:8;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;511:13951:8;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;;;;;-1:-1:-1;;511:13951:8;;;;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;:::i;:::-;;;;2303:62:24;;:::i;:::-;8794:13:8;8829:3;511:13951;;8809:18;;;;;-1:-1:-1;;;;;8861:10:8;;;;:::i;:::-;511:13951;;;;8853:7;511:13951;;;;;;;;8852:20;8848:49;;-1:-1:-1;;;;;8924:10:8;;;;:::i;:::-;511:13951;;8911:67;;;;;511:13951;;;;;;;;;;;;;8911:67;;;511:13951;8911:67;;511:13951;8911:67;;;;;;;;;;;8829:3;-1:-1:-1;511:13951:8;;;-1:-1:-1;;;;;;9019:10:8;511:13951;9019:10;;:::i;:::-;511:13951;;8997:54;511:13951;;;;;;8997:54;511:13951;8794:13;;8911:67;;;;;:::i;:::-;511:13951;;8911:67;;;;511:13951;;;;;;;-1:-1:-1;;511:13951:8;;;;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;:::i;:::-;;5816:362;511:13951;;;;5837:32;;:81;;;;511:13951;5837:130;;;511:13951;5837:186;;;511:13951;5837:244;;;511:13951;5837:300;;;511:13951;5816:362;;:::i;:::-;6206:28;511:13951;;6206:28;:::i;:::-;6258:13;;6292:3;511:13951;;6273:17;;;;;6357:9;;;;:::i;:::-;;6384:11;;;;;:::i;:::-;;-1:-1:-1;;;;;6413:12:8;;;;:::i;:::-;511:13951;;6443:12;;;;;;;:::i;:::-;511:13951;6496:19;;;;;:::i;:::-;511:13951;6533:21;;;;:::i;:::-;511:13951;6572:19;;;;;;:::i;:::-;511:13951;;;-1:-1:-1;;;6323:282:8;;511:13951;;;6323:282;;511:13951;;;;6323:282;;;:::i;:::-;;:4;;:282;;;;;511:13951;6323:282;;;;;;;;;;6292:3;511:13951;6311:294;;;;;;:::i;:::-;511:13951;;;;;;;;;;6258:13;;6323:282;;;511:13951;6323:282;;;;;;;;;511:13951;6323:282;;;:::i;:::-;;;511:13951;;;;;-1:-1:-1;;;;;511:13951:8;;;;;;6323:282;511:13951;6323:282;;;511:13951;;;;6323:282;;;-1:-1:-1;6323:282:8;;;511:13951;;;;;;;;;6273:17;511:13951;;;;6273:17;511:13951;;:::i;5837:300::-;511:13951;;;;6097:40;5837:300;;;:244;511:13951;;6039:42;;;-1:-1:-1;5837:244:8;;:186;511:13951;;5983:40;;;-1:-1:-1;5837:186:8;;:130;511:13951;;5934:33;;;-1:-1:-1;5837:130:8;;:81;511:13951;;5885:33;;;-1:-1:-1;5837:81:8;;511:13951;;;;;;;;;;;-1:-1:-1;;511:13951:8;;;;;;:::i;:::-;;;;:::i;:::-;2303:62:24;;;:::i;:::-;-1:-1:-1;;;;;511:13951:8;;;;7827:7;511:13951;;;;;;;;;;;7826:16;7822:45;;-1:-1:-1;;;;;511:13951:8;;7881:22;;7877:51;;7947:41;;;;;;;511:13951;;;;;;;;;;;;;;;7947:41;;511:13951;7947:41;;511:13951;7947:41;;;;;;;;511:13951;;7947:41;511:13951;;;7877:51;-1:-1:-1;;;7912:16:8;;511:13951;11986:16;7912;511:13951;;;;;;;-1:-1:-1;;511:13951:8;;;;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;:::i;:::-;2303:62:24;;:::i;:::-;9775:13:8;9810:3;511:13951;;9790:18;;;;;-1:-1:-1;;;;;9842:10:8;;;;:::i;:::-;511:13951;;;;9834:7;511:13951;;;;;;;;9833:20;9829:49;;511:13951;-1:-1:-1;;;;;9905:10:8;;;;:::i;:::-;511:13951;;9892:32;;;;;511:13951;;;;;;;;;;;;;9892:32;;;;;;;;;;9810:3;;;511:13951;;9775:13;;9892:32;;;;;:::i;:::-;511:13951;;9892:32;;;;511:13951;;;;;;;;;;;;;;12792:9;511:13951;;;;;;;;;;;;;;;;;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;511:13951:8;;-1:-1:-1;;;;;;511:13951:8;;;;;;;-1:-1:-1;;;;;511:13951:8;3975:40:24;511:13951:8;;3975:40:24;511:13951:8;;;;;;;;;-1:-1:-1;;511:13951:8;;;;;;;;;;-1:-1:-1;;;;;511:13951:8;;:::i;:::-;;;;911:39;511:13951;;;;;;;;;;;;;;;;;;;;;;;;;;;1015:29;511:13951;;;;;;;;;;;;;;-1:-1:-1;;511:13951:8;;;;;;:::i;:::-;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;511:13951:8;2581:32;;2577:61;;511:13951;;-1:-1:-1;;;;;;511:13951:8;;;;;2703:46;511:13951;;2703:46;511:13951;;;;;;;;;;;;;;;5090:6:26;-1:-1:-1;;;;;511:13951:8;5081:4:26;5073:23;5069:145;;511:13951:8;;;-1:-1:-1;;;;;;;;;;;511:13951:8;;;5069:145:26;-1:-1:-1;;;5174:29:26;;511:13951:8;;5174:29:26;511:13951:8;-1:-1:-1;511:13951:8;;-1:-1:-1;;511:13951:8;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4667:6:26;511:13951:8;4658:4:26;4650:23;;;:120;;;;511:13951:8;4633:251:26;;;2303:62:24;;:::i;:::-;511:13951:8;;-1:-1:-1;;;6131:52:26;;511:13951:8;-1:-1:-1;;;;;511:13951:8;;;;;;;;;6131:52:26;;;;;;;;511:13951:8;-1:-1:-1;6127:437:26;;-1:-1:-1;;;6493:60:26;;511:13951:8;;;;;1805:47:39;6493:60:26;6127:437;6225:40;;;-1:-1:-1;;;;;;;;;;;6225:40:26;;6221:120;;1748:29:39;;;:34;1744:119;;-1:-1:-1;;;;;;;;;;;511:13951:8;;-1:-1:-1;;;;;;511:13951:8;;;;;2407:36:39;;;;511:13951:8;;;;2458:15:39;:11;;4065:25:45;;511:13951:8;4107:55:45;4065:25;;;;;;;511:13951:8;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;4107:55:45;:::i;:::-;;511:13951:8;;;;;4107:55:45;:::i;2454:148:39:-;6163:9;;;;6159:70;;511:13951:8;;6159:70:39;-1:-1:-1;;;6199:19:39;;511:13951:8;;6199:19:39;1744:119;-1:-1:-1;;;1805:47:39;;511:13951:8;;;1805:47:39;;6221:120:26;-1:-1:-1;;;6292:34:26;;511:13951:8;;;6292:34:26;;6131:52;;;;511:13951:8;6131:52:26;;511:13951:8;6131:52:26;;;;;;511:13951:8;6131:52:26;;;:::i;:::-;;;511:13951:8;;;;;6131:52:26;;;;;;;-1:-1:-1;6131:52:26;;4633:251;-1:-1:-1;;;4844:29:26;;511:13951:8;4844:29:26;;4650:120;-1:-1:-1;;;;;;;;;;;511:13951:8;-1:-1:-1;;;;;511:13951:8;4728:42:26;;;-1:-1:-1;4650:120:26;;;511:13951:8;;;;;;;-1:-1:-1;;511:13951:8;;;;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;:::i;:::-;2303:62:24;;;:::i;:::-;11203:148:8;511:13951;;;;11224:36;;:86;;;;11203:148;;:::i;:::-;11375:13;11410:3;511:13951;;11390:18;;;;;-1:-1:-1;;;;;11442:10:8;;;;:::i;:::-;511:13951;;;;11434:7;511:13951;;;;;;;;11433:20;11429:49;;-1:-1:-1;;;;;11505:10:8;;;;:::i;:::-;511:13951;;11530:14;;;;:::i;:::-;511:13951;11546:12;;;;:::i;:::-;511:13951;11492:67;;;;;;511:13951;;;;;;;;;;;;;;;11492:67;;511:13951;11492:67;;511:13951;;;;;11492:67;;;;;;;;;;;11410:3;-1:-1:-1;511:13951:8;;;-1:-1:-1;;;;;;11592:10:8;511:13951;11592:10;;:::i;:::-;511:13951;;11578:55;511:13951;11604:14;;;;:::i;:::-;511:13951;11620:12;;;;:::i;:::-;511:13951;;;;;;;;;;11578:55;511:13951;11375:13;;11492:67;;;;;:::i;:::-;511:13951;;11492:67;;;;;511:13951;;;;;;;;;11492:67;511:13951;;;11224:86;511:13951;;;;11276:34;11224:86;;;511:13951;;;;;;;-1:-1:-1;;511:13951:8;;;;;;:::i;:::-;;;;;2303:62:24;;;:::i;:::-;-1:-1:-1;;;;;511:13951:8;;;;10635:7;511:13951;;;;;;;;;;;10634:16;10630:45;;10694:55;;;;;511:13951;;;;;;10694:55;;;511:13951;10694:55;;511:13951;;;;;;10694:55;;511:13951;10694:55;;;;;;;;;;;511:13951;;;10764:43;511:13951;;;;;;;;;;;;10764:43;511:13951;;10694:55;;;;;:::i;:::-;511:13951;;10694:55;;;;511:13951;;;;;;;-1:-1:-1;;511:13951:8;;;;;;:::i;:::-;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;511:13951:8;;;;9494:7;511:13951;;;;;;;;9493:16;9489:45;;9553:30;;;;;;;511:13951;;;;;;;;;;;;;9553:30;;;;;;;;;;511:13951;;;;;;;;;-1:-1:-1;;511:13951:8;;;;;;:::i;:::-;;;:::i;:::-;2303:62:24;;;:::i;:::-;-1:-1:-1;;;;;511:13951:8;;;;;11891:7;511:13951;;;;;;;;11890:16;11886:45;;-1:-1:-1;;;;;511:13951:8;;11945:32;11941:61;;12021;;;;;511:13951;;;-1:-1:-1;;;12021:61:8;;-1:-1:-1;;;;;511:13951:8;;;;;12021:61;;511:13951;;;;;-1:-1:-1;511:13951:8;;;;;;-1:-1:-1;511:13951:8;;;;;;-1:-1:-1;;12021:61:8;;;;;;;;511:13951;;;12021:61;;;;511:13951;12021:61;;:::i;:::-;511:13951;12021:61;511:13951;;;;;;;;;12021:61;511:13951;;;11941:61;11986:16;;;511:13951;11986:16;511:13951;;11986:16;11886:45;11915:16;;;511:13951;11915:16;511:13951;;11915:16;511:13951;;;;;;-1:-1:-1;;511:13951:8;;;;2996:34;511:13951;;;2303:62:24;;:::i;:::-;511:13951:8;2949:32;511:13951;;;;;;2996:34;511:13951;;;;;-1:-1:-1;;;;;511:13951:8;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;511:13951:8;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;511:13951:8;;;;;;:::o;:::-;;;4205:275;;511:13951;;;;;;;;-1:-1:-1;;;;;511:13951:8;;;;;;;:::o;:::-;;;;-1:-1:-1;511:13951:8;;;;;-1:-1:-1;511:13951:8;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;511:13951:8;;;;;;-1:-1:-1;;511:13951:8;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;511:13951:8;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;;;;;;;830:26;511:13951;;;;;;830:26;-1:-1:-1;511:13951:8;;-1:-1:-1;511:13951:8;;;-1:-1:-1;511:13951:8;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;511:13951:8;;;;;;;;-1:-1:-1;;511:13951:8;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;511:13951:8;;;;;;;;;;;;-1:-1:-1;;;511:13951:8;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;4205:275;511:13951;4205:275;;511:13951;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;511:13951:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13607:676::-;-1:-1:-1;;;;;511:13951:8;-1:-1:-1;511:13951:8;;;13944:7;511:13951;;;;;;;;;;13973:7;;13969:51;;14241:35;;511:13951;;;;;;;;;;14241:35;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;14241:35:8;;;13607:676;14030:246;;;;;;;;13607:676;:::o;14241:35::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;511:13951;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14241:35;;;;;;-1:-1:-1;14241:35:8;;13969:51;-1:-1:-1;;;;;;;;;;;;;;;;;;;;13982:38:8:o;511:13951::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;3405:215:24;-1:-1:-1;;;;;511:13951:8;3489:22:24;;3485:91;;-1:-1:-1;;;;;;;;;;;511:13951:8;;-1:-1:-1;;;;;;511:13951:8;;;;;;;-1:-1:-1;;;;;511:13951:8;3975:40:24;-1:-1:-1;;3975:40:24;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;511:13951:8;;3509:1:24;3534:31;2658:162;-1:-1:-1;;;;;;;;;;;511:13951:8;-1:-1:-1;;;;;511:13951:8;966:10:28;2717:23:24;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:24;966:10:28;2763:40:24;511:13951:8;;-1:-1:-1;2763:40:24;7082:141:25;511:13951:8;-1:-1:-1;;;;;;;;;;;511:13951:8;;;;7148:18:25;7144:73;;7082:141::o;7144:73::-;7189:17;;;-1:-1:-1;7189:17:25;;-1:-1:-1;7189:17:25;4437:582:45;;4609:8;;-1:-1:-1;511:13951:8;;5690:21:45;:17;;5815:105;;;;;;5686:301;5957:19;;;5710:1;5957:19;;5710:1;5957:19;4605:408;511:13951:8;;4857:22:45;:49;;;4605:408;4853:119;;4985:17;;:::o;4853:119::-;-1:-1:-1;;;4878:1:45;4933:24;;;-1:-1:-1;;;;;511:13951:8;;;;4933:24:45;511:13951:8;;;4933:24:45;4857:49;4883:18;;;:23;4857:49;","linkReferences":{},"immutableReferences":{"10672":[{"start":5119,"length":32},{"start":5283,"length":32}]}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","allVaults(uint256)":"9094a91e","createVault(string,string,address,uint256,address,uint256,uint256,uint256)":"e7f6b6e8","createVaultBatch(string[],string[],address[],uint256[],address,uint256[],uint256[],uint256[])":"818e32f5","defaultHardCap()":"60bf3eac","getAllVaults()":"97331bf9","getVaultCount()":"74d4e491","getVaultInfo(address)":"90229af7","getVaults(uint256,uint256)":"b98cca37","initialize(address,uint256)":"cd6dc687","isVault(address)":"652b9b41","owner()":"8da5cb5b","pauseVault(address)":"c0bd6f9e","pauseVaultBatch(address[])":"78db5eb6","proxiableUUID()":"52d1902d","renounceOwnership()":"715018a6","setDefaultHardCap(uint256)":"03213e9e","setHardCap(address,uint256)":"ece3221d","setHardCapBatch(address[],uint256[])":"98d59b61","setVaultImplementation(address)":"53e78b6b","setVaultManager(address,address)":"79129225","setVaultNextRedemptionTime(address,uint256)":"b18800ee","setVaultNextRedemptionTimeBatch(address[],uint256)":"83d86059","transferOwnership(address)":"f2fde38b","unpauseVault(address)":"2efbab2c","unpauseVaultBatch(address[])":"c6ee542b","updateVaultPrices(address,uint256,uint256)":"36a78804","updateVaultPricesBatch(address[],uint256[],uint256[])":"3c40339c","upgradeToAndCall(address,bytes)":"4f1ef286","upgradeVault(address,address)":"054bf171","upgradeVaultBatch(address[],address)":"96403a52","vaultImplementation()":"bba48a90"}}}},"contracts/vault/YTAssetVault.sol":{"YTAssetVault":{"abi":[{"type":"function","name":"PRICE_PRECISION","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"canRedeemNow","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"depositManagedAssets","inputs":[{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositYT","inputs":[{"name":"_wusdAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"ytAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getPendingRequestsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getQueueProgress","inputs":[],"outputs":[{"name":"currentIndex","type":"uint256","internalType":"uint256"},{"name":"totalRequests","type":"uint256","internalType":"uint256"},{"name":"pendingRequests","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRequestDetails","inputs":[{"name":"_requestId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"request","type":"tuple","internalType":"struct YTAssetVault.WithdrawRequest","components":[{"name":"user","type":"address","internalType":"address"},{"name":"ytAmount","type":"uint256","internalType":"uint256"},{"name":"wusdAmount","type":"uint256","internalType":"uint256"},{"name":"requestTime","type":"uint256","internalType":"uint256"},{"name":"queueIndex","type":"uint256","internalType":"uint256"},{"name":"processed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getTimeUntilNextRedemption","inputs":[],"outputs":[{"name":"remainingTime","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUserPendingRequests","inputs":[{"name":"_user","type":"address","internalType":"address"}],"outputs":[{"name":"pendingRequests","type":"tuple[]","internalType":"struct YTAssetVault.WithdrawRequest[]","components":[{"name":"user","type":"address","internalType":"address"},{"name":"ytAmount","type":"uint256","internalType":"uint256"},{"name":"wusdAmount","type":"uint256","internalType":"uint256"},{"name":"requestTime","type":"uint256","internalType":"uint256"},{"name":"queueIndex","type":"uint256","internalType":"uint256"},{"name":"processed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getUserRequestIds","inputs":[{"name":"_user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getVaultInfo","inputs":[],"outputs":[{"name":"_totalAssets","type":"uint256","internalType":"uint256"},{"name":"_idleAssets","type":"uint256","internalType":"uint256"},{"name":"_managedAssets","type":"uint256","internalType":"uint256"},{"name":"_totalSupply","type":"uint256","internalType":"uint256"},{"name":"_hardCap","type":"uint256","internalType":"uint256"},{"name":"_wusdPrice","type":"uint256","internalType":"uint256"},{"name":"_ytPrice","type":"uint256","internalType":"uint256"},{"name":"_nextRedemptionTime","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"hardCap","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"idleAssets","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_manager","type":"address","internalType":"address"},{"name":"_hardCap","type":"uint256","internalType":"uint256"},{"name":"_wusd","type":"address","internalType":"address"},{"name":"_redemptionTime","type":"uint256","internalType":"uint256"},{"name":"_initialWusdPrice","type":"uint256","internalType":"uint256"},{"name":"_initialYtPrice","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"managedAssets","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"manager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"nextRedemptionTime","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"pendingRequestsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"previewBuy","inputs":[{"name":"_wusdAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"ytAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"previewSell","inputs":[{"name":"_ytAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"wusdAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"processBatchWithdrawals","inputs":[{"name":"_batchSize","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"processedCount","type":"uint256","internalType":"uint256"},{"name":"totalDistributed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"processedUpToIndex","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"requestIdCounter","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setHardCap","inputs":[{"name":"_hardCap","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setManager","inputs":[{"name":"_manager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNextRedemptionTime","inputs":[{"name":"_nextRedemptionTime","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalAssets","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updatePrices","inputs":[{"name":"_wusdPrice","type":"uint256","internalType":"uint256"},{"name":"_ytPrice","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"withdrawForManagement","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRequests","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"user","type":"address","internalType":"address"},{"name":"ytAmount","type":"uint256","internalType":"uint256"},{"name":"wusdAmount","type":"uint256","internalType":"uint256"},{"name":"requestTime","type":"uint256","internalType":"uint256"},{"name":"queueIndex","type":"uint256","internalType":"uint256"},{"name":"processed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"withdrawYT","inputs":[{"name":"_ytAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"requestId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"wusdAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"wusdPrice","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"ytPrice","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"AssetsDeposited","inputs":[{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"AssetsWithdrawn","inputs":[{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BatchProcessed","inputs":[{"name":"startIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"endIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"processedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"totalWusdDistributed","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Buy","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"wusdAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ytAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"HardCapSet","inputs":[{"name":"newHardCap","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ManagerSet","inputs":[{"name":"newManager","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"NextRedemptionTimeSet","inputs":[{"name":"newRedemptionTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PriceUpdated","inputs":[{"name":"wusdPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ytPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sell","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"ytAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"wusdAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"WithdrawRequestCreated","inputs":[{"name":"requestId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"ytAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"wusdAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"queueIndex","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WithdrawRequestProcessed","inputs":[{"name":"requestId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"wusdAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"EnforcedPause","inputs":[]},{"type":"error","name":"ExpectedPause","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"Forbidden","inputs":[]},{"type":"error","name":"HardCapExceeded","inputs":[]},{"type":"error","name":"InsufficientWUSD","inputs":[]},{"type":"error","name":"InsufficientYTA","inputs":[]},{"type":"error","name":"InvalidAmount","inputs":[]},{"type":"error","name":"InvalidBatchSize","inputs":[]},{"type":"error","name":"InvalidHardCap","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidPrice","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"RequestAlreadyProcessed","inputs":[]},{"type":"error","name":"RequestNotFound","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"StillInLockPeriod","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Forbidden\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HardCapExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientWUSD\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientYTA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBatchSize\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidHardCap\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPrice\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RequestAlreadyProcessed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RequestNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StillInLockPeriod\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"AssetsDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"AssetsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"processedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalWusdDistributed\",\"type\":\"uint256\"}],\"name\":\"BatchProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wusdAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ytAmount\",\"type\":\"uint256\"}],\"name\":\"Buy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newHardCap\",\"type\":\"uint256\"}],\"name\":\"HardCapSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newManager\",\"type\":\"address\"}],\"name\":\"ManagerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newRedemptionTime\",\"type\":\"uint256\"}],\"name\":\"NextRedemptionTimeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wusdPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ytPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"PriceUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ytAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wusdAmount\",\"type\":\"uint256\"}],\"name\":\"Sell\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ytAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wusdAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"queueIndex\",\"type\":\"uint256\"}],\"name\":\"WithdrawRequestCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wusdAmount\",\"type\":\"uint256\"}],\"name\":\"WithdrawRequestProcessed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"PRICE_PRECISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"canRedeemNow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"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\":\"depositManagedAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_wusdAmount\",\"type\":\"uint256\"}],\"name\":\"depositYT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ytAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPendingRequestsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getQueueProgress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"currentIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalRequests\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pendingRequests\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestId\",\"type\":\"uint256\"}],\"name\":\"getRequestDetails\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"ytAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wusdAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"queueIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"processed\",\"type\":\"bool\"}],\"internalType\":\"struct YTAssetVault.WithdrawRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTimeUntilNextRedemption\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"remainingTime\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getUserPendingRequests\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"ytAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wusdAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"queueIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"processed\",\"type\":\"bool\"}],\"internalType\":\"struct YTAssetVault.WithdrawRequest[]\",\"name\":\"pendingRequests\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getUserRequestIds\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVaultInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalAssets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_idleAssets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_managedAssets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_hardCap\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_wusdPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ytPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_nextRedemptionTime\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hardCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"idleAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_hardCap\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_wusd\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_redemptionTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_initialWusdPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_initialYtPrice\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"managedAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextRedemptionTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingRequestsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_wusdAmount\",\"type\":\"uint256\"}],\"name\":\"previewBuy\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ytAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_ytAmount\",\"type\":\"uint256\"}],\"name\":\"previewSell\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"wusdAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_batchSize\",\"type\":\"uint256\"}],\"name\":\"processBatchWithdrawals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"processedCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDistributed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"processedUpToIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requestIdCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_hardCap\",\"type\":\"uint256\"}],\"name\":\"setHardCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_manager\",\"type\":\"address\"}],\"name\":\"setManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nextRedemptionTime\",\"type\":\"uint256\"}],\"name\":\"setNextRedemptionTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_wusdPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ytPrice\",\"type\":\"uint256\"}],\"name\":\"updatePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawForManagement\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdrawRequests\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"ytAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wusdAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"queueIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"processed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_ytAmount\",\"type\":\"uint256\"}],\"name\":\"withdrawYT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wusdAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wusdPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ytPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"UUPS\\u53ef\\u5347\\u7ea7\\u5408\\u7ea6\\uff0cYT\\u662f\\u4efd\\u989d\\u4ee3\\u5e01\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"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.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"canRedeemNow()\":{\"returns\":{\"_0\":\"\\u662f\\u5426\\u53ef\\u4ee5\\u8d4e\\u56de\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"depositManagedAssets(uint256)\":{\"params\":{\"_amount\":\"\\u5f52\\u8fd8\\u6570\\u91cf\"}},\"depositYT(uint256)\":{\"details\":\"\\u9996\\u6b21\\u8d2d\\u4e70\\u65f6\\uff0cYT\\u4ef7\\u683c = WUSD\\u4ef7\\u683c\\uff081:1\\u5151\\u6362\\uff09\",\"params\":{\"_wusdAmount\":\"\\u652f\\u4ed8\\u7684WUSD\\u6570\\u91cf\"},\"returns\":{\"ytAmount\":\"\\u5b9e\\u9645\\u83b7\\u5f97\\u7684YT\\u6570\\u91cf\"}},\"getPendingRequestsCount()\":{\"details\":\"\\u4f7f\\u7528\\u5b9e\\u65f6\\u7ef4\\u62a4\\u7684\\u8ba1\\u6570\\u5668\\uff0cO(1)\\u590d\\u6742\\u5ea6\\uff0c\\u907f\\u514dgas\\u7206\\u70b8\",\"returns\":{\"_0\":\"\\u5f85\\u5904\\u7406\\u7684\\u8bf7\\u6c42\\u603b\\u6570\"}},\"getQueueProgress()\":{\"details\":\"\\u4f7f\\u7528\\u5b9e\\u65f6\\u7ef4\\u62a4\\u7684\\u8ba1\\u6570\\u5668\\uff0c\\u907f\\u514d\\u5faa\\u73af\\u8ba1\\u7b97\",\"returns\":{\"currentIndex\":\"\\u5f53\\u524d\\u5904\\u7406\\u5230\\u7684\\u4f4d\\u7f6e\",\"pendingRequests\":\"\\u5f85\\u5904\\u7406\\u8bf7\\u6c42\\u6570\",\"totalRequests\":\"\\u603b\\u8bf7\\u6c42\\u6570\"}},\"getRequestDetails(uint256)\":{\"params\":{\"_requestId\":\"\\u8bf7\\u6c42ID\"},\"returns\":{\"request\":\"\\u8bf7\\u6c42\\u8be6\\u60c5\"}},\"getTimeUntilNextRedemption()\":{\"returns\":{\"remainingTime\":\"\\u5269\\u4f59\\u65f6\\u95f4\\uff08\\u79d2\\uff09\\uff0c0\\u8868\\u793a\\u53ef\\u4ee5\\u8d4e\\u56de\"}},\"getUserPendingRequests(address)\":{\"params\":{\"_user\":\"\\u7528\\u6237\\u5730\\u5740\"},\"returns\":{\"pendingRequests\":\"\\u7528\\u6237\\u5f85\\u5904\\u7406\\u7684\\u8bf7\\u6c42\\u8be6\\u60c5\\u6570\\u7ec4\"}},\"getUserRequestIds(address)\":{\"params\":{\"_user\":\"\\u7528\\u6237\\u5730\\u5740\"},\"returns\":{\"_0\":\"\\u7528\\u6237\\u7684\\u6240\\u6709\\u8bf7\\u6c42ID\\u6570\\u7ec4\"}},\"idleAssets()\":{\"returns\":{\"_0\":\"\\u5408\\u7ea6\\u4e2d\\u5b9e\\u9645\\u6301\\u6709\\u7684WUSD\\u6570\\u91cf\"}},\"initialize(string,string,address,uint256,address,uint256,uint256,uint256)\":{\"details\":\"\\u4ef7\\u683c\\u7cbe\\u5ea6\\u4e3a1e30\",\"params\":{\"_hardCap\":\"\\u786c\\u9876\\u9650\\u5236\",\"_initialWusdPrice\":\"\\u521d\\u59cbWUSD\\u4ef7\\u683c\\uff08\\u7cbe\\u5ea61e30\\uff0c\\u4f200\\u5219\\u4f7f\\u7528\\u9ed8\\u8ba4\\u503c1.0\\uff09\",\"_initialYtPrice\":\"\\u521d\\u59cbYT\\u4ef7\\u683c\\uff08\\u7cbe\\u5ea61e30\\uff0c\\u4f200\\u5219\\u4f7f\\u7528\\u9ed8\\u8ba4\\u503c1.0\\uff09 \",\"_manager\":\"\\u7ba1\\u7406\\u5458\\u5730\\u5740\",\"_name\":\"YT\\u4ee3\\u5e01\\u540d\\u79f0\",\"_redemptionTime\":\"\\u8d4e\\u56de\\u65f6\\u95f4\\uff08Unix\\u65f6\\u95f4\\u6233\\uff09\",\"_symbol\":\"YT\\u4ee3\\u5e01\\u7b26\\u53f7\",\"_wusd\":\"WUSD\\u4ee3\\u5e01\\u5730\\u5740\\uff08\\u53ef\\u9009\\uff0c\\u4f200\\u5219\\u4f7f\\u7528\\u9ed8\\u8ba4\\u5730\\u5740\\uff09\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"pause()\":{\"details\":\"\\u6682\\u505c\\u540e\\uff0c\\u6240\\u6709\\u8d44\\u91d1\\u6d41\\u52a8\\u64cd\\u4f5c\\u5c06\\u88ab\\u7981\\u6b62\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"previewBuy(uint256)\":{\"params\":{\"_wusdAmount\":\"\\u652f\\u4ed8\\u7684WUSD\\u6570\\u91cf\"},\"returns\":{\"ytAmount\":\"\\u53ef\\u83b7\\u5f97\\u7684YT\\u6570\\u91cf\"}},\"previewSell(uint256)\":{\"params\":{\"_ytAmount\":\"\\u5356\\u51fa\\u7684YT\\u6570\\u91cf\"},\"returns\":{\"wusdAmount\":\"\\u53ef\\u83b7\\u5f97\\u7684WUSD\\u6570\\u91cf\"}},\"processBatchWithdrawals(uint256)\":{\"details\":\"\\u6309\\u7167\\u8bf7\\u6c42ID\\u987a\\u5e8f\\uff08\\u5373\\u65f6\\u95f4\\u5148\\u540e\\uff09\\u4f9d\\u6b21\\u5904\\u7406\\uff0c\\u9047\\u5230\\u8d44\\u91d1\\u4e0d\\u8db3\\u65f6\\u505c\\u6b62\",\"params\":{\"_batchSize\":\"\\u672c\\u6279\\u6b21\\u6700\\u591a\\u5904\\u7406\\u7684\\u8bf7\\u6c42\\u6570\\u91cf\"},\"returns\":{\"processedCount\":\"\\u5b9e\\u9645\\u5904\\u7406\\u7684\\u8bf7\\u6c42\\u6570\\u91cf\",\"totalDistributed\":\"\\u5b9e\\u9645\\u5206\\u53d1\\u7684WUSD\\u603b\\u91cf\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"setHardCap(uint256)\":{\"params\":{\"_hardCap\":\"\\u65b0\\u7684\\u786c\\u9876\\u503c\"}},\"setManager(address)\":{\"params\":{\"_manager\":\"\\u65b0\\u7ba1\\u7406\\u5458\\u5730\\u5740\"}},\"setNextRedemptionTime(uint256)\":{\"details\":\"\\u6240\\u6709\\u7528\\u6237\\u7edf\\u4e00\\u5728\\u6b64\\u65f6\\u95f4\\u540e\\u624d\\u80fd\\u8d4e\\u56de\\uff0c\\u7c7b\\u4f3c\\u57fa\\u91d1\\u7684\\u8d4e\\u56de\\u65e5\",\"params\":{\"_nextRedemptionTime\":\"\\u4e0b\\u4e00\\u4e2a\\u8d4e\\u56de\\u65f6\\u95f4\\uff08Unix\\u65f6\\u95f4\\u6233\\uff09\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalAssets()\":{\"returns\":{\"_0\":\"\\u603b\\u8d44\\u4ea7 = \\u5408\\u7ea6\\u4f59\\u989d + \\u88ab\\u7ba1\\u7406\\u7684\\u8d44\\u4ea7\"}},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"updatePrices(uint256,uint256)\":{\"params\":{\"_wusdPrice\":\"WUSD\\u4ef7\\u683c\\uff08\\u7cbe\\u5ea61e30\\uff09\",\"_ytPrice\":\"YT\\u4ef7\\u683c\\uff08\\u7cbe\\u5ea61e30\\uff09\"}},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"withdrawForManagement(address,uint256)\":{\"params\":{\"_amount\":\"\\u63d0\\u53d6\\u6570\\u91cf\",\"_to\":\"\\u63a5\\u6536\\u5730\\u5740\"}},\"withdrawYT(uint256)\":{\"details\":\"\\u7528\\u6237\\u63d0\\u4ea4\\u8bf7\\u6c42\\u540e\\uff0cYT\\u4f1a\\u7acb\\u5373\\u9500\\u6bc1\\uff0c\\u4f46WUSD\\u9700\\u8981\\u7b49\\u5f85\\u6279\\u91cf\\u5904\\u7406\\u540e\\u624d\\u80fd\\u9886\\u53d6\",\"params\":{\"_ytAmount\":\"\\u5356\\u51fa\\u7684YT\\u6570\\u91cf\"},\"returns\":{\"requestId\":\"\\u63d0\\u73b0\\u8bf7\\u6c42ID\"}}},\"stateVariables\":{\"__gap\":{\"details\":\"\\u9884\\u7559\\u5b58\\u50a8\\u7a7a\\u95f4\\uff0c\\u7528\\u4e8e\\u672a\\u6765\\u5347\\u7ea7\\u65f6\\u6dfb\\u52a0\\u65b0\\u7684\\u72b6\\u6001\\u53d8\\u91cf 50\\u4e2aslot = 50 * 32 bytes = 1600 bytes\"}},\"title\":\"YTAssetVault\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"PRICE_PRECISION()\":{\"notice\":\"\\u4ef7\\u683c\\u7cbe\\u5ea6\"},\"canRedeemNow()\":{\"notice\":\"\\u68c0\\u67e5\\u5f53\\u524d\\u662f\\u5426\\u53ef\\u4ee5\\u8d4e\\u56de\"},\"depositManagedAssets(uint256)\":{\"notice\":\"\\u5c06\\u7ba1\\u7406\\u7684\\u8d44\\u4ea7\\u5f52\\u8fd8\\u5230\\u91d1\\u5e93\\uff08\\u53ef\\u4ee5\\u5f52\\u8fd8\\u66f4\\u591a\\uff0c\\u4ea7\\u751f\\u6536\\u76ca\\uff09\"},\"depositYT(uint256)\":{\"notice\":\"\\u7528WUSD\\u8d2d\\u4e70YT\"},\"factory()\":{\"notice\":\"\\u5de5\\u5382\\u5408\\u7ea6\\u5730\\u5740\"},\"getPendingRequestsCount()\":{\"notice\":\"\\u83b7\\u53d6\\u5f85\\u5904\\u7406\\u7684\\u8bf7\\u6c42\\u6570\\u91cf\"},\"getQueueProgress()\":{\"notice\":\"\\u83b7\\u53d6\\u961f\\u5217\\u5904\\u7406\\u8fdb\\u5ea6\"},\"getRequestDetails(uint256)\":{\"notice\":\"\\u67e5\\u8be2\\u6307\\u5b9a\\u8bf7\\u6c42\\u7684\\u8be6\\u60c5\"},\"getTimeUntilNextRedemption()\":{\"notice\":\"\\u67e5\\u8be2\\u8ddd\\u79bb\\u4e0b\\u6b21\\u8d4e\\u56de\\u5f00\\u653e\\u8fd8\\u9700\\u7b49\\u5f85\\u591a\\u4e45\"},\"getUserPendingRequests(address)\":{\"notice\":\"\\u83b7\\u53d6\\u7528\\u6237\\u5f85\\u5904\\u7406\\u7684\\u8bf7\\u6c42\"},\"getUserRequestIds(address)\":{\"notice\":\"\\u67e5\\u8be2\\u7528\\u6237\\u7684\\u6240\\u6709\\u63d0\\u73b0\\u8bf7\\u6c42ID\"},\"getVaultInfo()\":{\"notice\":\"\\u83b7\\u53d6\\u91d1\\u5e93\\u4fe1\\u606f\"},\"hardCap()\":{\"notice\":\"YT\\u4ee3\\u5e01\\u786c\\u9876\\uff08\\u6700\\u5927\\u53ef\\u94f8\\u9020\\u7684YT\\u6570\\u91cf\\uff09\"},\"idleAssets()\":{\"notice\":\"\\u83b7\\u53d6\\u7a7a\\u95f2\\u8d44\\u4ea7\\uff08\\u53ef\\u7528\\u4e8e\\u63d0\\u53d6\\u7684\\u8d44\\u4ea7\\uff09\"},\"initialize(string,string,address,uint256,address,uint256,uint256,uint256)\":{\"notice\":\"\\u521d\\u59cb\\u5316\\u91d1\\u5e93\"},\"managedAssets()\":{\"notice\":\"\\u5df2\\u63d0\\u53d6\\u7528\\u4e8e\\u7ba1\\u7406\\u7684WUSD\\u6570\\u91cf\"},\"manager()\":{\"notice\":\"\\u7ba1\\u7406\\u5458\\u5730\\u5740\"},\"nextRedemptionTime()\":{\"notice\":\"\\u4e0b\\u4e00\\u4e2a\\u8d4e\\u56de\\u5f00\\u653e\\u65f6\\u95f4\\uff08\\u6240\\u6709\\u7528\\u6237\\u7edf\\u4e00\\uff09\"},\"pause()\":{\"notice\":\"\\u6682\\u505c\\u5408\\u7ea6\\uff08\\u4ec5factory\\u53ef\\u8c03\\u7528\\uff09\"},\"pendingRequestsCount()\":{\"notice\":\"\\u5f53\\u524d\\u5f85\\u5904\\u7406\\u7684\\u8bf7\\u6c42\\u6570\\u91cf\\uff08\\u5b9e\\u65f6\\u7ef4\\u62a4\\uff0c\\u907f\\u514d\\u5faa\\u73af\\u8ba1\\u7b97\\uff09\"},\"previewBuy(uint256)\":{\"notice\":\"\\u9884\\u89c8\\u8d2d\\u4e70\\uff1a\\u8ba1\\u7b97\\u652f\\u4ed8\\u6307\\u5b9aWUSD\\u53ef\\u83b7\\u5f97\\u7684YT\\u6570\\u91cf\"},\"previewSell(uint256)\":{\"notice\":\"\\u9884\\u89c8\\u5356\\u51fa\\uff1a\\u8ba1\\u7b97\\u5356\\u51fa\\u6307\\u5b9aYT\\u53ef\\u83b7\\u5f97\\u7684WUSD\\u6570\\u91cf\"},\"processBatchWithdrawals(uint256)\":{\"notice\":\"\\u6279\\u91cf\\u5904\\u7406\\u63d0\\u73b0\\u8bf7\\u6c42\\uff08\\u4ec5manager\\u6216factory\\u53ef\\u8c03\\u7528\\uff09\"},\"processedUpToIndex()\":{\"notice\":\"\\u5df2\\u5904\\u7406\\u5230\\u7684\\u961f\\u5217\\u4f4d\\u7f6e\"},\"requestIdCounter()\":{\"notice\":\"\\u8bf7\\u6c42ID\\u8ba1\\u6570\\u5668\"},\"setHardCap(uint256)\":{\"notice\":\"\\u8bbe\\u7f6e\\u786c\\u9876\"},\"setManager(address)\":{\"notice\":\"\\u8bbe\\u7f6e\\u7ba1\\u7406\\u5458\"},\"setNextRedemptionTime(uint256)\":{\"notice\":\"\\u8bbe\\u7f6e\\u4e0b\\u4e00\\u4e2a\\u8d4e\\u56de\\u5f00\\u653e\\u65f6\\u95f4\\uff08\\u4ec5factory\\u53ef\\u8c03\\u7528\\uff09\"},\"totalAssets()\":{\"notice\":\"\\u83b7\\u53d6\\u603b\\u8d44\\u4ea7\\uff08\\u5305\\u542b\\u88ab\\u7ba1\\u7406\\u7684\\u8d44\\u4ea7\\uff09\"},\"unpause()\":{\"notice\":\"\\u6062\\u590d\\u5408\\u7ea6\\uff08\\u4ec5factory\\u53ef\\u8c03\\u7528\\uff09\"},\"updatePrices(uint256,uint256)\":{\"notice\":\"\\u66f4\\u65b0\\u4ef7\\u683c\\uff08\\u4ec5manager\\u53ef\\u8c03\\u7528\\uff09\"},\"withdrawForManagement(address,uint256)\":{\"notice\":\"\\u63d0\\u53d6WUSD\\u7528\\u4e8e\\u5916\\u90e8\\u6295\\u8d44\"},\"withdrawRequests(uint256)\":{\"notice\":\"\\u8bf7\\u6c42ID => \\u8bf7\\u6c42\\u8be6\\u60c5\"},\"withdrawYT(uint256)\":{\"notice\":\"\\u63d0\\u4ea4YT\\u63d0\\u73b0\\u8bf7\\u6c42\\uff08\\u9700\\u8981\\u7b49\\u5230\\u7edf\\u4e00\\u8d4e\\u56de\\u65f6\\u95f4\\uff09\"},\"wusdAddress()\":{\"notice\":\"WUSD\\u4ee3\\u5e01\\u5730\\u5740\"},\"wusdPrice()\":{\"notice\":\"WUSD\\u4ef7\\u683c\\uff08\\u7cbe\\u5ea61e30\\uff09\"},\"ytPrice()\":{\"notice\":\"YT\\u4ef7\\u683c\\uff08\\u7cbe\\u5ea61e30\\uff09\"}},\"notice\":\"\\u57fa\\u4e8e\\u4ef7\\u683c\\u7684\\u8d44\\u4ea7\\u91d1\\u5e93\\uff0c\\u7528\\u6237\\u6839\\u636eWUSD\\u548cYT\\u4ee3\\u5e01\\u4ef7\\u683c\\u8fdb\\u884c\\u5151\\u6362\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/vault/YTAssetVault.sol\":\"YTAssetVault\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"contracts/vault/YTAssetVault.sol\":{\"keccak256\":\"0x33fa687de53b2b284f1dda632bbdd4f2b37b82f638dcdfeda04b68ba383337f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60e617369f96bb82c8e424597d538447c2f0a4f37517e917ae63a67e54489dab\",\"dweb:/ipfs/QmbbNxAYiFyKGd3P6nn5VHsuWXvy3rSbiDRSvyDmFHMUQR\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x574a7451e42724f7de29e2855c392a8a5020acd695169466a18459467d719d63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bc189f63b639ee173dd7b6fecc39baf7113bf161776aea22b34c57fdd1872ec\",\"dweb:/ipfs/QmZAf2VtjDLRULqjJkde6LNsxAg12tUqpPqgUQQZbAjgtZ\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xfcd09c2aa8cc3f93e12545454359f901965db312bc03833daf84de0c03e05022\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07701188648d2ab83dab1037808298585264559bddf243bd8929037adcb984b0\",\"dweb:/ipfs/QmavmG5REdHCAWsZ8Cag26BCxAq27DRKGxr3uBg5ZYxQ51\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0xa6bf6b7efe0e6625a9dcd30c5ddf52c4c24fe8372f37c7de9dbf5034746768d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c353ee3705bbf6fadb84c0fb10ef1b736e8ca3ca1867814349d1487ed207beb\",\"dweb:/ipfs/QmcugaPssrzGGE8q4YZKm2ZhnD3kCijjcgdWWg76nWt3FY\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8150ceb4ac947e8a442b2a9c017e01e880b2be2dd958f1fa9bc405f4c5a86508\",\"dweb:/ipfs/QmbcBmFX66AY6Kbhnd5gx7zpkgqnUafo43XnmayAM7zVdB\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60a08060405234602957306080526128b5908161002e82396080518181816117f101526118940152f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806301e1d114146121be57806306fdde0314612101578063095ea7b31461208257806311a270cc14611f6757806318160ddd14611f3e578063188c26cc146107d657806323b872dd14611e6657806329a2644514611b44578063313ce56714611b295780633f4ba83a14611aa25780634815327914611a7e578063481c6a7514611a565780634f1ef2861461184557806352d1902d146117df578063532e20b5146117ae5780635985aa91146117915780635c975abb146117635780635caa814f1461174957806360df7c6c1461169557806361b4fbde146116785780636d1b77111461165b57806370a08231146116175780637229bc3c1461139057806373a33877146112d6578063792fbf3b1461127f5780637f98aa71146112105780638456cb59146111965780638db5888a146111795780638dc9bf2814610bfa57806395082d2514610bd357806395d89b4114610ae5578063992a7dfb14610a77578063a2874172146108f3578063a747f072146108d3578063a9059cbb146108a2578063ad3cb1cc1461085f578063adcc40cb14610842578063c45a01551461081b578063c62db206146107f3578063ca1d4dbf146107d6578063d0ebdbe714610767578063d18d944b146106ec578063dd62ed3e146106a5578063e16b03a31461068b578063e3992fc01461043b578063ef88d7f01461038e578063f34d4c63146102b2578063f4a0877f14610295578063fb3dd95f146102605763fb86a4041461023f575f80fd5b3461025c575f36600319011261025c576020600254604051908152f35b5f80fd5b3461025c57602036600319011261025c57602061028d6102846006546004356123b3565b600554906123c6565b604051908152f35b3461025c575f36600319011261025c576020600354604051908152f35b3461025c57602036600319011261025c576004356102ce6124cb565b50600a5481101561037f575f52600860205260c060405f2060ff6005604051926102f78461222e565b60018060a01b03815416845260018101546020850152600281015460408501526003810154606085015260048101546080850152015416151560a082015261037d604051809260a08091600180831b0381511684526020810151602085015260408101516040850152606081015160608501526080810151608085015201511515910152565bf35b632589d98f60e11b5f5260045ffd5b3461025c57604036600319011261025c575f5460243590600435906001600160a01b0316330361042c5780158015610424575b610416577f15819dd2fd9f6418b142e798d08a18d0bf06ea368f4480b7b0d3f75bd966bc489181600555806006556104116040519283924291846040919493926060820195825260208201520152565b0390a1005b62bfc92160e01b5f5260045ffd5b5081156103c1565b631dd2188d60e31b5f5260045ffd5b3461025c57602036600319011261025c576001600160a01b0361045c612202565b165f52600960205260405f20604051808260208294549384815201905f5260205f20925f5b8181106106725750506104969250038261224a565b5f5f5b82518110156104e1576104ac818461249f565b515f52600860205260ff600560405f20015416156104cd575b600101610499565b906104d9600191612398565b9190506104c5565b506104eb816124b3565b906104f9604051928361224a565b808252610508601f19916124b3565b015f5b81811061065b5750505f905f5b83518110156105d05761052b818561249f565b51805f52600860205260ff600560405f200154161561054e575b50600101610518565b600191936105c9915f52600860205260405f2060ff6005604051926105728461222e565b868060a01b038154168452868101546020850152600281015460408501526003810154606085015260048101546080850152015416151560a08201526105b8828661249f565b526105c3818561249f565b50612398565b9290610545565b506040518091602082016020835281518091526020604084019201905f5b8181106105fc575050500390f35b91935091602060c08261064d600194885160a08091600180831b0381511684526020810151602085015260408101516040850152606081015160608501526080810151608085015201511515910152565b0194019101918493926105ee565b6020906106666124cb565b8282860101520161050b565b8454835260019485019486945060209093019201610481565b3461025c575f36600319011261025c57602061028d612437565b3461025c57604036600319011261025c576106be612202565b6106cf6106c9612218565b916123ff565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461025c57602036600319011261025c575f54600435906001600160a01b0316330361042c575f5160206127e05f395f51905f52548110610758576020817f917681cdf3d8a5ef720fb56128d5382782db742feb1d89fc6d376111254537b192600255604051908152a1005b631a683d1960e11b5f5260045ffd5b3461025c57602036600319011261025c57610780612202565b5f546001600160a01b0316330361042c57600180546001600160a01b0319166001600160a01b039290921691821790557f60a0f5b9f9e81e98216071b85826681c796256fe3d1354ecb675580fba64fa695f80a2005b3461025c575f36600319011261025c576020600c54604051908152f35b3461025c575f36600319011261025c576004546040516001600160a01b039091168152602090f35b3461025c575f36600319011261025c575f546040516001600160a01b039091168152602090f35b3461025c575f36600319011261025c576020600654604051908152f35b3461025c575f36600319011261025c5761089e60405161088060408261224a565b60058152640352e302e360dc1b6020820152604051918291826121d8565b0390f35b3461025c57604036600319011261025c576108c86108be612202565b602435903361259c565b602060405160018152f35b3461025c575f36600319011261025c576020600754421015604051908152f35b3461025c57602036600319011261025c5760043561090f6124fb565b610917612533565b8015610a685761093561092c600554836123b3565b600654906123c6565b6002548015159081610a47575b50610a3857600454610962908390309033906001600160a01b031661265a565b3315610a2557602091610983825f5160206127e05f395f51905f52546122dc565b5f5160206127e05f395f51905f5255335f525f5160206127a05f395f51905f52835260405f208281540190556040518281525f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef853393a360405190815281838201527f1cbc5ab135991bd2b6a4b034a04aa2aa086dac1371cb9b16b8b5e2ed6b036bed60403392a260015f5160206128405f395f51905f5255604051908152f35b63ec442f0560e01b5f525f60045260245ffd5b631c4af3c960e11b5f5260045ffd5b9050610a61825f5160206127e05f395f51905f52546122dc565b1183610942565b63162908e360e11b5f5260045ffd5b3461025c57602036600319011261025c576004355f52600860205260c060405f2060018060a01b0381541690600181015490600281015460038201549060ff6005600485015494015416936040519586526020860152604085015260608401526080830152151560a0820152f35b3461025c575f36600319011261025c576040515f5f5160206127c05f395f51905f5254610b1181612360565b8084529060018116908115610baf5750600114610b45575b61089e83610b398185038261224a565b604051918291826121d8565b5f5160206127c05f395f51905f525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610b9557509091508101602001610b39610b29565b919260018160209254838588010152019101909291610b7d565b60ff191660208086019190915291151560051b84019091019150610b399050610b29565b3461025c575f36600319011261025c5760206040516c0c9f2c9cd04674edea400000008152f35b3461025c5761010036600319011261025c5760043567ffffffffffffffff811161025c57610c2c9036906004016122be565b60243567ffffffffffffffff811161025c57610c4c9036906004016122be565b906044356001600160a01b038116919082900361025c576084356001600160a01b0381169390929084840361025c5760c4359260e435945f5160206128605f395f51905f52549660ff8860401c16159767ffffffffffffffff811680159081611171575b6001149081611167575b15908161115e575b5061114f5767ffffffffffffffff1981166001175f5160206128605f395f51905f525588611123575b5061111e5750737cd017ca5ddb86861fa983a34b5f495c6f898c415b60018060a01b03166001600160601b0360a01b6004541617600455610d2a6126f6565b610d326126f6565b80519067ffffffffffffffff8211611007578190610d5d5f5160206127805f395f51905f5254612360565b601f81116110a4575b50602090601f8311600114611026575f9261101b575b50508160011b915f199060031b1c1916175f5160206127805f395f51905f52555b80519067ffffffffffffffff8211611007578190610dc85f5160206127c05f395f51905f5254612360565b601f8111610f8d575b50602090601f8311600114610f0f575f92610f04575b50508160011b915f199060031b1c1916175f5160206127c05f395f51905f52555b610e106126f6565b610e186126f6565b610e206126f6565b60015f5160206128405f395f51905f5255610e396126f6565b336001600160601b0360a01b5f5416175f556001600160601b0360a01b600154161760015560643560025580155f14610eff57506c0c9f2c9cd04674edea400000005b60055580610efa57506c0c9f2c9cd04674edea400000005b60065560a435600755610ea357005b68ff0000000000000000195f5160206128605f395f51905f5254165f5160206128605f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b610e94565b610e7c565b015190508680610de7565b5f5160206127c05f395f51905f525f9081528281209350601f198516905b818110610f755750908460019594939210610f5d575b505050811b015f5160206127c05f395f51905f5255610e08565b01515f1960f88460031b161c19169055868080610f43565b92936020600181928786015181550195019301610f2d565b5f5160206127c05f395f51905f525f529091507f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f840160051c81019160208510610ffd575b90601f859493920160051c01905b818110610fef5750610dd1565b5f8155849350600101610fe2565b9091508190610fd4565b634e487b7160e01b5f52604160045260245ffd5b015190508780610d7c565b5f5160206127805f395f51905f525f9081528281209350601f198516905b81811061108c5750908460019594939210611074575b505050811b015f5160206127805f395f51905f5255610d9d565b01515f1960f88460031b161c1916905587808061105a565b92936020600181928786015181550195019301611044565b5f5160206127805f395f51905f525f529091507f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f840160051c81019160208510611114575b90601f859493920160051c01905b8181106111065750610d66565b5f81558493506001016110f9565b90915081906110eb565b610d07565b68ffffffffffffffffff191668010000000000000001175f5160206128605f395f51905f525588610ceb565b63f92ee8a960e01b5f5260045ffd5b9050158a610cc2565b303b159150610cba565b8a9150610cb0565b3461025c575f36600319011261025c576020600a54604051908152f35b3461025c575f36600319011261025c575f546001600160a01b0316330361042c576111bf612533565b600160ff195f5160206128205f395f51905f525416175f5160206128205f395f51905f52557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b3461025c575f36600319011261025c5761010061122b6122e9565b611233612437565b6003545f5160206127e05f395f51905f5254600254600554916006549360075495604051978852602088015260408701526060860152608085015260a084015260c083015260e0820152f35b3461025c57602036600319011261025c575f54600435906001600160a01b0316330361042c576020817f416fcf16acb00f8607906e6ef2dc1a381d4bf32971ab1c3d2f73e4160718df4892600755604051908152a1005b3461025c57602036600319011261025c57600154600435906001600160a01b0316330361042c576113056124fb565b61130d612533565b8015610a68576003547fc9f7a13e1c4c85a54db88e66f7e4e45fd1c96aa33d720e0c7d737d2fe0c35589916020918181811061137f5750505f6003555b600454611365908290309033906001600160a01b031661265a565b604051908152a160015f5160206128405f395f51905f5255005b611388916123a6565b60035561134a565b3461025c57602036600319011261025c576004356113ac6124fb565b6113b4612533565b8015610a6857335f525f5160206127a05f395f51905f526020528060405f2054106116085760075442106115f9576113f1610284600654836123b3565b9033156115e657335f525f5160206127a05f395f51905f5260205260405f20548181106115cd578190335f525f5160206127a05f395f51905f526020520360405f2055805f5160206127e05f395f51905f5254035f5160206127e05f395f51905f52555f6040518281527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a3600a54906040516114918161222e565b338152600560208201918383526040810186815260608201428152608083019187835260a08401955f8752885f52600860205260405f209460018060a01b039051166001600160601b0360a01b865416178555516001850155516002840155516003830155516004820155019051151560ff80198354169116179055335f52600960205260405f20928354936801000000000000000085101561100757600185018082558510156115b957838092816020977f20f7dfd9f0abf903e86253c3c8003c824588449e922c1950794a7e95482fde9f945f52885f200155611577600a54612398565b600a55611585600c54612398565b600c556040805195865260208601919091528401523392606090a360015f5160206128405f395f51905f5255604051908152f35b634e487b7160e01b5f52603260045260245ffd5b63391434e360e21b5f523360045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b63326d51b360e21b5f5260045ffd5b637035ce0760e01b5f5260045ffd5b3461025c57602036600319011261025c576001600160a01b03611638612202565b165f525f5160206127a05f395f51905f52602052602060405f2054604051908152f35b3461025c575f36600319011261025c576020600754604051908152f35b3461025c575f36600319011261025c576020600554604051908152f35b3461025c57602036600319011261025c576001600160a01b036116b6612202565b165f52600960205260405f20604051806020835491828152019081935f5260205f20905f5b81811061173357505050816116f191038261224a565b604051918291602083019060208452518091526040830191905f5b81811061171a575050500390f35b825184528594506020938401939092019160010161170c565b82548452602090930192600192830192016116db565b3461025c575f36600319011261025c57602061028d6123e4565b3461025c575f36600319011261025c57602060ff5f5160206128205f395f51905f5254166040519015158152f35b3461025c575f36600319011261025c576020600b54604051908152f35b3461025c575f36600319011261025c57600b54600a54600c5460408051938452602084019290925290820152606090f35b3461025c575f36600319011261025c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036118365760206040515f5160206128005f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b604036600319011261025c57611859612202565b60243567ffffffffffffffff811161025c573660238201121561025c5761188a903690602481600401359101612288565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115611a34575b50611836575f546001600160a01b0316330361042c576040516352d1902d60e01b81526001600160a01b0383169290602081600481875afa5f9181611a00575b506119175783634c9c8ce360e01b5f5260045260245ffd5b805f5160206128005f395f51905f528592036119ee5750813b156119dc575f5160206128005f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151156119c4575f808360206119ba95519101845af43d156119bc573d9161199e8361226c565b926119ac604051948561224a565b83523d5f602085013e612721565b005b606091612721565b5050346119cd57005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d602011611a2c575b81611a1c6020938361224a565b8101031261025c575190856118ff565b3d9150611a0f565b5f5160206128005f395f51905f52546001600160a01b031614159050836118bf565b3461025c575f36600319011261025c576001546040516001600160a01b039091168152602090f35b3461025c57602036600319011261025c57602061028d61092c6005546004356123b3565b3461025c575f36600319011261025c575f546001600160a01b0316330361042c575f5160206128205f395f51905f525460ff811615611b1a5760ff19165f5160206128205f395f51905f52557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b5f5260045ffd5b3461025c575f36600319011261025c57602060405160128152f35b3461025c57602036600319011261025c57600435611b606124fb565b611b68612533565b5f5f9160018060a01b036001541633141580611e52575b61042c578015611e43576024602060018060a01b0360045416604051928380926370a0823160e01b82523060048301525afa908115611e38575f91611e06575b5092909192600b5491825b600a54811080611dfd575b15611df257805f52600860205260405f2090600582019360ff855416611de457600283018054909590808310611cc1576004548554611c4f94611c499490939092611c2c926001600160a01b03908116911661255a565b600160ff19825416179055611c43875480926123a6565b956122dc565b97612398565b93600c548015611cad575f1901600c5591549154604051908152611ca4926001600160a01b03169082907fa6f8d99476ac27e3ad3ba71b521ed76898081c2e37dfe7bbc219456306b8b07090602090a3612398565b94909194611bca565b634e487b7160e01b5f52601160045260245ffd5b505050505091939250505b81611d2e575b7f59d088174aee33f5ff817f6507a076513b43d5b623c805aaca6d79677742f6e76080604094600b54865191825260208201528486820152836060820152a160015f5160206128405f395f51905f525582519182526020820152f35b90600b545b600a549081811015611db657805f52600860205260ff600560405f2001541615611d7d575f19820191808311611cad576001928214611d74575b5001611d33565b600b5585611d6d565b7f59d088174aee33f5ff817f6507a076513b43d5b623c805aaca6d79677742f6e79150604094608091600b959495555b94505050611cd2565b5050907f59d088174aee33f5ff817f6507a076513b43d5b623c805aaca6d79677742f6e76080604094611dad565b92969350611ca49150612398565b509193925050611ccc565b50848610611bd5565b90506020813d602011611e30575b81611e216020938361224a565b8101031261025c575184611bbf565b3d9150611e14565b6040513d5f823e3d90fd5b637862e95960e01b5f5260045ffd5b505f546001600160a01b0316331415611b7f565b3461025c57606036600319011261025c57611e7f612202565b611e87612218565b60443590611e94836123ff565b335f9081526020919091526040902054925f198410611eb8575b6108c8935061259c565b828410611f23576001600160a01b03811615611f10573315611efd576108c893611ee1826123ff565b60018060a01b0333165f526020528360405f2091039055611eae565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b8284637dc7a0d960e11b5f523360045260245260445260645ffd5b3461025c575f36600319011261025c5760205f5160206127e05f395f51905f5254604051908152f35b3461025c57604036600319011261025c57611f80612202565b60015460243591906001600160a01b0316330361042c57611f9f6124fb565b611fa7612533565b8115610a6857600480546040516370a0823160e01b815230928101929092526001600160a01b031690602081602481855afa908115611e38575f91612050575b508311610a68578161202c847f9c7d81f5c562ad9c8121c58f01611d162a1a92cd745d05620728cbf3b497d94694602094612024836003546122dc565b60035561255a565b6040519384526001600160a01b031692a260015f5160206128405f395f51905f5255005b90506020813d60201161207a575b8161206b6020938361224a565b8101031261025c575184611fe7565b3d915061205e565b3461025c57604036600319011261025c5761209b612202565b602435903315611f10576001600160a01b0316908115611efd576120be336123ff565b825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b3461025c575f36600319011261025c576040515f5f5160206127805f395f51905f525461212d81612360565b8084529060018116908115610baf57506001146121545761089e83610b398185038261224a565b5f5160206127805f395f51905f525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b8082106121a457509091508101602001610b39610b29565b91926001816020925483858801015201910190929161218c565b3461025c575f36600319011261025c57602061028d6122e9565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361025c57565b602435906001600160a01b038216820361025c57565b60c0810190811067ffffffffffffffff82111761100757604052565b90601f8019910116810190811067ffffffffffffffff82111761100757604052565b67ffffffffffffffff811161100757601f01601f191660200190565b9291926122948261226c565b916122a2604051938461224a565b82948184528183011161025c578281602093845f960137010152565b9080601f8301121561025c578160206122d993359101612288565b90565b91908201809211611cad57565b6024602060018060a01b0360045416604051928380926370a0823160e01b82523060048301525afa8015611e38575f9061232c575b6122d99150600354906122dc565b506020813d602011612358575b816123466020938361224a565b8101031261025c576122d9905161231e565b3d9150612339565b90600182811c9216801561238e575b602083101461237a57565b634e487b7160e01b5f52602260045260245ffd5b91607f169161236f565b5f198114611cad5760010190565b91908203918211611cad57565b81810292918115918404141715611cad57565b81156123d0570490565b634e487b7160e01b5f52601260045260245ffd5b600754804210156123fa576122d99042906123a6565b505f90565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6024602060018060a01b0360045416604051928380926370a0823160e01b82523060048301525afa908115611e38575f91612470575090565b90506020813d602011612497575b8161248b6020938361224a565b8101031261025c575190565b3d915061247e565b80518210156115b95760209160051b010190565b67ffffffffffffffff81116110075760051b60200190565b604051906124d88261222e565b5f60a0838281528260208201528260408201528260608201528260808201520152565b60025f5160206128405f395f51905f5254146125245760025f5160206128405f395f51905f5255565b633ee5aeb560e01b5f5260045ffd5b60ff5f5160206128205f395f51905f52541661254b57565b63d93c066560e01b5f5260045ffd5b60405163a9059cbb60e01b60208201526001600160a01b03909216602483015260448083019390935291815261259a9161259560648361224a565b61269e565b565b6001600160a01b03169081156115e6576001600160a01b0316918215610a2557815f525f5160206127a05f395f51905f5260205260405f205481811061264157817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f5160206127a05f395f51905f5284520360405f2055845f525f5160206127a05f395f51905f52825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815261259a9161259560848361224a565b905f602091828151910182855af115611e38575f513d6126ed57506001600160a01b0381163b155b6126cd5750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b600114156126c6565b60ff5f5160206128605f395f51905f525460401c161561271257565b631afcd79f60e31b5f5260045ffd5b90612745575080511561273657602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580612776575b612756575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561274e56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0452c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbccd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212201f1358957b47775a60c2dd846b3563898a239d5d44d14c2be767f5dfc475214264736f6c634300081e0033","sourceMap":"739:18692:9:-:0;;;;;;;1171:4:26;1163:13;;739:18692:9;;;;;;1163:13:26;739:18692:9;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"60806040526004361015610011575f80fd5b5f3560e01c806301e1d114146121be57806306fdde0314612101578063095ea7b31461208257806311a270cc14611f6757806318160ddd14611f3e578063188c26cc146107d657806323b872dd14611e6657806329a2644514611b44578063313ce56714611b295780633f4ba83a14611aa25780634815327914611a7e578063481c6a7514611a565780634f1ef2861461184557806352d1902d146117df578063532e20b5146117ae5780635985aa91146117915780635c975abb146117635780635caa814f1461174957806360df7c6c1461169557806361b4fbde146116785780636d1b77111461165b57806370a08231146116175780637229bc3c1461139057806373a33877146112d6578063792fbf3b1461127f5780637f98aa71146112105780638456cb59146111965780638db5888a146111795780638dc9bf2814610bfa57806395082d2514610bd357806395d89b4114610ae5578063992a7dfb14610a77578063a2874172146108f3578063a747f072146108d3578063a9059cbb146108a2578063ad3cb1cc1461085f578063adcc40cb14610842578063c45a01551461081b578063c62db206146107f3578063ca1d4dbf146107d6578063d0ebdbe714610767578063d18d944b146106ec578063dd62ed3e146106a5578063e16b03a31461068b578063e3992fc01461043b578063ef88d7f01461038e578063f34d4c63146102b2578063f4a0877f14610295578063fb3dd95f146102605763fb86a4041461023f575f80fd5b3461025c575f36600319011261025c576020600254604051908152f35b5f80fd5b3461025c57602036600319011261025c57602061028d6102846006546004356123b3565b600554906123c6565b604051908152f35b3461025c575f36600319011261025c576020600354604051908152f35b3461025c57602036600319011261025c576004356102ce6124cb565b50600a5481101561037f575f52600860205260c060405f2060ff6005604051926102f78461222e565b60018060a01b03815416845260018101546020850152600281015460408501526003810154606085015260048101546080850152015416151560a082015261037d604051809260a08091600180831b0381511684526020810151602085015260408101516040850152606081015160608501526080810151608085015201511515910152565bf35b632589d98f60e11b5f5260045ffd5b3461025c57604036600319011261025c575f5460243590600435906001600160a01b0316330361042c5780158015610424575b610416577f15819dd2fd9f6418b142e798d08a18d0bf06ea368f4480b7b0d3f75bd966bc489181600555806006556104116040519283924291846040919493926060820195825260208201520152565b0390a1005b62bfc92160e01b5f5260045ffd5b5081156103c1565b631dd2188d60e31b5f5260045ffd5b3461025c57602036600319011261025c576001600160a01b0361045c612202565b165f52600960205260405f20604051808260208294549384815201905f5260205f20925f5b8181106106725750506104969250038261224a565b5f5f5b82518110156104e1576104ac818461249f565b515f52600860205260ff600560405f20015416156104cd575b600101610499565b906104d9600191612398565b9190506104c5565b506104eb816124b3565b906104f9604051928361224a565b808252610508601f19916124b3565b015f5b81811061065b5750505f905f5b83518110156105d05761052b818561249f565b51805f52600860205260ff600560405f200154161561054e575b50600101610518565b600191936105c9915f52600860205260405f2060ff6005604051926105728461222e565b868060a01b038154168452868101546020850152600281015460408501526003810154606085015260048101546080850152015416151560a08201526105b8828661249f565b526105c3818561249f565b50612398565b9290610545565b506040518091602082016020835281518091526020604084019201905f5b8181106105fc575050500390f35b91935091602060c08261064d600194885160a08091600180831b0381511684526020810151602085015260408101516040850152606081015160608501526080810151608085015201511515910152565b0194019101918493926105ee565b6020906106666124cb565b8282860101520161050b565b8454835260019485019486945060209093019201610481565b3461025c575f36600319011261025c57602061028d612437565b3461025c57604036600319011261025c576106be612202565b6106cf6106c9612218565b916123ff565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461025c57602036600319011261025c575f54600435906001600160a01b0316330361042c575f5160206127e05f395f51905f52548110610758576020817f917681cdf3d8a5ef720fb56128d5382782db742feb1d89fc6d376111254537b192600255604051908152a1005b631a683d1960e11b5f5260045ffd5b3461025c57602036600319011261025c57610780612202565b5f546001600160a01b0316330361042c57600180546001600160a01b0319166001600160a01b039290921691821790557f60a0f5b9f9e81e98216071b85826681c796256fe3d1354ecb675580fba64fa695f80a2005b3461025c575f36600319011261025c576020600c54604051908152f35b3461025c575f36600319011261025c576004546040516001600160a01b039091168152602090f35b3461025c575f36600319011261025c575f546040516001600160a01b039091168152602090f35b3461025c575f36600319011261025c576020600654604051908152f35b3461025c575f36600319011261025c5761089e60405161088060408261224a565b60058152640352e302e360dc1b6020820152604051918291826121d8565b0390f35b3461025c57604036600319011261025c576108c86108be612202565b602435903361259c565b602060405160018152f35b3461025c575f36600319011261025c576020600754421015604051908152f35b3461025c57602036600319011261025c5760043561090f6124fb565b610917612533565b8015610a685761093561092c600554836123b3565b600654906123c6565b6002548015159081610a47575b50610a3857600454610962908390309033906001600160a01b031661265a565b3315610a2557602091610983825f5160206127e05f395f51905f52546122dc565b5f5160206127e05f395f51905f5255335f525f5160206127a05f395f51905f52835260405f208281540190556040518281525f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef853393a360405190815281838201527f1cbc5ab135991bd2b6a4b034a04aa2aa086dac1371cb9b16b8b5e2ed6b036bed60403392a260015f5160206128405f395f51905f5255604051908152f35b63ec442f0560e01b5f525f60045260245ffd5b631c4af3c960e11b5f5260045ffd5b9050610a61825f5160206127e05f395f51905f52546122dc565b1183610942565b63162908e360e11b5f5260045ffd5b3461025c57602036600319011261025c576004355f52600860205260c060405f2060018060a01b0381541690600181015490600281015460038201549060ff6005600485015494015416936040519586526020860152604085015260608401526080830152151560a0820152f35b3461025c575f36600319011261025c576040515f5f5160206127c05f395f51905f5254610b1181612360565b8084529060018116908115610baf5750600114610b45575b61089e83610b398185038261224a565b604051918291826121d8565b5f5160206127c05f395f51905f525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610b9557509091508101602001610b39610b29565b919260018160209254838588010152019101909291610b7d565b60ff191660208086019190915291151560051b84019091019150610b399050610b29565b3461025c575f36600319011261025c5760206040516c0c9f2c9cd04674edea400000008152f35b3461025c5761010036600319011261025c5760043567ffffffffffffffff811161025c57610c2c9036906004016122be565b60243567ffffffffffffffff811161025c57610c4c9036906004016122be565b906044356001600160a01b038116919082900361025c576084356001600160a01b0381169390929084840361025c5760c4359260e435945f5160206128605f395f51905f52549660ff8860401c16159767ffffffffffffffff811680159081611171575b6001149081611167575b15908161115e575b5061114f5767ffffffffffffffff1981166001175f5160206128605f395f51905f525588611123575b5061111e5750737cd017ca5ddb86861fa983a34b5f495c6f898c415b60018060a01b03166001600160601b0360a01b6004541617600455610d2a6126f6565b610d326126f6565b80519067ffffffffffffffff8211611007578190610d5d5f5160206127805f395f51905f5254612360565b601f81116110a4575b50602090601f8311600114611026575f9261101b575b50508160011b915f199060031b1c1916175f5160206127805f395f51905f52555b80519067ffffffffffffffff8211611007578190610dc85f5160206127c05f395f51905f5254612360565b601f8111610f8d575b50602090601f8311600114610f0f575f92610f04575b50508160011b915f199060031b1c1916175f5160206127c05f395f51905f52555b610e106126f6565b610e186126f6565b610e206126f6565b60015f5160206128405f395f51905f5255610e396126f6565b336001600160601b0360a01b5f5416175f556001600160601b0360a01b600154161760015560643560025580155f14610eff57506c0c9f2c9cd04674edea400000005b60055580610efa57506c0c9f2c9cd04674edea400000005b60065560a435600755610ea357005b68ff0000000000000000195f5160206128605f395f51905f5254165f5160206128605f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b610e94565b610e7c565b015190508680610de7565b5f5160206127c05f395f51905f525f9081528281209350601f198516905b818110610f755750908460019594939210610f5d575b505050811b015f5160206127c05f395f51905f5255610e08565b01515f1960f88460031b161c19169055868080610f43565b92936020600181928786015181550195019301610f2d565b5f5160206127c05f395f51905f525f529091507f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f840160051c81019160208510610ffd575b90601f859493920160051c01905b818110610fef5750610dd1565b5f8155849350600101610fe2565b9091508190610fd4565b634e487b7160e01b5f52604160045260245ffd5b015190508780610d7c565b5f5160206127805f395f51905f525f9081528281209350601f198516905b81811061108c5750908460019594939210611074575b505050811b015f5160206127805f395f51905f5255610d9d565b01515f1960f88460031b161c1916905587808061105a565b92936020600181928786015181550195019301611044565b5f5160206127805f395f51905f525f529091507f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f840160051c81019160208510611114575b90601f859493920160051c01905b8181106111065750610d66565b5f81558493506001016110f9565b90915081906110eb565b610d07565b68ffffffffffffffffff191668010000000000000001175f5160206128605f395f51905f525588610ceb565b63f92ee8a960e01b5f5260045ffd5b9050158a610cc2565b303b159150610cba565b8a9150610cb0565b3461025c575f36600319011261025c576020600a54604051908152f35b3461025c575f36600319011261025c575f546001600160a01b0316330361042c576111bf612533565b600160ff195f5160206128205f395f51905f525416175f5160206128205f395f51905f52557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b3461025c575f36600319011261025c5761010061122b6122e9565b611233612437565b6003545f5160206127e05f395f51905f5254600254600554916006549360075495604051978852602088015260408701526060860152608085015260a084015260c083015260e0820152f35b3461025c57602036600319011261025c575f54600435906001600160a01b0316330361042c576020817f416fcf16acb00f8607906e6ef2dc1a381d4bf32971ab1c3d2f73e4160718df4892600755604051908152a1005b3461025c57602036600319011261025c57600154600435906001600160a01b0316330361042c576113056124fb565b61130d612533565b8015610a68576003547fc9f7a13e1c4c85a54db88e66f7e4e45fd1c96aa33d720e0c7d737d2fe0c35589916020918181811061137f5750505f6003555b600454611365908290309033906001600160a01b031661265a565b604051908152a160015f5160206128405f395f51905f5255005b611388916123a6565b60035561134a565b3461025c57602036600319011261025c576004356113ac6124fb565b6113b4612533565b8015610a6857335f525f5160206127a05f395f51905f526020528060405f2054106116085760075442106115f9576113f1610284600654836123b3565b9033156115e657335f525f5160206127a05f395f51905f5260205260405f20548181106115cd578190335f525f5160206127a05f395f51905f526020520360405f2055805f5160206127e05f395f51905f5254035f5160206127e05f395f51905f52555f6040518281527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a3600a54906040516114918161222e565b338152600560208201918383526040810186815260608201428152608083019187835260a08401955f8752885f52600860205260405f209460018060a01b039051166001600160601b0360a01b865416178555516001850155516002840155516003830155516004820155019051151560ff80198354169116179055335f52600960205260405f20928354936801000000000000000085101561100757600185018082558510156115b957838092816020977f20f7dfd9f0abf903e86253c3c8003c824588449e922c1950794a7e95482fde9f945f52885f200155611577600a54612398565b600a55611585600c54612398565b600c556040805195865260208601919091528401523392606090a360015f5160206128405f395f51905f5255604051908152f35b634e487b7160e01b5f52603260045260245ffd5b63391434e360e21b5f523360045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b63326d51b360e21b5f5260045ffd5b637035ce0760e01b5f5260045ffd5b3461025c57602036600319011261025c576001600160a01b03611638612202565b165f525f5160206127a05f395f51905f52602052602060405f2054604051908152f35b3461025c575f36600319011261025c576020600754604051908152f35b3461025c575f36600319011261025c576020600554604051908152f35b3461025c57602036600319011261025c576001600160a01b036116b6612202565b165f52600960205260405f20604051806020835491828152019081935f5260205f20905f5b81811061173357505050816116f191038261224a565b604051918291602083019060208452518091526040830191905f5b81811061171a575050500390f35b825184528594506020938401939092019160010161170c565b82548452602090930192600192830192016116db565b3461025c575f36600319011261025c57602061028d6123e4565b3461025c575f36600319011261025c57602060ff5f5160206128205f395f51905f5254166040519015158152f35b3461025c575f36600319011261025c576020600b54604051908152f35b3461025c575f36600319011261025c57600b54600a54600c5460408051938452602084019290925290820152606090f35b3461025c575f36600319011261025c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036118365760206040515f5160206128005f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b604036600319011261025c57611859612202565b60243567ffffffffffffffff811161025c573660238201121561025c5761188a903690602481600401359101612288565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115611a34575b50611836575f546001600160a01b0316330361042c576040516352d1902d60e01b81526001600160a01b0383169290602081600481875afa5f9181611a00575b506119175783634c9c8ce360e01b5f5260045260245ffd5b805f5160206128005f395f51905f528592036119ee5750813b156119dc575f5160206128005f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151156119c4575f808360206119ba95519101845af43d156119bc573d9161199e8361226c565b926119ac604051948561224a565b83523d5f602085013e612721565b005b606091612721565b5050346119cd57005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d602011611a2c575b81611a1c6020938361224a565b8101031261025c575190856118ff565b3d9150611a0f565b5f5160206128005f395f51905f52546001600160a01b031614159050836118bf565b3461025c575f36600319011261025c576001546040516001600160a01b039091168152602090f35b3461025c57602036600319011261025c57602061028d61092c6005546004356123b3565b3461025c575f36600319011261025c575f546001600160a01b0316330361042c575f5160206128205f395f51905f525460ff811615611b1a5760ff19165f5160206128205f395f51905f52557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b5f5260045ffd5b3461025c575f36600319011261025c57602060405160128152f35b3461025c57602036600319011261025c57600435611b606124fb565b611b68612533565b5f5f9160018060a01b036001541633141580611e52575b61042c578015611e43576024602060018060a01b0360045416604051928380926370a0823160e01b82523060048301525afa908115611e38575f91611e06575b5092909192600b5491825b600a54811080611dfd575b15611df257805f52600860205260405f2090600582019360ff855416611de457600283018054909590808310611cc1576004548554611c4f94611c499490939092611c2c926001600160a01b03908116911661255a565b600160ff19825416179055611c43875480926123a6565b956122dc565b97612398565b93600c548015611cad575f1901600c5591549154604051908152611ca4926001600160a01b03169082907fa6f8d99476ac27e3ad3ba71b521ed76898081c2e37dfe7bbc219456306b8b07090602090a3612398565b94909194611bca565b634e487b7160e01b5f52601160045260245ffd5b505050505091939250505b81611d2e575b7f59d088174aee33f5ff817f6507a076513b43d5b623c805aaca6d79677742f6e76080604094600b54865191825260208201528486820152836060820152a160015f5160206128405f395f51905f525582519182526020820152f35b90600b545b600a549081811015611db657805f52600860205260ff600560405f2001541615611d7d575f19820191808311611cad576001928214611d74575b5001611d33565b600b5585611d6d565b7f59d088174aee33f5ff817f6507a076513b43d5b623c805aaca6d79677742f6e79150604094608091600b959495555b94505050611cd2565b5050907f59d088174aee33f5ff817f6507a076513b43d5b623c805aaca6d79677742f6e76080604094611dad565b92969350611ca49150612398565b509193925050611ccc565b50848610611bd5565b90506020813d602011611e30575b81611e216020938361224a565b8101031261025c575184611bbf565b3d9150611e14565b6040513d5f823e3d90fd5b637862e95960e01b5f5260045ffd5b505f546001600160a01b0316331415611b7f565b3461025c57606036600319011261025c57611e7f612202565b611e87612218565b60443590611e94836123ff565b335f9081526020919091526040902054925f198410611eb8575b6108c8935061259c565b828410611f23576001600160a01b03811615611f10573315611efd576108c893611ee1826123ff565b60018060a01b0333165f526020528360405f2091039055611eae565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b8284637dc7a0d960e11b5f523360045260245260445260645ffd5b3461025c575f36600319011261025c5760205f5160206127e05f395f51905f5254604051908152f35b3461025c57604036600319011261025c57611f80612202565b60015460243591906001600160a01b0316330361042c57611f9f6124fb565b611fa7612533565b8115610a6857600480546040516370a0823160e01b815230928101929092526001600160a01b031690602081602481855afa908115611e38575f91612050575b508311610a68578161202c847f9c7d81f5c562ad9c8121c58f01611d162a1a92cd745d05620728cbf3b497d94694602094612024836003546122dc565b60035561255a565b6040519384526001600160a01b031692a260015f5160206128405f395f51905f5255005b90506020813d60201161207a575b8161206b6020938361224a565b8101031261025c575184611fe7565b3d915061205e565b3461025c57604036600319011261025c5761209b612202565b602435903315611f10576001600160a01b0316908115611efd576120be336123ff565b825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b3461025c575f36600319011261025c576040515f5f5160206127805f395f51905f525461212d81612360565b8084529060018116908115610baf57506001146121545761089e83610b398185038261224a565b5f5160206127805f395f51905f525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b8082106121a457509091508101602001610b39610b29565b91926001816020925483858801015201910190929161218c565b3461025c575f36600319011261025c57602061028d6122e9565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361025c57565b602435906001600160a01b038216820361025c57565b60c0810190811067ffffffffffffffff82111761100757604052565b90601f8019910116810190811067ffffffffffffffff82111761100757604052565b67ffffffffffffffff811161100757601f01601f191660200190565b9291926122948261226c565b916122a2604051938461224a565b82948184528183011161025c578281602093845f960137010152565b9080601f8301121561025c578160206122d993359101612288565b90565b91908201809211611cad57565b6024602060018060a01b0360045416604051928380926370a0823160e01b82523060048301525afa8015611e38575f9061232c575b6122d99150600354906122dc565b506020813d602011612358575b816123466020938361224a565b8101031261025c576122d9905161231e565b3d9150612339565b90600182811c9216801561238e575b602083101461237a57565b634e487b7160e01b5f52602260045260245ffd5b91607f169161236f565b5f198114611cad5760010190565b91908203918211611cad57565b81810292918115918404141715611cad57565b81156123d0570490565b634e487b7160e01b5f52601260045260245ffd5b600754804210156123fa576122d99042906123a6565b505f90565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6024602060018060a01b0360045416604051928380926370a0823160e01b82523060048301525afa908115611e38575f91612470575090565b90506020813d602011612497575b8161248b6020938361224a565b8101031261025c575190565b3d915061247e565b80518210156115b95760209160051b010190565b67ffffffffffffffff81116110075760051b60200190565b604051906124d88261222e565b5f60a0838281528260208201528260408201528260608201528260808201520152565b60025f5160206128405f395f51905f5254146125245760025f5160206128405f395f51905f5255565b633ee5aeb560e01b5f5260045ffd5b60ff5f5160206128205f395f51905f52541661254b57565b63d93c066560e01b5f5260045ffd5b60405163a9059cbb60e01b60208201526001600160a01b03909216602483015260448083019390935291815261259a9161259560648361224a565b61269e565b565b6001600160a01b03169081156115e6576001600160a01b0316918215610a2557815f525f5160206127a05f395f51905f5260205260405f205481811061264157817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f5160206127a05f395f51905f5284520360405f2055845f525f5160206127a05f395f51905f52825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815261259a9161259560848361224a565b905f602091828151910182855af115611e38575f513d6126ed57506001600160a01b0381163b155b6126cd5750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b600114156126c6565b60ff5f5160206128605f395f51905f525460401c161561271257565b631afcd79f60e31b5f5260045ffd5b90612745575080511561273657602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580612776575b612756575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561274e56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0452c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbccd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212201f1358957b47775a60c2dd846b3563898a239d5d44d14c2be767f5dfc475214264736f6c634300081e0033","sourceMap":"739:18692:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;;1444:22;739:18692;;;;;;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;;18564:33;18565:19;18577:7;739:18692;;;18565:19;:::i;:::-;18588:9;739:18692;18564:33;;:::i;:::-;739:18692;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;;1528:28;739:18692;;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;;;;;:::i;:::-;;13351:16;739:18692;13337:30;;;13333:60;;739:18692;;13410:16;739:18692;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13333:60;13376:17;;;739:18692;13376:17;739:18692;;13376:17;739:18692;;;;;;-1:-1:-1;;739:18692:9;;;;;;;;;;;;-1:-1:-1;;;;;739:18692:9;3782:10;:21;3778:45;;7296:15;;:32;;;;739:18692;7292:59;;7444:51;739:18692;;7370:22;739:18692;;7402:18;739:18692;7444:51;739:18692;;7479:15;;;;7444:51;;739:18692;;;;;;;;;;;;;;;;;;7444:51;;;;739:18692;7292:59;7337:14;;;739:18692;7337:14;739:18692;;7337:14;7296:32;7315:13;;;7296:32;;3778:45;3918:11;;;739:18692;3812:11;739:18692;;3812:11;739:18692;;;;;;-1:-1:-1;;739:18692:9;;;;-1:-1:-1;;;;;739:18692:9;;:::i;:::-;;;;14070:14;739:18692;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;14235:3;739:18692;;14212:21;;;;;14276:13;;;;:::i;:::-;739:18692;;;14259:16;739:18692;;;14259:41;739:18692;;;14259:41;739:18692;;14258:42;14254:95;;14235:3;739:18692;;14197:13;;14254:95;14320:14;;739:18692;14320:14;;:::i;:::-;14254:95;;;;;14212:21;;739:18692;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;14470:17;;739:18692;14502:13;739:18692;14540:3;739:18692;;14517:21;;;;;14579:13;;;;:::i;:::-;739:18692;;;;14259:16;739:18692;;;14259:41;739:18692;;;14611:37;739:18692;;14610:38;14606:154;;14540:3;;739:18692;;14502:13;;14606:154;739:18692;;;14738:7;739:18692;;;14259:16;739:18692;;;;;;14259:41;739:18692;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14668:52;;;;:::i;:::-;;;;;;:::i;:::-;;14738:7;:::i;:::-;14606:154;;;;14517:21;;739:18692;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;739:18692:9;;;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;739:18692:9;;;;;;:::i;:::-;4771:20:27;739:18692:9;;:::i;:::-;4771:20:27;;:::i;:::-;:29;739:18692:9;;;;;;-1:-1:-1;739:18692:9;;;;;-1:-1:-1;739:18692:9;;;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;;;;;;-1:-1:-1;;;;;739:18692:9;3782:10;:21;3778:45;;-1:-1:-1;;;;;;;;;;;739:18692:9;5871:24;;5867:53;;739:18692;;5963:20;739:18692;3981:14:27;739:18692:9;;;;;;5963:20;739:18692;5867:53;5904:16;;;739:18692;5904:16;739:18692;;5904:16;739:18692;;;;;;-1:-1:-1;;739:18692:9;;;;;;:::i;:::-;;;-1:-1:-1;;;;;739:18692:9;3782:10;:21;3778:45;;739:18692;;;-1:-1:-1;;;;;;739:18692:9;-1:-1:-1;;;;;739:18692:9;;;;;;;;;6191:20;-1:-1:-1;;6191:20:9;739:18692;;;;;;;-1:-1:-1;;739:18692:9;;;;;2842:35;739:18692;;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;;;;;-1:-1:-1;;;;;739:18692:9;;;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;;;;;-1:-1:-1;;;;;739:18692:9;;;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;;1756:22;739:18692;;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;739:18692:9;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;4545:5:27;739:18692:9;;:::i;:::-;;;966:10:28;;4545:5:27;:::i;:::-;739:18692:9;;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;;15929:18;739:18692;15910:15;:37;;739:18692;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;;;3361:103:30;;:::i;:::-;1944:72:29;;:::i;:::-;7877:16:9;;7873:44;;7988:35;7989:23;8003:9;739:18692;7989:23;;:::i;:::-;8016:7;739:18692;7988:35;;:::i;:::-;8070:7;739:18692;8070:11;;;:49;;;;739:18692;8066:104;;;739:18692;;8274:11;;739:18692;;8267:4;;8247:10;;-1:-1:-1;;;;;739:18692:9;8274:11;:::i;:::-;8247:10;8707:21:27;8703:91;;739:18692:9;;7402:23:27;739:18692:9;-1:-1:-1;;;;;;;;;;;739:18692:9;7402:23:27;:::i;:::-;-1:-1:-1;;;;;;;;;;;739:18692:9;8247:10;739:18692;;-1:-1:-1;;;;;;;;;;;739:18692:9;;;;;;;;;;;;;;;;;8262:25:27;8247:10:9;;8262:25:27;;739:18692:9;;;;;;;;;;8376:38;739:18692;8247:10;8376:38;;739:18692;-1:-1:-1;;;;;;;;;;;739:18692:9;;;;;;;8703:91:27;8751:32;;;739:18692:9;8751:32:27;739:18692:9;;;;;8751:32:27;8066:104:9;8142:17;;;739:18692;8142:17;739:18692;;8142:17;8070:49;739:18692;;8085:24;739:18692;-1:-1:-1;;;;;;;;;;;739:18692:9;8085:24;:::i;:::-;:34;8070:49;;;7873:44;16234:15;;;739:18692;7902:15;739:18692;;7902:15;739:18692;;;;;;-1:-1:-1;;739:18692:9;;;;;;;;2397:59;739:18692;;;;;;;;;;;;;;2397:59;739:18692;2397:59;;739:18692;2397:59;;;;739:18692;2397:59;;;739:18692;2397:59;739:18692;2397:59;739:18692;2397:59;;739:18692;2397:59;;739:18692;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;;;;-1:-1:-1;;;;;;;;;;;739:18692:9;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;739:18692:9;;;;;;;-1:-1:-1;739:18692:9;;;;;;;-1:-1:-1;739:18692:9;;-1:-1:-1;739:18692:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;;;;;;;;;;;;;;;;;-1:-1:-1;739:18692:9;;-1:-1:-1;739:18692:9;;;;;;;;-1:-1:-1;;739:18692:9;;;;;;;1860:4;739:18692;;;;;;;;;-1:-1:-1;;739:18692:9;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;739:18692:9;;;;;;;;;;;-1:-1:-1;;;;;739:18692:9;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;739:18692:9;;;;;;;4301:16:25;739:18692:9;;;;4724:16:25;;:34;;;;739:18692:9;;4788:16:25;:50;;;;739:18692:9;4853:13:25;:30;;;;739:18692:9;4849:91:25;;;-1:-1:-1;;739:18692:9;;;;-1:-1:-1;;;;;;;;;;;739:18692:9;;4977:67:25;;739:18692:9;-1:-1:-1;739:18692:9;;4819:98;4854:42;4819:98;739:18692;;;;;;-1:-1:-1;;;;;739:18692:9;;;;;;;;6891:76:25;;:::i;:::-;;;:::i;:::-;739:18692:9;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;739:18692:9;;:::i;:::-;;;;;;4819:98;739:18692;;;;;;;;;;;;;;;;;;;;11833:17:27;;;739:18692:9;2581:7:27;739:18692:9;;;;;-1:-1:-1;;;;;;;;;;;739:18692:9;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;739:18692:9;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;11833:17:27;;;739:18692:9;2581:7:27;739:18692:9;;;;;-1:-1:-1;;;;;;;;;;;739:18692:9;;6891:76:25;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;739:18692:9;-1:-1:-1;;;;;;;;;;;739:18692:9;6891:76:25;;:::i;:::-;5088:10:9;-1:-1:-1;;;;;739:18692:9;;;;;;;;-1:-1:-1;;;;;739:18692:9;;;;;;;;;;5136:18;739:18692;5258:22;;:60;:22;;;:60;1860:4;5258:60;5246:72;739:18692;5338:20;;;:56;1860:4;5338:56;5328:66;739:18692;;;5443:36;739:18692;5064:101:25;;739:18692:9;5064:101:25;739:18692:9;;-1:-1:-1;;;;;;;;;;;739:18692:9;;-1:-1:-1;;;;;;;;;;;739:18692:9;5140:14:25;739:18692:9;;;;;;5140:14:25;739:18692:9;5338:56;;;5258:60;;;739:18692;;;;-1:-1:-1;739:18692:9;;;;;-1:-1:-1;;;;;;;;;;;739:18692:9;;;;;;;;-1:-1:-1;;;739:18692:9;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;739:18692:9;;;;;;11833:17:27;;739:18692:9;;2581:7:27;739:18692:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;739:18692:9;;;;-1:-1:-1;739:18692:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;739:18692:9;;;;;;;-1:-1:-1;739:18692:9;;;;;;;;;;;;;;;;;;;;-1:-1:-1;739:18692:9;;;;;-1:-1:-1;;;;;;;;;;;739:18692:9;;;;;;;;-1:-1:-1;;;739:18692:9;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;739:18692:9;;;;;;11833:17:27;;739:18692:9;;2581:7:27;739:18692:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;739:18692:9;;;;-1:-1:-1;739:18692:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;739:18692:9;;;;;;;-1:-1:-1;739:18692:9;;;;4819:98;;;4977:67:25;-1:-1:-1;;739:18692:9;;;-1:-1:-1;;;;;;;;;;;739:18692:9;4977:67:25;;;4849:91;4906:23;;;739:18692:9;4906:23:25;739:18692:9;;4906:23:25;4853:30;4870:13;;;4853:30;;;4788:50;4816:4;4808:25;:30;;-1:-1:-1;4788:50:25;;4724:34;;;-1:-1:-1;4724:34:25;;739:18692:9;;;;;;-1:-1:-1;;739:18692:9;;;;;2626:31;739:18692;;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;;;-1:-1:-1;;;;;739:18692:9;3782:10;:21;3778:45;;1944:72:29;;:::i;:::-;3300:4;739:18692:9;;-1:-1:-1;;;;;;;;;;;739:18692:9;;;-1:-1:-1;;;;;;;;;;;739:18692:9;3319:20:29;739:18692:9;;;3782:10;739:18692;;3319:20:29;739:18692:9;;;;;;;-1:-1:-1;;739:18692:9;;;;;18980:13;;:::i;:::-;19017:12;;:::i;:::-;19056:13;739:18692;-1:-1:-1;;;;;;;;;;;739:18692:9;3981:14:27;739:18692:9;19158:9;739:18692;;19188:7;739:18692;;19227:18;739:18692;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;;;;;;-1:-1:-1;;;;;739:18692:9;3782:10;:21;3778:45;;739:18692;;6973:42;739:18692;6918:40;739:18692;;;;;;6973:42;739:18692;;;;;;;-1:-1:-1;;739:18692:9;;;;;;;;;-1:-1:-1;;;;;739:18692:9;3888:10;:21;3884:45;;3361:103:30;;:::i;:::-;1944:72:29;;:::i;:::-;16818:12:9;;16814:40;;16936:13;739:18692;17357:24;;739:18692;;;16925:24;;;;;739:18692;;;16936:13;739:18692;16921:281;739:18692;;17325:7;;739:18692;;17318:4;;3888:10;;-1:-1:-1;;;;;739:18692:9;17325:7;:::i;:::-;739:18692;;;;;17357:24;739:18692;-1:-1:-1;;;;;;;;;;;739:18692:9;;16921:281;17167:24;;;:::i;:::-;16936:13;739:18692;16921:281;;739:18692;;;;;;-1:-1:-1;;739:18692:9;;;;;;3361:103:30;;:::i;:::-;1944:72:29;;:::i;:::-;8861:14:9;;8857:42;;8923:10;739:18692;;-1:-1:-1;;;;;;;;;;;739:18692:9;;;;;;;8913:33;8909:63;;9061:18;739:18692;9043:15;:36;9039:93;;9214:33;9215:19;9227:7;739:18692;9215:19;;:::i;9214:33::-;8923:10;;9233:21:27;9229:89;;8923:10:9;739:18692;;-1:-1:-1;;;;;;;;;;;739:18692:9;;;;;;7513:19:27;;;7509:115;;8923:10:9;;;739:18692;;-1:-1:-1;;;;;;;;;;;739:18692:9;;;;;;;;-1:-1:-1;;;;;;;;;;;739:18692:9;;-1:-1:-1;;;;;;;;;;;739:18692:9;;;;;;;8262:25:27;739:18692:9;8923:10;8262:25:27;;9381:16:9;739:18692;;;;;;;:::i;:::-;8923:10;739:18692;;9238:9;739:18692;9437:233;;739:18692;;;;;9437:233;;739:18692;;;9437:233;;;9043:15;739:18692;;9437:233;;;739:18692;;;;9437:233;;;739:18692;;;;;;;9407:16;739:18692;;;;;;;;;;;;;;-1:-1:-1;;;;;739:18692:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8923:10;739:18692;;9724:14;739:18692;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9934:79;739:18692;;;;;;;;9812:18;9381:16;739:18692;9812:18;:::i;:::-;9381:16;739:18692;9888:22;;739:18692;9888:22;:::i;:::-;;739:18692;;;;;;;;;;;;;;;;;8923:10;;739:18692;;9934:79;739:18692;-1:-1:-1;;;;;;;;;;;739:18692:9;;;;;;;;;;;;;;;;;;;7509:115:27;7559:50;;;739:18692:9;7559:50:27;8923:10:9;739:18692;;;;;;;;7559:50:27;9229:89;9277:30;;;739:18692:9;9277:30:27;739:18692:9;;;;;9277:30:27;9039:93:9;9102:19;;;739:18692;9102:19;739:18692;;9102:19;8909:63;8955:17;;;739:18692;8955:17;739:18692;;8955:17;739:18692;;;;;;-1:-1:-1;;739:18692:9;;;;-1:-1:-1;;;;;739:18692:9;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;739:18692:9;;;;;;;;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;;1943:33;739:18692;;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;;1680:24;739:18692;;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;-1:-1:-1;;;;;739:18692:9;;:::i;:::-;;;;13054:14;739:18692;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;739:18692:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;739:18692:9;;;;;;-1:-1:-1;;;;;;;;;;;739:18692:9;;;;;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;;2712:33;739:18692;;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;15227:18;739:18692;15271:16;739:18692;15315:20;739:18692;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;5090:6:26;-1:-1:-1;;;;;739:18692:9;5081:4:26;5073:23;5069:145;;739:18692:9;;;-1:-1:-1;;;;;;;;;;;739:18692:9;;;5069:145:26;4844:29;;;739:18692:9;5174:29:26;739:18692:9;;5174:29:26;739:18692:9;;;-1:-1:-1;;739:18692:9;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4667:6:26;739:18692:9;4658:4:26;4650:23;;;:120;;;;739:18692:9;4633:251:26;;;739:18692:9;;-1:-1:-1;;;;;739:18692:9;3782:10;:21;3778:45;;739:18692;;-1:-1:-1;;;6131:52:26;;-1:-1:-1;;;;;739:18692:9;;;;;;;;;6131:52:26;;739:18692:9;;6131:52:26;;;739:18692:9;-1:-1:-1;6127:437:26;;1805:47:39;;;;739:18692:9;6493:60:26;739:18692:9;;;;6493:60:26;6127:437;6225:40;-1:-1:-1;;;;;;;;;;;6225:40:26;;;6221:120;;1748:29:39;;;:34;1744:119;;-1:-1:-1;;;;;;;;;;;739:18692:9;;-1:-1:-1;;;;;;739:18692:9;;;;;2407:36:39;-1:-1:-1;;2407:36:39;739:18692:9;;2458:15:39;:11;;739:18692:9;4065:25:45;;739:18692:9;4107:55:45;4065:25;;;;;;;739:18692:9;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;4107:55:45;:::i;:::-;739:18692:9;;;;4107:55:45;:::i;2454:148:39:-;6163:9;;;6159:70;;739:18692:9;6159:70:39;6199:19;;;739:18692:9;6199:19:39;739:18692:9;;6199:19:39;1744:119;1805:47;;;739:18692:9;1805:47:39;739:18692:9;;;;1805:47:39;6221:120:26;6292:34;;;739:18692:9;6292:34:26;739:18692:9;;;;6292:34:26;6131:52;;;;739:18692:9;6131:52:26;;739:18692:9;6131:52:26;;;;;;739:18692:9;6131:52:26;;;:::i;:::-;;;739:18692:9;;;;;6131:52:26;;;;;;;-1:-1:-1;6131:52:26;;4650:120;-1:-1:-1;;;;;;;;;;;739:18692:9;-1:-1:-1;;;;;739:18692:9;4728:42:26;;;-1:-1:-1;4650:120:26;;;739:18692:9;;;;;;-1:-1:-1;;739:18692:9;;;;;;;;-1:-1:-1;;;;;739:18692:9;;;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;;18226:35;18227:23;18241:9;739:18692;;;18227:23;:::i;739:18692::-;;;;;;-1:-1:-1;;739:18692:9;;;;;;-1:-1:-1;;;;;739:18692:9;3782:10;:21;3778:45;;-1:-1:-1;;;;;;;;;;;739:18692:9;;;;2971:9:29;2967:62;;739:18692:9;;;-1:-1:-1;;;;;;;;;;;739:18692:9;3627:22:29;739:18692:9;;;3782:10;739:18692;;3627:22:29;739:18692:9;2967:62:29;3003:15;;;739:18692:9;3003:15:29;739:18692:9;;3003:15:29;739:18692:9;;;;;;-1:-1:-1;;739:18692:9;;;;;;;3808:2:27;739:18692:9;;;;;;;;;-1:-1:-1;;739:18692:9;;;;;;3361:103:30;;:::i;:::-;1944:72:29;;:::i;:::-;739:18692:9;;;;;;;;;;;10659:10;:21;;:46;;;739:18692;10655:95;;10772:15;;10768:46;;10857:44;739:18692;;;;;;;;;;;;;;;;;;10857:44;;10895:4;739:18692;10857:44;;739:18692;10857:44;;;;;;;739:18692;10857:44;;;739:18692;10833:68;;;;;10932:18;739:18692;;;11059:3;11010:16;739:18692;11006:20;;:51;;;11059:3;11006:51;;;739:18692;;;11112:16;739:18692;;;;;11202:17;;;;739:18692;;;;;11198:64;;11353:18;;;739:18692;;11353:18;;739:18692;11336:35;;;;;739:18692;;;;11769:16;;11713:38;;739:18692;;;;11477:18;;-1:-1:-1;;;;;739:18692:9;;;;;11477:18;:::i;:::-;739:18692;;;;;;;;;11660:35;739:18692;;11660:35;;;:::i;:::-;11713:38;;:::i;:::-;11769:16;;:::i;:::-;739:18692;11867:22;739:18692;;;;;-1:-1:-1;;739:18692:9;11867:22;739:18692;;;;;;;;;;11059:3;;-1:-1:-1;;;;;739:18692:9;;11833:17:27;;11929:61:9;;739:18692;;11929:61;11059:3;:::i;:::-;10974:30;;;;;;739:18692;;;;;;;;;10857:44;739:18692;;11332:762;12074:5;;;;;;;;;;10969:1135;12195:18;12191:498;;10969:1135;12712:80;739:18692;;;10932:18;739:18692;;;;;;;;;;;;;;;;;;;;12712:80;739:18692;-1:-1:-1;;;;;;;;;;;739:18692:9;;;;;;;;;;;12191:498;739:18692;10932:18;739:18692;12337:3;11010:16;739:18692;12315:20;;;;;;;739:18692;;;11112:16;739:18692;;;11202:17;739:18692;;;12365:29;739:18692;;12364:30;12360:126;;-1:-1:-1;;739:18692:9;;;;;;;;;12560:25;;;12556:109;;12337:3;;739:18692;12283:30;;12556:109;10932:18;739:18692;12556:109;;;12360:126;12712:80;739:18692;;;;;;10932:18;739:18692;;;;12278:401;12191:498;;;;;;12315:20;;;;12712:80;739:18692;;12315:20;;;11198:64;11239:8;;;;11059:3;11239:8;;11059:3;:::i;11006:51::-;;;;;;;;;;11030:27;;;;11006:51;;10857:44;;;739:18692;10857:44;;739:18692;10857:44;;;;;;739:18692;10857:44;;;:::i;:::-;;;739:18692;;;;;10857:44;;;;;;-1:-1:-1;10857:44:9;;;739:18692;;;;;;;;;10768:46;10796:18;;;739:18692;10796:18;739:18692;;10796:18;10659:46;-1:-1:-1;739:18692:9;;-1:-1:-1;;;;;739:18692:9;10659:10;10684:21;;10659:46;;739:18692;;;;;;-1:-1:-1;;739:18692:9;;;;;;:::i;:::-;;;:::i;:::-;;;4771:20:27;;;;:::i;:::-;966:10:28;-1:-1:-1;739:18692:9;;;;;;;;;;;;;-1:-1:-1;;11814:36:27;;11810:309;;739:18692:9;6102:5:27;;;;:::i;11810:309::-;11870:24;;;11866:130;;-1:-1:-1;;;;;739:18692:9;;11045:19:27;11041:89;;966:10:28;11143:21:27;11139:90;;6102:5;11238:20;;;;:::i;:::-;739:18692:9;;;;;966:10:28;739:18692:9;-1:-1:-1;739:18692:9;;;;;-1:-1:-1;739:18692:9;;;;;11810:309:27;;11139:90;11187:31;;;739:18692:9;11187:31:27;739:18692:9;;;;;11187:31:27;11041:89;11087:32;;;739:18692:9;11087:32:27;739:18692:9;;;;;11087:32:27;11866:130;11921:60;;;;;739:18692:9;11921:60:27;966:10:28;739:18692:9;;;;;;;;11921:60:27;739:18692:9;;;;;;-1:-1:-1;;739:18692:9;;;;;-1:-1:-1;;;;;;;;;;;739:18692:9;;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;739:18692:9;3888:10;:21;3884:45;;3361:103:30;;:::i;:::-;1944:72:29;;:::i;:::-;16213:12:9;;16209:40;;739:18692;;;;;-1:-1:-1;;;16294:44:9;;16332:4;16294:44;;;739:18692;;;;-1:-1:-1;;;;;739:18692:9;;;;;;;16294:44;;;;;;;739:18692;16294:44;;;739:18692;16352:25;;;16348:53;;739:18692;16492:7;739:18692;16524:29;739:18692;;;16420:24;739:18692;16420:24;739:18692;16420:24;:::i;:::-;;739:18692;16492:7;:::i;:::-;739:18692;;;;;-1:-1:-1;;;;;739:18692:9;;16524:29;739:18692;-1:-1:-1;;;;;;;;;;;739:18692:9;;16294:44;;;739:18692;16294:44;;739:18692;16294:44;;;;;;739:18692;16294:44;;;:::i;:::-;;;739:18692;;;;;16294:44;;;;;;-1:-1:-1;16294:44:9;;739:18692;;;;;;-1:-1:-1;;739:18692:9;;;;;;:::i;:::-;;;966:10:28;;11045:19:27;11041:89;;-1:-1:-1;;;;;739:18692:9;;11143:21:27;;11139:90;;11238:20;966:10:28;11238:20:27;:::i;:::-;739:18692:9;-1:-1:-1;739:18692:9;;;;;-1:-1:-1;739:18692:9;;;;;;;11319:31:27;739:18692:9;966:10:28;11319:31:27;;739:18692:9;;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;;;;-1:-1:-1;;;;;;;;;;;739:18692:9;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;739:18692:9;;;;;;;-1:-1:-1;739:18692:9;;;;;;;-1:-1:-1;739:18692:9;;-1:-1:-1;739:18692:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;:::o;:::-;;;;-1:-1:-1;;;;;739:18692:9;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;739:18692:9;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;739:18692:9;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;739:18692:9;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::o;17536:137::-;17606:44;739:18692;;;;;;17613:11;739:18692;;;;;;;;;;;17606:44;;17644:4;17613:11;17606:44;;739:18692;17606:44;;;;;;-1:-1:-1;17606:44:9;;;17536:137;17606:60;739:18692;;17653:13;739:18692;17606:60;;:::i;:44::-;;739:18692;17606:44;;739:18692;17606:44;;;;;;739:18692;17606:44;;;:::i;:::-;;;739:18692;;;;17606:60;739:18692;;17606:44;;;;;-1:-1:-1;17606:44:9;;739:18692;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;739:18692:9;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;15505:229;15622:18;739:18692;15603:15;;:37;;15599:76;;15691:36;15603:15;;15691:36;;:::i;15599:76::-;15656:8;739:18692;15656:8;:::o;739:18692::-;-1:-1:-1;;;;;739:18692:9;;;;;4771:13:27;739:18692:9;;;;;;:::o;17813:120::-;17882:44;739:18692;;;;;;17889:11;739:18692;;;;;;;;;;;17882:44;;17920:4;17889:11;17882:44;;739:18692;17882:44;;;;;;;-1:-1:-1;17882:44:9;;;17875:51;17813:120;:::o;17882:44::-;;;739:18692;17882:44;;739:18692;17882:44;;;;;;739:18692;17882:44;;;:::i;:::-;;;739:18692;;;;;17813:120;:::o;17882:44::-;;;-1:-1:-1;17882:44:9;;739:18692;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;739:18692:9;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3470:384:30:-;1991:1;-1:-1:-1;;;;;;;;;;;739:18692:9;3670:20:30;3666:88;;1991:1;-1:-1:-1;;;;;;;;;;;739:18692:9;3470:384:30:o;3666:88::-;3713:30;;;-1:-1:-1;3713:30:30;;-1:-1:-1;3713:30:30;2709:128:29;739:18692:9;-1:-1:-1;;;;;;;;;;;739:18692:9;;2770:61:29;;2709:128::o;2770:61::-;2805:15;;;-1:-1:-1;2805:15:29;;-1:-1:-1;2805:15:29;1219:160:44;739:18692:9;;-1:-1:-1;;;1328:43:44;;;;-1:-1:-1;;;;;739:18692:9;;;1328:43:44;;;739:18692:9;;;;;;;;;1328:43:44;;;;;;;739:18692:9;1328:43:44;:::i;:::-;;:::i;:::-;1219:160::o;6509:300:27:-;-1:-1:-1;;;;;739:18692:9;;6592:18:27;;6588:86;;-1:-1:-1;;;;;739:18692:9;;6687:16:27;;6683:86;;739:18692:9;6608:1:27;739:18692:9;-1:-1:-1;;;;;;;;;;;739:18692:9;;;6608:1:27;739:18692:9;;7513:19:27;;;7509:115;;739:18692:9;8262:25:27;739:18692:9;;;;6608:1:27;739:18692:9;-1:-1:-1;;;;;;;;;;;739:18692:9;;;;6608:1:27;739:18692:9;;;6608:1:27;739:18692:9;-1:-1:-1;;;;;;;;;;;739:18692:9;;;6608:1:27;739:18692:9;;;;;;;;;;;;8262:25:27;6509:300::o;7509:115::-;7559:50;;;;6608:1;7559:50;;739:18692:9;;;;;;6608:1:27;7559:50;1618:188:44;739:18692:9;;-1:-1:-1;;;1745:53:44;;;;-1:-1:-1;;;;;739:18692:9;;;1745:53:44;;;739:18692:9;;;;;;;;;;;;;;;;;1745:53:44;;;;;;;739:18692:9;1745:53:44;:::i;8370:720::-;;-1:-1:-1;8507:421:44;8370:720;8507:421;;;;;;;;;;;;-1:-1:-1;8507:421:44;;8942:15;;-1:-1:-1;;;;;;739:18692:9;;8960:26:44;:31;8942:68;8938:146;;8370:720;:::o;8938:146::-;-1:-1:-1;;;;9033:40:44;;;-1:-1:-1;;;;;739:18692:9;;;;9033:40:44;739:18692:9;;;9033:40:44;8942:68;9009:1;8994:16;;8942:68;;7082:141:25;739:18692:9;-1:-1:-1;;;;;;;;;;;739:18692:9;;;;7148:18:25;7144:73;;7082:141::o;7144:73::-;7189:17;;;-1:-1:-1;7189:17:25;;-1:-1:-1;7189:17:25;4437:582:45;;4609:8;;-1:-1:-1;739:18692:9;;5690:21:45;:17;;5815:105;;;;;;5686:301;5957:19;;;5710:1;5957:19;;5710:1;5957:19;4605:408;739:18692:9;;4857:22:45;:49;;;4605:408;4853:119;;4985:17;;:::o;4853:119::-;-1:-1:-1;;;4878:1:45;4933:24;;;-1:-1:-1;;;;;739:18692:9;;;;4933:24:45;739:18692:9;;;4933:24:45;4857:49;4883:18;;;:23;4857:49;","linkReferences":{},"immutableReferences":{"10672":[{"start":6129,"length":32},{"start":6292,"length":32}]}},"methodIdentifiers":{"PRICE_PRECISION()":"95082d25","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","canRedeemNow()":"a747f072","decimals()":"313ce567","depositManagedAssets(uint256)":"73a33877","depositYT(uint256)":"a2874172","factory()":"c45a0155","getPendingRequestsCount()":"188c26cc","getQueueProgress()":"532e20b5","getRequestDetails(uint256)":"f34d4c63","getTimeUntilNextRedemption()":"5caa814f","getUserPendingRequests(address)":"e3992fc0","getUserRequestIds(address)":"60df7c6c","getVaultInfo()":"7f98aa71","hardCap()":"fb86a404","idleAssets()":"e16b03a3","initialize(string,string,address,uint256,address,uint256,uint256,uint256)":"8dc9bf28","managedAssets()":"f4a0877f","manager()":"481c6a75","name()":"06fdde03","nextRedemptionTime()":"6d1b7711","pause()":"8456cb59","paused()":"5c975abb","pendingRequestsCount()":"ca1d4dbf","previewBuy(uint256)":"48153279","previewSell(uint256)":"fb3dd95f","processBatchWithdrawals(uint256)":"29a26445","processedUpToIndex()":"5985aa91","proxiableUUID()":"52d1902d","requestIdCounter()":"8db5888a","setHardCap(uint256)":"d18d944b","setManager(address)":"d0ebdbe7","setNextRedemptionTime(uint256)":"792fbf3b","symbol()":"95d89b41","totalAssets()":"01e1d114","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","unpause()":"3f4ba83a","updatePrices(uint256,uint256)":"ef88d7f0","upgradeToAndCall(address,bytes)":"4f1ef286","withdrawForManagement(address,uint256)":"11a270cc","withdrawRequests(uint256)":"992a7dfb","withdrawYT(uint256)":"7229bc3c","wusdAddress()":"c62db206","wusdPrice()":"61b4fbde","ytPrice()":"adcc40cb"}}}},"contracts/ytLending/Configurator.sol":{"Configurator":{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"addAsset","inputs":[{"name":"lendingProxy","type":"address","internalType":"address"},{"name":"assetConfig","type":"tuple","internalType":"struct LendingConfiguration.AssetConfig","components":[{"name":"asset","type":"address","internalType":"address"},{"name":"priceFeed","type":"address","internalType":"address"},{"name":"decimals","type":"uint8","internalType":"uint8"},{"name":"borrowCollateralFactor","type":"uint64","internalType":"uint64"},{"name":"liquidateCollateralFactor","type":"uint64","internalType":"uint64"},{"name":"liquidationFactor","type":"uint64","internalType":"uint64"},{"name":"supplyCap","type":"uint128","internalType":"uint128"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"configuratorParams","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"baseToken","type":"address","internalType":"address"},{"name":"baseTokenPriceFeed","type":"address","internalType":"address"},{"name":"supplyKink","type":"uint64","internalType":"uint64"},{"name":"supplyPerYearInterestRateSlopeLow","type":"uint64","internalType":"uint64"},{"name":"supplyPerYearInterestRateSlopeHigh","type":"uint64","internalType":"uint64"},{"name":"supplyPerYearInterestRateBase","type":"uint64","internalType":"uint64"},{"name":"borrowKink","type":"uint64","internalType":"uint64"},{"name":"borrowPerYearInterestRateSlopeLow","type":"uint64","internalType":"uint64"},{"name":"borrowPerYearInterestRateSlopeHigh","type":"uint64","internalType":"uint64"},{"name":"borrowPerYearInterestRateBase","type":"uint64","internalType":"uint64"},{"name":"storeFrontPriceFactor","type":"uint64","internalType":"uint64"},{"name":"trackingIndexScale","type":"uint64","internalType":"uint64"},{"name":"baseBorrowMin","type":"uint104","internalType":"uint104"},{"name":"targetReserves","type":"uint104","internalType":"uint104"}],"stateMutability":"view"},{"type":"function","name":"deploy","inputs":[{"name":"lendingProxy","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"factory","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getAssetIndex","inputs":[{"name":"lendingProxy","type":"address","internalType":"address"},{"name":"asset","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getConfiguration","inputs":[{"name":"lendingProxy","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct LendingConfiguration.Configuration","components":[{"name":"baseToken","type":"address","internalType":"address"},{"name":"baseTokenPriceFeed","type":"address","internalType":"address"},{"name":"supplyKink","type":"uint64","internalType":"uint64"},{"name":"supplyPerYearInterestRateSlopeLow","type":"uint64","internalType":"uint64"},{"name":"supplyPerYearInterestRateSlopeHigh","type":"uint64","internalType":"uint64"},{"name":"supplyPerYearInterestRateBase","type":"uint64","internalType":"uint64"},{"name":"borrowKink","type":"uint64","internalType":"uint64"},{"name":"borrowPerYearInterestRateSlopeLow","type":"uint64","internalType":"uint64"},{"name":"borrowPerYearInterestRateSlopeHigh","type":"uint64","internalType":"uint64"},{"name":"borrowPerYearInterestRateBase","type":"uint64","internalType":"uint64"},{"name":"storeFrontPriceFactor","type":"uint64","internalType":"uint64"},{"name":"trackingIndexScale","type":"uint64","internalType":"uint64"},{"name":"baseBorrowMin","type":"uint104","internalType":"uint104"},{"name":"targetReserves","type":"uint104","internalType":"uint104"},{"name":"assetConfigs","type":"tuple[]","internalType":"struct LendingConfiguration.AssetConfig[]","components":[{"name":"asset","type":"address","internalType":"address"},{"name":"priceFeed","type":"address","internalType":"address"},{"name":"decimals","type":"uint8","internalType":"uint8"},{"name":"borrowCollateralFactor","type":"uint64","internalType":"uint64"},{"name":"liquidateCollateralFactor","type":"uint64","internalType":"uint64"},{"name":"liquidationFactor","type":"uint64","internalType":"uint64"},{"name":"supplyCap","type":"uint128","internalType":"uint128"}]}]}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setConfiguration","inputs":[{"name":"lendingProxy","type":"address","internalType":"address"},{"name":"newConfiguration","type":"tuple","internalType":"struct LendingConfiguration.Configuration","components":[{"name":"baseToken","type":"address","internalType":"address"},{"name":"baseTokenPriceFeed","type":"address","internalType":"address"},{"name":"supplyKink","type":"uint64","internalType":"uint64"},{"name":"supplyPerYearInterestRateSlopeLow","type":"uint64","internalType":"uint64"},{"name":"supplyPerYearInterestRateSlopeHigh","type":"uint64","internalType":"uint64"},{"name":"supplyPerYearInterestRateBase","type":"uint64","internalType":"uint64"},{"name":"borrowKink","type":"uint64","internalType":"uint64"},{"name":"borrowPerYearInterestRateSlopeLow","type":"uint64","internalType":"uint64"},{"name":"borrowPerYearInterestRateSlopeHigh","type":"uint64","internalType":"uint64"},{"name":"borrowPerYearInterestRateBase","type":"uint64","internalType":"uint64"},{"name":"storeFrontPriceFactor","type":"uint64","internalType":"uint64"},{"name":"trackingIndexScale","type":"uint64","internalType":"uint64"},{"name":"baseBorrowMin","type":"uint104","internalType":"uint104"},{"name":"targetReserves","type":"uint104","internalType":"uint104"},{"name":"assetConfigs","type":"tuple[]","internalType":"struct LendingConfiguration.AssetConfig[]","components":[{"name":"asset","type":"address","internalType":"address"},{"name":"priceFeed","type":"address","internalType":"address"},{"name":"decimals","type":"uint8","internalType":"uint8"},{"name":"borrowCollateralFactor","type":"uint64","internalType":"uint64"},{"name":"liquidateCollateralFactor","type":"uint64","internalType":"uint64"},{"name":"liquidationFactor","type":"uint64","internalType":"uint64"},{"name":"supplyCap","type":"uint128","internalType":"uint128"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFactory","inputs":[{"name":"lendingProxy","type":"address","internalType":"address"},{"name":"newFactory","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateAsset","inputs":[{"name":"lendingProxy","type":"address","internalType":"address"},{"name":"newAssetConfig","type":"tuple","internalType":"struct LendingConfiguration.AssetConfig","components":[{"name":"asset","type":"address","internalType":"address"},{"name":"priceFeed","type":"address","internalType":"address"},{"name":"decimals","type":"uint8","internalType":"uint8"},{"name":"borrowCollateralFactor","type":"uint64","internalType":"uint64"},{"name":"liquidateCollateralFactor","type":"uint64","internalType":"uint64"},{"name":"liquidationFactor","type":"uint64","internalType":"uint64"},{"name":"supplyCap","type":"uint128","internalType":"uint128"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateAssetBorrowCollateralFactor","inputs":[{"name":"lendingProxy","type":"address","internalType":"address"},{"name":"asset","type":"address","internalType":"address"},{"name":"newBorrowCF","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateAssetSupplyCap","inputs":[{"name":"lendingProxy","type":"address","internalType":"address"},{"name":"asset","type":"address","internalType":"address"},{"name":"newSupplyCap","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"AddAsset","inputs":[{"name":"lendingProxy","type":"address","indexed":true,"internalType":"address"},{"name":"assetConfig","type":"tuple","indexed":false,"internalType":"struct LendingConfiguration.AssetConfig","components":[{"name":"asset","type":"address","internalType":"address"},{"name":"priceFeed","type":"address","internalType":"address"},{"name":"decimals","type":"uint8","internalType":"uint8"},{"name":"borrowCollateralFactor","type":"uint64","internalType":"uint64"},{"name":"liquidateCollateralFactor","type":"uint64","internalType":"uint64"},{"name":"liquidationFactor","type":"uint64","internalType":"uint64"},{"name":"supplyCap","type":"uint128","internalType":"uint128"}]}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"LendingDeployed","inputs":[{"name":"lendingProxy","type":"address","indexed":true,"internalType":"address"},{"name":"newLending","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetConfiguration","inputs":[{"name":"lendingProxy","type":"address","indexed":true,"internalType":"address"},{"name":"oldConfiguration","type":"tuple","indexed":false,"internalType":"struct LendingConfiguration.Configuration","components":[{"name":"baseToken","type":"address","internalType":"address"},{"name":"baseTokenPriceFeed","type":"address","internalType":"address"},{"name":"supplyKink","type":"uint64","internalType":"uint64"},{"name":"supplyPerYearInterestRateSlopeLow","type":"uint64","internalType":"uint64"},{"name":"supplyPerYearInterestRateSlopeHigh","type":"uint64","internalType":"uint64"},{"name":"supplyPerYearInterestRateBase","type":"uint64","internalType":"uint64"},{"name":"borrowKink","type":"uint64","internalType":"uint64"},{"name":"borrowPerYearInterestRateSlopeLow","type":"uint64","internalType":"uint64"},{"name":"borrowPerYearInterestRateSlopeHigh","type":"uint64","internalType":"uint64"},{"name":"borrowPerYearInterestRateBase","type":"uint64","internalType":"uint64"},{"name":"storeFrontPriceFactor","type":"uint64","internalType":"uint64"},{"name":"trackingIndexScale","type":"uint64","internalType":"uint64"},{"name":"baseBorrowMin","type":"uint104","internalType":"uint104"},{"name":"targetReserves","type":"uint104","internalType":"uint104"},{"name":"assetConfigs","type":"tuple[]","internalType":"struct LendingConfiguration.AssetConfig[]","components":[{"name":"asset","type":"address","internalType":"address"},{"name":"priceFeed","type":"address","internalType":"address"},{"name":"decimals","type":"uint8","internalType":"uint8"},{"name":"borrowCollateralFactor","type":"uint64","internalType":"uint64"},{"name":"liquidateCollateralFactor","type":"uint64","internalType":"uint64"},{"name":"liquidationFactor","type":"uint64","internalType":"uint64"},{"name":"supplyCap","type":"uint128","internalType":"uint128"}]}]},{"name":"newConfiguration","type":"tuple","indexed":false,"internalType":"struct LendingConfiguration.Configuration","components":[{"name":"baseToken","type":"address","internalType":"address"},{"name":"baseTokenPriceFeed","type":"address","internalType":"address"},{"name":"supplyKink","type":"uint64","internalType":"uint64"},{"name":"supplyPerYearInterestRateSlopeLow","type":"uint64","internalType":"uint64"},{"name":"supplyPerYearInterestRateSlopeHigh","type":"uint64","internalType":"uint64"},{"name":"supplyPerYearInterestRateBase","type":"uint64","internalType":"uint64"},{"name":"borrowKink","type":"uint64","internalType":"uint64"},{"name":"borrowPerYearInterestRateSlopeLow","type":"uint64","internalType":"uint64"},{"name":"borrowPerYearInterestRateSlopeHigh","type":"uint64","internalType":"uint64"},{"name":"borrowPerYearInterestRateBase","type":"uint64","internalType":"uint64"},{"name":"storeFrontPriceFactor","type":"uint64","internalType":"uint64"},{"name":"trackingIndexScale","type":"uint64","internalType":"uint64"},{"name":"baseBorrowMin","type":"uint104","internalType":"uint104"},{"name":"targetReserves","type":"uint104","internalType":"uint104"},{"name":"assetConfigs","type":"tuple[]","internalType":"struct LendingConfiguration.AssetConfig[]","components":[{"name":"asset","type":"address","internalType":"address"},{"name":"priceFeed","type":"address","internalType":"address"},{"name":"decimals","type":"uint8","internalType":"uint8"},{"name":"borrowCollateralFactor","type":"uint64","internalType":"uint64"},{"name":"liquidateCollateralFactor","type":"uint64","internalType":"uint64"},{"name":"liquidationFactor","type":"uint64","internalType":"uint64"},{"name":"supplyCap","type":"uint128","internalType":"uint128"}]}]}],"anonymous":false},{"type":"event","name":"SetFactory","inputs":[{"name":"lendingProxy","type":"address","indexed":true,"internalType":"address"},{"name":"oldFactory","type":"address","indexed":true,"internalType":"address"},{"name":"newFactory","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"UpdateAsset","inputs":[{"name":"lendingProxy","type":"address","indexed":true,"internalType":"address"},{"name":"oldAssetConfig","type":"tuple","indexed":false,"internalType":"struct LendingConfiguration.AssetConfig","components":[{"name":"asset","type":"address","internalType":"address"},{"name":"priceFeed","type":"address","internalType":"address"},{"name":"decimals","type":"uint8","internalType":"uint8"},{"name":"borrowCollateralFactor","type":"uint64","internalType":"uint64"},{"name":"liquidateCollateralFactor","type":"uint64","internalType":"uint64"},{"name":"liquidationFactor","type":"uint64","internalType":"uint64"},{"name":"supplyCap","type":"uint128","internalType":"uint128"}]},{"name":"newAssetConfig","type":"tuple","indexed":false,"internalType":"struct LendingConfiguration.AssetConfig","components":[{"name":"asset","type":"address","internalType":"address"},{"name":"priceFeed","type":"address","internalType":"address"},{"name":"decimals","type":"uint8","internalType":"uint8"},{"name":"borrowCollateralFactor","type":"uint64","internalType":"uint64"},{"name":"liquidateCollateralFactor","type":"uint64","internalType":"uint64"},{"name":"liquidationFactor","type":"uint64","internalType":"uint64"},{"name":"supplyCap","type":"uint128","internalType":"uint128"}]}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AlreadyInitialized","inputs":[]},{"type":"error","name":"AssetDoesNotExist","inputs":[]},{"type":"error","name":"ConfigurationAlreadyExists","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InvalidAddress","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AssetDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ConfigurationAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"lendingProxy\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"priceFeed\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"borrowCollateralFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidateCollateralFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidationFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"supplyCap\",\"type\":\"uint128\"}],\"indexed\":false,\"internalType\":\"struct LendingConfiguration.AssetConfig\",\"name\":\"assetConfig\",\"type\":\"tuple\"}],\"name\":\"AddAsset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"lendingProxy\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newLending\",\"type\":\"address\"}],\"name\":\"LendingDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"lendingProxy\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"baseTokenPriceFeed\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"supplyKink\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"supplyPerYearInterestRateSlopeLow\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"supplyPerYearInterestRateSlopeHigh\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"supplyPerYearInterestRateBase\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowKink\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowPerYearInterestRateSlopeLow\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowPerYearInterestRateSlopeHigh\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowPerYearInterestRateBase\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"storeFrontPriceFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"trackingIndexScale\",\"type\":\"uint64\"},{\"internalType\":\"uint104\",\"name\":\"baseBorrowMin\",\"type\":\"uint104\"},{\"internalType\":\"uint104\",\"name\":\"targetReserves\",\"type\":\"uint104\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"priceFeed\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"borrowCollateralFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidateCollateralFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidationFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"supplyCap\",\"type\":\"uint128\"}],\"internalType\":\"struct LendingConfiguration.AssetConfig[]\",\"name\":\"assetConfigs\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"struct LendingConfiguration.Configuration\",\"name\":\"oldConfiguration\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"baseTokenPriceFeed\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"supplyKink\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"supplyPerYearInterestRateSlopeLow\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"supplyPerYearInterestRateSlopeHigh\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"supplyPerYearInterestRateBase\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowKink\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowPerYearInterestRateSlopeLow\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowPerYearInterestRateSlopeHigh\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowPerYearInterestRateBase\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"storeFrontPriceFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"trackingIndexScale\",\"type\":\"uint64\"},{\"internalType\":\"uint104\",\"name\":\"baseBorrowMin\",\"type\":\"uint104\"},{\"internalType\":\"uint104\",\"name\":\"targetReserves\",\"type\":\"uint104\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"priceFeed\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"borrowCollateralFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidateCollateralFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidationFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"supplyCap\",\"type\":\"uint128\"}],\"internalType\":\"struct LendingConfiguration.AssetConfig[]\",\"name\":\"assetConfigs\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"struct LendingConfiguration.Configuration\",\"name\":\"newConfiguration\",\"type\":\"tuple\"}],\"name\":\"SetConfiguration\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"lendingProxy\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldFactory\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newFactory\",\"type\":\"address\"}],\"name\":\"SetFactory\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"lendingProxy\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"priceFeed\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"borrowCollateralFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidateCollateralFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidationFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"supplyCap\",\"type\":\"uint128\"}],\"indexed\":false,\"internalType\":\"struct LendingConfiguration.AssetConfig\",\"name\":\"oldAssetConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"priceFeed\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"borrowCollateralFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidateCollateralFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidationFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"supplyCap\",\"type\":\"uint128\"}],\"indexed\":false,\"internalType\":\"struct LendingConfiguration.AssetConfig\",\"name\":\"newAssetConfig\",\"type\":\"tuple\"}],\"name\":\"UpdateAsset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"lendingProxy\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"priceFeed\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"borrowCollateralFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidateCollateralFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidationFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"supplyCap\",\"type\":\"uint128\"}],\"internalType\":\"struct LendingConfiguration.AssetConfig\",\"name\":\"assetConfig\",\"type\":\"tuple\"}],\"name\":\"addAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"configuratorParams\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"baseTokenPriceFeed\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"supplyKink\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"supplyPerYearInterestRateSlopeLow\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"supplyPerYearInterestRateSlopeHigh\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"supplyPerYearInterestRateBase\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowKink\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowPerYearInterestRateSlopeLow\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowPerYearInterestRateSlopeHigh\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowPerYearInterestRateBase\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"storeFrontPriceFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"trackingIndexScale\",\"type\":\"uint64\"},{\"internalType\":\"uint104\",\"name\":\"baseBorrowMin\",\"type\":\"uint104\"},{\"internalType\":\"uint104\",\"name\":\"targetReserves\",\"type\":\"uint104\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"lendingProxy\",\"type\":\"address\"}],\"name\":\"deploy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"lendingProxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getAssetIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"lendingProxy\",\"type\":\"address\"}],\"name\":\"getConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"baseTokenPriceFeed\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"supplyKink\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"supplyPerYearInterestRateSlopeLow\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"supplyPerYearInterestRateSlopeHigh\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"supplyPerYearInterestRateBase\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowKink\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowPerYearInterestRateSlopeLow\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowPerYearInterestRateSlopeHigh\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowPerYearInterestRateBase\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"storeFrontPriceFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"trackingIndexScale\",\"type\":\"uint64\"},{\"internalType\":\"uint104\",\"name\":\"baseBorrowMin\",\"type\":\"uint104\"},{\"internalType\":\"uint104\",\"name\":\"targetReserves\",\"type\":\"uint104\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"priceFeed\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"borrowCollateralFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidateCollateralFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidationFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"supplyCap\",\"type\":\"uint128\"}],\"internalType\":\"struct LendingConfiguration.AssetConfig[]\",\"name\":\"assetConfigs\",\"type\":\"tuple[]\"}],\"internalType\":\"struct LendingConfiguration.Configuration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"lendingProxy\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"baseTokenPriceFeed\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"supplyKink\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"supplyPerYearInterestRateSlopeLow\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"supplyPerYearInterestRateSlopeHigh\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"supplyPerYearInterestRateBase\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowKink\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowPerYearInterestRateSlopeLow\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowPerYearInterestRateSlopeHigh\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowPerYearInterestRateBase\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"storeFrontPriceFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"trackingIndexScale\",\"type\":\"uint64\"},{\"internalType\":\"uint104\",\"name\":\"baseBorrowMin\",\"type\":\"uint104\"},{\"internalType\":\"uint104\",\"name\":\"targetReserves\",\"type\":\"uint104\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"priceFeed\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"borrowCollateralFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidateCollateralFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidationFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"supplyCap\",\"type\":\"uint128\"}],\"internalType\":\"struct LendingConfiguration.AssetConfig[]\",\"name\":\"assetConfigs\",\"type\":\"tuple[]\"}],\"internalType\":\"struct LendingConfiguration.Configuration\",\"name\":\"newConfiguration\",\"type\":\"tuple\"}],\"name\":\"setConfiguration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"lendingProxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newFactory\",\"type\":\"address\"}],\"name\":\"setFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"lendingProxy\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"priceFeed\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"borrowCollateralFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidateCollateralFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidationFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"supplyCap\",\"type\":\"uint128\"}],\"internalType\":\"struct LendingConfiguration.AssetConfig\",\"name\":\"newAssetConfig\",\"type\":\"tuple\"}],\"name\":\"updateAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"lendingProxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"newBorrowCF\",\"type\":\"uint64\"}],\"name\":\"updateAssetBorrowCollateralFactor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"lendingProxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"newSupplyCap\",\"type\":\"uint128\"}],\"name\":\"updateAssetSupplyCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"addAsset(address,(address,address,uint8,uint64,uint64,uint64,uint128))\":{\"params\":{\"assetConfig\":\"\\u8d44\\u4ea7\\u914d\\u7f6e\",\"lendingProxy\":\"Lending \\u4ee3\\u7406\\u5730\\u5740\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"deploy(address)\":{\"params\":{\"lendingProxy\":\"Lending \\u4ee3\\u7406\\u5730\\u5740\"},\"returns\":{\"_0\":\"\\u65b0\\u5b9e\\u73b0\\u5408\\u7ea6\\u5730\\u5740\"}},\"getAssetIndex(address,address)\":{\"params\":{\"asset\":\"\\u8d44\\u4ea7\\u5730\\u5740\",\"lendingProxy\":\"Lending \\u4ee3\\u7406\\u5730\\u5740\"},\"returns\":{\"_0\":\"\\u8d44\\u4ea7\\u5728\\u914d\\u7f6e\\u6570\\u7ec4\\u4e2d\\u7684\\u7d22\\u5f15\"}},\"getConfiguration(address)\":{\"params\":{\"lendingProxy\":\"Lending \\u4ee3\\u7406\\u5730\\u5740\"},\"returns\":{\"_0\":\"\\u914d\\u7f6e\\u4fe1\\u606f\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setConfiguration(address,(address,address,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint104,uint104,(address,address,uint8,uint64,uint64,uint64,uint128)[]))\":{\"params\":{\"lendingProxy\":\"Lending \\u4ee3\\u7406\\u5730\\u5740\",\"newConfiguration\":\"\\u65b0\\u914d\\u7f6e\"}},\"setFactory(address,address)\":{\"params\":{\"lendingProxy\":\"Lending \\u4ee3\\u7406\\u5730\\u5740\",\"newFactory\":\"\\u65b0\\u5de5\\u5382\\u5730\\u5740\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"updateAsset(address,(address,address,uint8,uint64,uint64,uint64,uint128))\":{\"params\":{\"lendingProxy\":\"Lending \\u4ee3\\u7406\\u5730\\u5740\",\"newAssetConfig\":\"\\u65b0\\u8d44\\u4ea7\\u914d\\u7f6e\"}},\"updateAssetBorrowCollateralFactor(address,address,uint64)\":{\"params\":{\"asset\":\"\\u8d44\\u4ea7\\u5730\\u5740\",\"lendingProxy\":\"Lending \\u4ee3\\u7406\\u5730\\u5740\",\"newBorrowCF\":\"\\u65b0\\u501f\\u6b3e\\u62b5\\u62bc\\u7387\"}},\"updateAssetSupplyCap(address,address,uint128)\":{\"params\":{\"asset\":\"\\u8d44\\u4ea7\\u5730\\u5740\",\"lendingProxy\":\"Lending \\u4ee3\\u7406\\u5730\\u5740\",\"newSupplyCap\":\"\\u65b0\\u4f9b\\u5e94\\u4e0a\\u9650\"}},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"Configurator\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addAsset(address,(address,address,uint8,uint64,uint64,uint64,uint128))\":{\"notice\":\"\\u6dfb\\u52a0\\u62b5\\u62bc\\u8d44\\u4ea7\"},\"deploy(address)\":{\"notice\":\"\\u90e8\\u7f72\\u65b0\\u7684 Lending \\u5b9e\\u73b0\"},\"getAssetIndex(address,address)\":{\"notice\":\"\\u83b7\\u53d6\\u8d44\\u4ea7\\u7d22\\u5f15\"},\"getConfiguration(address)\":{\"notice\":\"\\u83b7\\u53d6\\u5e02\\u573a\\u914d\\u7f6e\"},\"setConfiguration(address,(address,address,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint104,uint104,(address,address,uint8,uint64,uint64,uint64,uint128)[]))\":{\"notice\":\"\\u8bbe\\u7f6e\\u5e02\\u573a\\u914d\\u7f6e\"},\"setFactory(address,address)\":{\"notice\":\"\\u8bbe\\u7f6e\\u5de5\\u5382\\u5408\\u7ea6\\u5730\\u5740\"},\"updateAsset(address,(address,address,uint8,uint64,uint64,uint64,uint128))\":{\"notice\":\"\\u66f4\\u65b0\\u8d44\\u4ea7\\u914d\\u7f6e\"},\"updateAssetBorrowCollateralFactor(address,address,uint64)\":{\"notice\":\"\\u66f4\\u65b0\\u8d44\\u4ea7\\u62b5\\u62bc\\u7387\"},\"updateAssetSupplyCap(address,address,uint128)\":{\"notice\":\"\\u66f4\\u65b0\\u8d44\\u4ea7\\u4f9b\\u5e94\\u4e0a\\u9650\"}},\"notice\":\"\\u501f\\u8d37\\u6c60\\u914d\\u7f6e\\u7ba1\\u7406\\u5408\\u7ea6\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ytLending/Configurator.sol\":\"Configurator\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"contracts/interfaces/ILending.sol\":{\"keccak256\":\"0xd355b033318695723c227bfe24e298518046a0225594d14e90aec56311ff0873\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://32a34bad59749eceac7b2d7fe45e1f2e3b03d36ad518e977ea8f39bb63cab950\",\"dweb:/ipfs/QmdUvXnU75hTPXGoGWb1XpA64CNHoQ2Xso6EH1TKkDgLZs\"]},\"contracts/interfaces/IPriceFeed.sol\":{\"keccak256\":\"0x70d3c43bb10de1881f27e2ae4cfdc7d9fe88b49bff734a570c01c8f40a75ede8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce0ae7615d33b4d3af325a392b862dcc8a5136b89b674c9bb9c1f644390d67b4\",\"dweb:/ipfs/QmWAbyrMQkF4e8YMRA8JUnBbHcgwPLXjBJjTdfXQ2ekJPm\"]},\"contracts/ytLending/Configurator.sol\":{\"keccak256\":\"0xc6684a382686b123d3d757de237d7a7d8ddb985e0c3bdbbbe3e6024b0515e1d2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e31f0b7bd7273f515cb0bca48bb58c099362a14b93897c53b032150e8c9cbbc7\",\"dweb:/ipfs/QmTKY8LqbASDhZH4RySeCHQi7z2MGEQVQNn5MphEJw9KNr\"]},\"contracts/ytLending/ConfiguratorStorage.sol\":{\"keccak256\":\"0xb77169bdc4b0d2e7b24d9e1d51b87cc6a5c2736a37b0c8aefe1188918c53f264\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94d0f3ff4908fb5d6eb39758029231af1ddcb24b1ebfb857daeabcf98a7f5534\",\"dweb:/ipfs/QmQxANNnSfJFNVK1Xx33Xyypui8thUY89jzSzC4NQmwpFv\"]},\"contracts/ytLending/Lending.sol\":{\"keccak256\":\"0xf85860a529b9e728f3e6ae3edef24916c64205f025588a05855403b4ebbf9b57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31d6b91047b5e4528ac6839c895f0695ecc495aefe07905d6f70c6681afdc52e\",\"dweb:/ipfs/QmZYHT2KuumuHV3uSviHgjLtdpM6SD7Apxd7MPZoUSZrUJ\"]},\"contracts/ytLending/LendingConfiguration.sol\":{\"keccak256\":\"0xb865cb13a3cdd84c409188043405fce03159fef567296b4ad795eebfbe3ba1ce\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05b6f564c096a2dc656c9b06a6683b723314d01ec194f4a3f288c7d2ecca54f3\",\"dweb:/ipfs/QmYbAD9EDyGBCjHid2hP7m1qmd19bXR7h2hyDA8F1AP2ow\"]},\"contracts/ytLending/LendingFactory.sol\":{\"keccak256\":\"0x965a749c987c9c41cc0dd7b47c8378dae627579c4e0bcf1840cc770b564218b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b57826632fea21c8fbf2e4d403eb8a047459de67ac2a55687d4810d6806afe0e\",\"dweb:/ipfs/Qmf92FjPfEHkJBijUf8Efaam91HAwQiPmNhxrPamgQApWQ\"]},\"contracts/ytLending/LendingMath.sol\":{\"keccak256\":\"0xd3efd7fa25c05629276fef9f9b51e618671b4704557fd1bcf81489af55567865\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed23a2e6dacefcfc40e5f8fc6ce41c01dfe393b0159de5698dbe9a60fe8baf51\",\"dweb:/ipfs/QmQHcWYpnEBF8wLcFB99yJbnZxuHz9PS5FjxJUga5LQdBg\"]},\"contracts/ytLending/LendingStorage.sol\":{\"keccak256\":\"0xf484e95c1cded3561be679c2d631da2d75b1ecf4c8af24e52f0e8cfdd02c5f09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4fd7f2933b3a2680c6f4c59e0039aa34d03c1f1b1af000808a0cf4e6220facb4\",\"dweb:/ipfs/QmbTP3xvezfAuRfgPSD2vffdYjgaR3uXU1EWTN47mBbxy5\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x574a7451e42724f7de29e2855c392a8a5020acd695169466a18459467d719d63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bc189f63b639ee173dd7b6fecc39baf7113bf161776aea22b34c57fdd1872ec\",\"dweb:/ipfs/QmZAf2VtjDLRULqjJkde6LNsxAg12tUqpPqgUQQZbAjgtZ\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0xa6bf6b7efe0e6625a9dcd30c5ddf52c4c24fe8372f37c7de9dbf5034746768d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c353ee3705bbf6fadb84c0fb10ef1b736e8ca3ca1867814349d1487ed207beb\",\"dweb:/ipfs/QmcugaPssrzGGE8q4YZKm2ZhnD3kCijjcgdWWg76nWt3FY\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8150ceb4ac947e8a442b2a9c017e01e880b2be2dd958f1fa9bc405f4c5a86508\",\"dweb:/ipfs/QmbcBmFX66AY6Kbhnd5gx7zpkgqnUafo43XnmayAM7zVdB\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60a080604052346100c257306080525f51602061219d5f395f51905f525460ff8160401c166100b3576002600160401b03196001600160401b03821601610060575b6040516120d690816100c782396080518181816114e401526115b30152f35b6001600160401b0319166001600160401b039081175f51602061219d5f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80610041565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c908163395c0fda14611855575080634c96a389146117685780634f1ef2861461153857806352d1902d146114d25780635e8255641461143657806365f7ef6814610a50578063715018a6146109e95780638129fc1c14610894578063886fe70b146108605780638da5cb5b1461082c578063961544d51461070b5780639a0fd80814610500578063a2ced7fd14610479578063ad3cb1cc1461041b578063b73585f114610383578063c44b11f7146101c7578063ea31a447146101115763f2fde38b146100e2575f80fd5b3461010d57602036600319011261010d5761010b6100fe611893565b610106611f84565b611f13565b005b5f80fd5b3461010d5761010036600319011261010d5761012b611893565b60e036602319011261010d5761013f611f84565b6001600160a01b03165f8181526001602052604090206006018054600160401b8110156101b35761017b81610181936001602494018155611c99565b90611cb2565b7f1f7dcc7122c2fe2d685db789d8cde941d28c9d5bf456dcd260705c8d4aef4ef860e06040516101b081611df5565ba2005b634e487b7160e01b5f52604160045260245ffd5b3461010d57602036600319011261010d576101e0611893565b60606101c06040516101f1816118d3565b5f81525f60208201525f60408201525f838201525f60808201525f60a08201525f60c08201525f60e08201525f6101008201525f6101208201525f6101408201525f6101608201525f6101808201525f6101a0820152015260018060a01b03165f52600160205261037f60405f20610365600660405192610271846118d3565b60018060a01b0381541684526001600160401b03600182015460018060a01b038116602087015260a01c16604085015260028101546001600160401b03811660608601526001600160401b038160401c1660808601526001600160401b038160801c1660a086015260c01c60c085015260038101546001600160401b03811660e08601526001600160401b038160401c166101008601526001600160401b038160801c1661012086015260c01c6101408501526001600160681b0360048201546001600160401b03811661016087015260401c166101808501526001600160681b036005820154166101a085015201611b9f565b6101c08201526040519182916020835260208301906119b7565b0390f35b3461010d57606036600319011261010d5761039c611893565b6103a46118a9565b90604435906001600160401b038216820361010d576103ee6001916103d461010b956103ce611f84565b82611e9f565b90838060a01b03165f5282602052600660405f2001611c99565b5001805467ffffffffffffffff60a81b191660a89290921b67ffffffffffffffff60a81b16919091179055565b3461010d575f36600319011261010d57604080519061043a81836118ef565b600582526020820191640352e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b3461010d57606036600319011261010d57610492611893565b61049a6118a9565b90604435906001600160801b038216820361010d576104e46002916104c461010b956103ce611f84565b6001600160a01b039091165f908152600160205260409020600601611c99565b5001906001600160801b0382549181199060801b169116179055565b3461010d5761010036600319011261010d5761051a611893565b60e036602319011261010d5761052e611f84565b602435906001600160a01b038216820361010d5761054c8282611e9f565b9060018060a01b031691825f52600160205261058f61057a61057484600660405f2001611c99565b50611b15565b92845f526001602052600660405f2001611c99565b9190916106f85781546001600160a01b0319166001600160a01b03918216178255600182019190604435908116810361010d5782546001600160a01b0319166001600160a01b039190911617825560643560ff8116810361010d57825460ff60a01b191660a09190911b60ff60a01b16178255608435916001600160401b038316830361010d57805467ffffffffffffffff60a81b191660a89390931b67ffffffffffffffff60a81b16929092179091556002019060a4356001600160401b038116810361010d57825467ffffffffffffffff19166001600160401b0391821617835560c435908116810361010d576106889083611c28565b60e435906001600160801b038216820361010d576106df6101c0927ff0d2e933bc5a83ab653c27f5ae312ee5f4a394a45c34bb90e8c790bf0ed3834194906001600160801b0382549181199060801b169116179055565b6106ec604051809261193f565b6101b060e08201611df5565b634e487b7160e01b5f525f60045260245ffd5b3461010d57602036600319011261010d576001600160a01b0361072c611893565b165f5260016020526101c060405f2060018060a01b03815416906001600160681b0360018201549160028101546003820154906001600160401b038460056004860154950154169560405197885260018060a01b038116602089015260a01c1660408701526001600160401b03811660608701526001600160401b038160401c1660808701526001600160401b038160801c1660a087015260c01c60c08601526001600160401b03811660e08601526001600160401b038160401c166101008601526001600160401b038160801c1661012086015260c01c6101408501526001600160401b03811661016085015260401c166101808301526101a0820152f35b3461010d575f36600319011261010d575f5160206120415f395f51905f52546040516001600160a01b039091168152602090f35b3461010d57604036600319011261010d57602061088c61087e611893565b6108866118a9565b90611e9f565b604051908152f35b3461010d575f36600319011261010d575f5160206120815f395f51905f52546001600160401b0360ff8260401c16159116801590816109e1575b60011490816109d7575b1590816109ce575b506109bf578060016001600160401b03195f5160206120815f395f51905f525416175f5160206120815f395f51905f525561098f575b61091e611fb7565b610926611fb7565b61092e611fb7565b61093733611f13565b61093d57005b60ff60401b195f5160206120815f395f51905f5254165f5160206120815f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b600160401b60ff60401b195f5160206120815f395f51905f525416175f5160206120815f395f51905f5255610916565b63f92ee8a960e01b5f5260045ffd5b905015826108e0565b303b1591506108d8565b8291506108ce565b3461010d575f36600319011261010d57610a01611f84565b5f5160206120415f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461010d57604036600319011261010d57610a69611893565b6001600160401b036024351161010d576101e06024353603600319011261010d57610a92611f84565b60018060a01b0381165f52600160205260405f209060405191610ab4836118d3565b60018060a01b0381541683526001600160401b03600182015460018060a01b038116602086015260a01c16604084015260028101546001600160401b03811660608501526001600160401b038160401c1660808501526001600160401b038160801c1660a085015260c01c60c084015260038101546001600160401b03811660e08501526001600160401b038160401c166101008501526001600160401b038160801c1661012085015260c01c610140840152610bb060066004830154926001600160681b036101608701946001600160401b038116865260401c166101808701526001600160681b036005820154166101a087015201611b9f565b6101c084015282516001600160a01b03168015159190826113de575b50506113cf5760018060a01b0381165f526001602052600660405f205f81555f60018201555f60028201555f60038201555f60048201555f6005820155018054905f815581611382575b5050610c26602435600401611c00565b6001600160a01b038281165f90815260016020526040902080546001600160a01b03191692909116919091179055610c616024803501611c00565b6001600160a01b038281165f9081526001602081905260409091200180546001600160a01b03191692909116919091179055610ca1602435604401611c14565b6001600160a01b0382165f90815260016020819052604090912001805467ffffffffffffffff60a01b191660a09290921b67ffffffffffffffff60a01b16919091179055610cf3602435606401611c14565b60018060a01b0382165f5260016020526001600160401b03600260405f200191166001600160401b0319825416179055610d53610d34608460243501611c14565b6001600160a01b0383165f908152600160205260409020600201611c28565b610da9610d6460a460243501611c14565b6001600160a01b0383165f908152600160205260409020600201805467ffffffffffffffff60801b191660809290921b67ffffffffffffffff60801b16919091179055565b610df7610dba60c460243501611c14565b6001600160a01b0383165f90815260016020526040902060020180546001600160c01b031660c09290921b6001600160c01b031916919091179055565b610e0560e460243501611c14565b60018060a01b0382165f5260016020526001600160401b03600360405f200191166001600160401b0319825416179055610e66610e4761010460243501611c14565b6001600160a01b0383165f908152600160205260409020600301611c28565b610ebd610e7861012460243501611c14565b6001600160a01b0383165f908152600160205260409020600301805467ffffffffffffffff60801b191660809290921b67ffffffffffffffff60801b16919091179055565b610f0c610ecf61014460243501611c14565b6001600160a01b0383165f90815260016020526040902060030180546001600160c01b031660c09290921b6001600160c01b031916919091179055565b610f1b61016460243501611c14565b60018060a01b0382165f5260016020526001600160401b03600460405f200191166001600160401b0319825416179055610f5a61018460243501611c50565b60018060a01b0382165f526001602052600460405f200190600160401b600160a81b0382549160401b1690600160401b600160a81b031916179055610fa46101a460243501611c50565b60018060a01b0382165f5260016020526001600160681b03600560405f200191166001600160681b03198254161790555f5b610feb6101c460243501602435600401611c64565b9050811015611074576001600160a01b0382165f908152600160205260409020600601906110236024356101c4810190600401611c64565b82101561106057825490600160401b8210156101b35761104d826001958661105a95018155611c99565b909160e085020191611cb2565b01610fd6565b634e487b7160e01b5f52603260045260245ffd5b509061108b604051916040835260408301906119b7565b8181036020830152916001600160a01b036110aa6004602435016118bf565b1683526001600160a01b036110c260248035016118bf565b1660208401526001600160401b036110de60446024350161192b565b1660408401526001600160401b036110fa60646024350161192b565b1660608401526001600160401b0361111660846024350161192b565b1660808401526001600160401b0361113260a46024350161192b565b1660a08401526001600160401b0361114e60c46024350161192b565b1660c08401526001600160401b0361116a60e46024350161192b565b1660e08401526001600160401b036111876101046024350161192b565b166101008401526001600160401b036111a56101246024350161192b565b166101208401526001600160401b036111c36101446024350161192b565b166101408401526001600160401b036111e16101646024350161192b565b166101608401526001600160681b036111ff61018460243501611de1565b166101808401526001600160681b0361121d6101a460243501611de1565b166101a08401526024356101c48101359036036022190181121561010d5760243501602460048201359101936001600160401b03821161010d5760e082023603851361010d57806101e06101c0610200930152826101e08201520193905f905b8082106112b6576001600160a01b0384167fc3a61d70fd0466b150794337cec2f61ed208422677b8551e4487499c4c21035b86880387a2005b91949091906001600160a01b036112cc876118bf565b1681526001600160a01b036112e3602088016118bf565b166020820152604086013560ff811680910361010d5760408201526001600160401b036113126060880161192b565b1660608201526001600160401b0361132c6080880161192b565b1660808201526001600160401b0361134660a0880161192b565b1660a082015260c0860135906001600160801b038216820361010d5760e080916001600160801b036001941660c082015201960192019061127d565b816003029160038304036113bb575f5260205f20908101905b81811015610c1657805f600392555f60018201555f60028201550161139b565b634e487b7160e01b5f52601160045260245ffd5b630735e0fd60e51b5f5260045ffd5b9091506001600160a01b036113f7600460243501611c00565b16149081159161140a575b508380610bcc565b6001600160401b03915051166001600160401b0361142d61016460243501611c14565b16141583611402565b3461010d57604036600319011261010d5761144f611893565b6114576118a9565b61145f611f84565b6001600160a01b03169081156114c3576001600160a01b039081165f81815260208190526040812080546001600160a01b031981168617909155909216917fcc826d20934cb90e9329d09ff55b4e43831c5bb3a3305fb536842ad49041e7d59080a4005b63e6c4247b60e01b5f5260045ffd5b3461010d575f36600319011261010d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036115295760206040515f5160206120615f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b604036600319011261010d5761154c611893565b602435906001600160401b03821161010d573660238301121561010d5781600401359061157882611910565b9161158660405193846118ef565b8083526020830193366024838301011161010d57815f926024602093018737840101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115611746575b50611529576115eb611f84565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa5f9181611712575b5061162d5784634c9c8ce360e01b5f5260045260245ffd5b805f5160206120615f395f51905f528692036117005750823b156116ee575f5160206120615f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28251156116d5575f809161010b945190845af43d156116cd573d916116b183611910565b926116bf60405194856118ef565b83523d5f602085013e611fe2565b606091611fe2565b505050346116df57005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d60201161173e575b8161172e602093836118ef565b8101031261010d57519086611615565b3d9150611721565b5f5160206120615f395f51905f52546001600160a01b031614159050846115de565b3461010d57602036600319011261010d575f611782611893565b61178a611f84565b6001600160a01b0390811680835260208381526040808520549051631dd70c0360e21b815294929391928592600492849291165af1801561184a575f90611805575b6020925060018060a01b031680604051927f56aab5483cc40d7e4e6b3ce2831f55ce79d54c537d1c695c2d86656ce7a843075f80a38152f35b50906020813d602011611842575b81611820602093836118ef565b8101031261010d5751906001600160a01b038216820361010d576020916117cc565b3d9150611813565b6040513d5f823e3d90fd5b3461010d57602036600319011261010d576020906001600160a01b03611879611893565b165f90815280835260409020546001600160a01b03168152f35b600435906001600160a01b038216820361010d57565b602435906001600160a01b038216820361010d57565b35906001600160a01b038216820361010d57565b6101e081019081106001600160401b038211176101b357604052565b90601f801991011681019081106001600160401b038211176101b357604052565b6001600160401b0381116101b357601f01601f191660200190565b35906001600160401b038216820361010d57565b6001600160801b0360c0809260018060a01b03815116855260018060a01b03602082015116602086015260ff60408201511660408601526001600160401b0360608201511660608601526001600160401b0360808201511660808601526001600160401b0360a08201511660a0860152015116910152565b60206102006101c06101e085019360018060a01b03815116865260018060a01b038482015116848701526001600160401b0360408201511660408701526001600160401b0360608201511660608701526001600160401b0360808201511660808701526001600160401b0360a08201511660a08701526001600160401b0360c08201511660c08701526001600160401b0360e08201511660e08701526001600160401b03610100820151166101008701526001600160401b03610120820151166101208701526001600160401b03610140820151166101408701526001600160401b03610160820151166101608701526001600160681b03610180820151166101808701526001600160681b036101a0820151166101a08701520151936101e06101c08201528451809452019201905f5b818110611af55750505090565b909192602060e082611b0a600194885161193f565b019401929101611ae8565b9060405160e081018181106001600160401b038211176101b35760405260c06002829460018060a01b0381541684526001600160401b03600182015460018060a01b038116602087015260ff8160a01c16604087015260a81c16606085015201546001600160401b03811660808401526001600160401b038160401c1660a084015260801c910152565b9081546001600160401b0381116101b35760405192611bc460208360051b01856118ef565b81845260208401905f5260205f205f915b838310611be25750505050565b60036020600192611bf285611b15565b815201920192019190611bd5565b356001600160a01b038116810361010d5790565b356001600160401b038116810361010d5790565b9067ffffffffffffffff60401b82549160401b169067ffffffffffffffff60401b1916179055565b356001600160681b038116810361010d5790565b903590601e198136030182121561010d57018035906001600160401b03821161010d576020019160e082023603831361010d57565b8054821015611060575f52600360205f20910201905f90565b906106f8576001600160a01b03611cc883611c00565b82546001600160a01b0319169116178155600181016001600160a01b03611cf160208501611c00565b82546001600160a01b031916911617815560408301359160ff8316830361010d57815460ff60a01b191660a09390931b60ff60a01b1692909217815560c091600291611d6b90611d4360608701611c14565b815467ffffffffffffffff60a81b191660a89190911b67ffffffffffffffff60a81b16179055565b01916001600160401b03611d8160808301611c14565b166001600160401b0319845416178355611da6611da060a08301611c14565b84611c28565b01356001600160801b038116810361010d5781546001600160801b031660809190911b6fffffffffffffffffffffffffffffffff1916179055565b35906001600160681b038216820361010d57565b6024356001600160a01b0381169081900361010d5781526044356001600160a01b0381169081900361010d57602082015260643560ff811680910361010d5760408201526084356001600160401b03811680910361010d57606082015260a4356001600160401b03811680910361010d57608082015260c4356001600160401b03811680910361010d5760a082015260e435906001600160801b03821680920361010d5760c00152565b6001600160a01b03165f908152600160205260409020611ec190600601611b9f565b908151915f5b838110611edd576367fa94e760e01b5f5260045ffd5b815181101561106057600581901b820160200151516001600160a01b03848116911614611f0c57600101611ec7565b9250505090565b6001600160a01b03168015611f71575f5160206120415f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b5f5160206120415f395f51905f52546001600160a01b03163303611fa457565b63118cdaa760e01b5f523360045260245ffd5b60ff5f5160206120815f395f51905f525460401c1615611fd357565b631afcd79f60e31b5f5260045ffd5b906120065750805115611ff757602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580612037575b612017575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561200f56fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212206d513f9aca5d1a232e2d375fd7150ecc9d7e0977cc9a56b6a8e0e38cd22ad4e164736f6c634300081e0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","sourceMap":"350:7556:10:-:0;;;;;;;1171:4:26;1163:13;;-1:-1:-1;;;;;;;;;;;350:7556:10;;;;;;7894:76:25;;-1:-1:-1;;;;;;;;;;;350:7556:10;;7983:34:25;7979:146;;-1:-1:-1;350:7556:10;;;;;;;;1163:13:26;350:7556:10;;;;;;;;;;;7979:146:25;-1:-1:-1;;;;;;350:7556:10;-1:-1:-1;;;;;350:7556:10;;;-1:-1:-1;;;;;;;;;;;350:7556:10;;;8085:29:25;;350:7556:10;;8085:29:25;7979:146;;;;7894:76;7936:23;;;-1:-1:-1;7936:23:25;;-1:-1:-1;7936:23:25;350:7556:10;;;","linkReferences":{}},"deployedBytecode":{"object":"6080806040526004361015610012575f80fd5b5f3560e01c908163395c0fda14611855575080634c96a389146117685780634f1ef2861461153857806352d1902d146114d25780635e8255641461143657806365f7ef6814610a50578063715018a6146109e95780638129fc1c14610894578063886fe70b146108605780638da5cb5b1461082c578063961544d51461070b5780639a0fd80814610500578063a2ced7fd14610479578063ad3cb1cc1461041b578063b73585f114610383578063c44b11f7146101c7578063ea31a447146101115763f2fde38b146100e2575f80fd5b3461010d57602036600319011261010d5761010b6100fe611893565b610106611f84565b611f13565b005b5f80fd5b3461010d5761010036600319011261010d5761012b611893565b60e036602319011261010d5761013f611f84565b6001600160a01b03165f8181526001602052604090206006018054600160401b8110156101b35761017b81610181936001602494018155611c99565b90611cb2565b7f1f7dcc7122c2fe2d685db789d8cde941d28c9d5bf456dcd260705c8d4aef4ef860e06040516101b081611df5565ba2005b634e487b7160e01b5f52604160045260245ffd5b3461010d57602036600319011261010d576101e0611893565b60606101c06040516101f1816118d3565b5f81525f60208201525f60408201525f838201525f60808201525f60a08201525f60c08201525f60e08201525f6101008201525f6101208201525f6101408201525f6101608201525f6101808201525f6101a0820152015260018060a01b03165f52600160205261037f60405f20610365600660405192610271846118d3565b60018060a01b0381541684526001600160401b03600182015460018060a01b038116602087015260a01c16604085015260028101546001600160401b03811660608601526001600160401b038160401c1660808601526001600160401b038160801c1660a086015260c01c60c085015260038101546001600160401b03811660e08601526001600160401b038160401c166101008601526001600160401b038160801c1661012086015260c01c6101408501526001600160681b0360048201546001600160401b03811661016087015260401c166101808501526001600160681b036005820154166101a085015201611b9f565b6101c08201526040519182916020835260208301906119b7565b0390f35b3461010d57606036600319011261010d5761039c611893565b6103a46118a9565b90604435906001600160401b038216820361010d576103ee6001916103d461010b956103ce611f84565b82611e9f565b90838060a01b03165f5282602052600660405f2001611c99565b5001805467ffffffffffffffff60a81b191660a89290921b67ffffffffffffffff60a81b16919091179055565b3461010d575f36600319011261010d57604080519061043a81836118ef565b600582526020820191640352e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b3461010d57606036600319011261010d57610492611893565b61049a6118a9565b90604435906001600160801b038216820361010d576104e46002916104c461010b956103ce611f84565b6001600160a01b039091165f908152600160205260409020600601611c99565b5001906001600160801b0382549181199060801b169116179055565b3461010d5761010036600319011261010d5761051a611893565b60e036602319011261010d5761052e611f84565b602435906001600160a01b038216820361010d5761054c8282611e9f565b9060018060a01b031691825f52600160205261058f61057a61057484600660405f2001611c99565b50611b15565b92845f526001602052600660405f2001611c99565b9190916106f85781546001600160a01b0319166001600160a01b03918216178255600182019190604435908116810361010d5782546001600160a01b0319166001600160a01b039190911617825560643560ff8116810361010d57825460ff60a01b191660a09190911b60ff60a01b16178255608435916001600160401b038316830361010d57805467ffffffffffffffff60a81b191660a89390931b67ffffffffffffffff60a81b16929092179091556002019060a4356001600160401b038116810361010d57825467ffffffffffffffff19166001600160401b0391821617835560c435908116810361010d576106889083611c28565b60e435906001600160801b038216820361010d576106df6101c0927ff0d2e933bc5a83ab653c27f5ae312ee5f4a394a45c34bb90e8c790bf0ed3834194906001600160801b0382549181199060801b169116179055565b6106ec604051809261193f565b6101b060e08201611df5565b634e487b7160e01b5f525f60045260245ffd5b3461010d57602036600319011261010d576001600160a01b0361072c611893565b165f5260016020526101c060405f2060018060a01b03815416906001600160681b0360018201549160028101546003820154906001600160401b038460056004860154950154169560405197885260018060a01b038116602089015260a01c1660408701526001600160401b03811660608701526001600160401b038160401c1660808701526001600160401b038160801c1660a087015260c01c60c08601526001600160401b03811660e08601526001600160401b038160401c166101008601526001600160401b038160801c1661012086015260c01c6101408501526001600160401b03811661016085015260401c166101808301526101a0820152f35b3461010d575f36600319011261010d575f5160206120415f395f51905f52546040516001600160a01b039091168152602090f35b3461010d57604036600319011261010d57602061088c61087e611893565b6108866118a9565b90611e9f565b604051908152f35b3461010d575f36600319011261010d575f5160206120815f395f51905f52546001600160401b0360ff8260401c16159116801590816109e1575b60011490816109d7575b1590816109ce575b506109bf578060016001600160401b03195f5160206120815f395f51905f525416175f5160206120815f395f51905f525561098f575b61091e611fb7565b610926611fb7565b61092e611fb7565b61093733611f13565b61093d57005b60ff60401b195f5160206120815f395f51905f5254165f5160206120815f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b600160401b60ff60401b195f5160206120815f395f51905f525416175f5160206120815f395f51905f5255610916565b63f92ee8a960e01b5f5260045ffd5b905015826108e0565b303b1591506108d8565b8291506108ce565b3461010d575f36600319011261010d57610a01611f84565b5f5160206120415f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461010d57604036600319011261010d57610a69611893565b6001600160401b036024351161010d576101e06024353603600319011261010d57610a92611f84565b60018060a01b0381165f52600160205260405f209060405191610ab4836118d3565b60018060a01b0381541683526001600160401b03600182015460018060a01b038116602086015260a01c16604084015260028101546001600160401b03811660608501526001600160401b038160401c1660808501526001600160401b038160801c1660a085015260c01c60c084015260038101546001600160401b03811660e08501526001600160401b038160401c166101008501526001600160401b038160801c1661012085015260c01c610140840152610bb060066004830154926001600160681b036101608701946001600160401b038116865260401c166101808701526001600160681b036005820154166101a087015201611b9f565b6101c084015282516001600160a01b03168015159190826113de575b50506113cf5760018060a01b0381165f526001602052600660405f205f81555f60018201555f60028201555f60038201555f60048201555f6005820155018054905f815581611382575b5050610c26602435600401611c00565b6001600160a01b038281165f90815260016020526040902080546001600160a01b03191692909116919091179055610c616024803501611c00565b6001600160a01b038281165f9081526001602081905260409091200180546001600160a01b03191692909116919091179055610ca1602435604401611c14565b6001600160a01b0382165f90815260016020819052604090912001805467ffffffffffffffff60a01b191660a09290921b67ffffffffffffffff60a01b16919091179055610cf3602435606401611c14565b60018060a01b0382165f5260016020526001600160401b03600260405f200191166001600160401b0319825416179055610d53610d34608460243501611c14565b6001600160a01b0383165f908152600160205260409020600201611c28565b610da9610d6460a460243501611c14565b6001600160a01b0383165f908152600160205260409020600201805467ffffffffffffffff60801b191660809290921b67ffffffffffffffff60801b16919091179055565b610df7610dba60c460243501611c14565b6001600160a01b0383165f90815260016020526040902060020180546001600160c01b031660c09290921b6001600160c01b031916919091179055565b610e0560e460243501611c14565b60018060a01b0382165f5260016020526001600160401b03600360405f200191166001600160401b0319825416179055610e66610e4761010460243501611c14565b6001600160a01b0383165f908152600160205260409020600301611c28565b610ebd610e7861012460243501611c14565b6001600160a01b0383165f908152600160205260409020600301805467ffffffffffffffff60801b191660809290921b67ffffffffffffffff60801b16919091179055565b610f0c610ecf61014460243501611c14565b6001600160a01b0383165f90815260016020526040902060030180546001600160c01b031660c09290921b6001600160c01b031916919091179055565b610f1b61016460243501611c14565b60018060a01b0382165f5260016020526001600160401b03600460405f200191166001600160401b0319825416179055610f5a61018460243501611c50565b60018060a01b0382165f526001602052600460405f200190600160401b600160a81b0382549160401b1690600160401b600160a81b031916179055610fa46101a460243501611c50565b60018060a01b0382165f5260016020526001600160681b03600560405f200191166001600160681b03198254161790555f5b610feb6101c460243501602435600401611c64565b9050811015611074576001600160a01b0382165f908152600160205260409020600601906110236024356101c4810190600401611c64565b82101561106057825490600160401b8210156101b35761104d826001958661105a95018155611c99565b909160e085020191611cb2565b01610fd6565b634e487b7160e01b5f52603260045260245ffd5b509061108b604051916040835260408301906119b7565b8181036020830152916001600160a01b036110aa6004602435016118bf565b1683526001600160a01b036110c260248035016118bf565b1660208401526001600160401b036110de60446024350161192b565b1660408401526001600160401b036110fa60646024350161192b565b1660608401526001600160401b0361111660846024350161192b565b1660808401526001600160401b0361113260a46024350161192b565b1660a08401526001600160401b0361114e60c46024350161192b565b1660c08401526001600160401b0361116a60e46024350161192b565b1660e08401526001600160401b036111876101046024350161192b565b166101008401526001600160401b036111a56101246024350161192b565b166101208401526001600160401b036111c36101446024350161192b565b166101408401526001600160401b036111e16101646024350161192b565b166101608401526001600160681b036111ff61018460243501611de1565b166101808401526001600160681b0361121d6101a460243501611de1565b166101a08401526024356101c48101359036036022190181121561010d5760243501602460048201359101936001600160401b03821161010d5760e082023603851361010d57806101e06101c0610200930152826101e08201520193905f905b8082106112b6576001600160a01b0384167fc3a61d70fd0466b150794337cec2f61ed208422677b8551e4487499c4c21035b86880387a2005b91949091906001600160a01b036112cc876118bf565b1681526001600160a01b036112e3602088016118bf565b166020820152604086013560ff811680910361010d5760408201526001600160401b036113126060880161192b565b1660608201526001600160401b0361132c6080880161192b565b1660808201526001600160401b0361134660a0880161192b565b1660a082015260c0860135906001600160801b038216820361010d5760e080916001600160801b036001941660c082015201960192019061127d565b816003029160038304036113bb575f5260205f20908101905b81811015610c1657805f600392555f60018201555f60028201550161139b565b634e487b7160e01b5f52601160045260245ffd5b630735e0fd60e51b5f5260045ffd5b9091506001600160a01b036113f7600460243501611c00565b16149081159161140a575b508380610bcc565b6001600160401b03915051166001600160401b0361142d61016460243501611c14565b16141583611402565b3461010d57604036600319011261010d5761144f611893565b6114576118a9565b61145f611f84565b6001600160a01b03169081156114c3576001600160a01b039081165f81815260208190526040812080546001600160a01b031981168617909155909216917fcc826d20934cb90e9329d09ff55b4e43831c5bb3a3305fb536842ad49041e7d59080a4005b63e6c4247b60e01b5f5260045ffd5b3461010d575f36600319011261010d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036115295760206040515f5160206120615f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b604036600319011261010d5761154c611893565b602435906001600160401b03821161010d573660238301121561010d5781600401359061157882611910565b9161158660405193846118ef565b8083526020830193366024838301011161010d57815f926024602093018737840101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115611746575b50611529576115eb611f84565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa5f9181611712575b5061162d5784634c9c8ce360e01b5f5260045260245ffd5b805f5160206120615f395f51905f528692036117005750823b156116ee575f5160206120615f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28251156116d5575f809161010b945190845af43d156116cd573d916116b183611910565b926116bf60405194856118ef565b83523d5f602085013e611fe2565b606091611fe2565b505050346116df57005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d60201161173e575b8161172e602093836118ef565b8101031261010d57519086611615565b3d9150611721565b5f5160206120615f395f51905f52546001600160a01b031614159050846115de565b3461010d57602036600319011261010d575f611782611893565b61178a611f84565b6001600160a01b0390811680835260208381526040808520549051631dd70c0360e21b815294929391928592600492849291165af1801561184a575f90611805575b6020925060018060a01b031680604051927f56aab5483cc40d7e4e6b3ce2831f55ce79d54c537d1c695c2d86656ce7a843075f80a38152f35b50906020813d602011611842575b81611820602093836118ef565b8101031261010d5751906001600160a01b038216820361010d576020916117cc565b3d9150611813565b6040513d5f823e3d90fd5b3461010d57602036600319011261010d576020906001600160a01b03611879611893565b165f90815280835260409020546001600160a01b03168152f35b600435906001600160a01b038216820361010d57565b602435906001600160a01b038216820361010d57565b35906001600160a01b038216820361010d57565b6101e081019081106001600160401b038211176101b357604052565b90601f801991011681019081106001600160401b038211176101b357604052565b6001600160401b0381116101b357601f01601f191660200190565b35906001600160401b038216820361010d57565b6001600160801b0360c0809260018060a01b03815116855260018060a01b03602082015116602086015260ff60408201511660408601526001600160401b0360608201511660608601526001600160401b0360808201511660808601526001600160401b0360a08201511660a0860152015116910152565b60206102006101c06101e085019360018060a01b03815116865260018060a01b038482015116848701526001600160401b0360408201511660408701526001600160401b0360608201511660608701526001600160401b0360808201511660808701526001600160401b0360a08201511660a08701526001600160401b0360c08201511660c08701526001600160401b0360e08201511660e08701526001600160401b03610100820151166101008701526001600160401b03610120820151166101208701526001600160401b03610140820151166101408701526001600160401b03610160820151166101608701526001600160681b03610180820151166101808701526001600160681b036101a0820151166101a08701520151936101e06101c08201528451809452019201905f5b818110611af55750505090565b909192602060e082611b0a600194885161193f565b019401929101611ae8565b9060405160e081018181106001600160401b038211176101b35760405260c06002829460018060a01b0381541684526001600160401b03600182015460018060a01b038116602087015260ff8160a01c16604087015260a81c16606085015201546001600160401b03811660808401526001600160401b038160401c1660a084015260801c910152565b9081546001600160401b0381116101b35760405192611bc460208360051b01856118ef565b81845260208401905f5260205f205f915b838310611be25750505050565b60036020600192611bf285611b15565b815201920192019190611bd5565b356001600160a01b038116810361010d5790565b356001600160401b038116810361010d5790565b9067ffffffffffffffff60401b82549160401b169067ffffffffffffffff60401b1916179055565b356001600160681b038116810361010d5790565b903590601e198136030182121561010d57018035906001600160401b03821161010d576020019160e082023603831361010d57565b8054821015611060575f52600360205f20910201905f90565b906106f8576001600160a01b03611cc883611c00565b82546001600160a01b0319169116178155600181016001600160a01b03611cf160208501611c00565b82546001600160a01b031916911617815560408301359160ff8316830361010d57815460ff60a01b191660a09390931b60ff60a01b1692909217815560c091600291611d6b90611d4360608701611c14565b815467ffffffffffffffff60a81b191660a89190911b67ffffffffffffffff60a81b16179055565b01916001600160401b03611d8160808301611c14565b166001600160401b0319845416178355611da6611da060a08301611c14565b84611c28565b01356001600160801b038116810361010d5781546001600160801b031660809190911b6fffffffffffffffffffffffffffffffff1916179055565b35906001600160681b038216820361010d57565b6024356001600160a01b0381169081900361010d5781526044356001600160a01b0381169081900361010d57602082015260643560ff811680910361010d5760408201526084356001600160401b03811680910361010d57606082015260a4356001600160401b03811680910361010d57608082015260c4356001600160401b03811680910361010d5760a082015260e435906001600160801b03821680920361010d5760c00152565b6001600160a01b03165f908152600160205260409020611ec190600601611b9f565b908151915f5b838110611edd576367fa94e760e01b5f5260045ffd5b815181101561106057600581901b820160200151516001600160a01b03848116911614611f0c57600101611ec7565b9250505090565b6001600160a01b03168015611f71575f5160206120415f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b5f5160206120415f395f51905f52546001600160a01b03163303611fa457565b63118cdaa760e01b5f523360045260245ffd5b60ff5f5160206120815f395f51905f525460401c1615611fd357565b631afcd79f60e31b5f5260045ffd5b906120065750805115611ff757602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580612037575b612017575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561200f56fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212206d513f9aca5d1a232e2d375fd7150ecc9d7e0977cc9a56b6a8e0e38cd22ad4e164736f6c634300081e0033","sourceMap":"350:7556:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;350:7556:10;;;;2357:1:24;350:7556:10;;:::i;:::-;2303:62:24;;:::i;:::-;2357:1;:::i;:::-;350:7556:10;;;;;;;;;;;-1:-1:-1;;350:7556:10;;;;;;:::i;:::-;;;-1:-1:-1;;350:7556:10;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;4827:45;;350:7556;;-1:-1:-1;;;350:7556:10;;;;;;;;;4827:18;350:7556;;;;;;:::i;:::-;;;:::i;:::-;4905:35;350:7556;;;;;;:::i;:::-;4905:35;350:7556;;;;;;;;;;;;;;;;;;;-1:-1:-1;;350:7556:10;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7865:18;350:7556;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;7865:18:10;350:7556;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;350:7556:10;;;;;;:::i;:::-;;;:::i;:::-;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;5992:57;:18;2303:62:24;5948:34:10;5992:94;2303:62:24;;;:::i;:::-;5948:34:10;;:::i;:::-;350:7556;;;;;;;;;;;;5992:45;350:7556;;;5992:45;:57;:::i;:::-;-1:-1:-1;5992:80:10;350:7556;;-1:-1:-1;;;;350:7556:10;;;;;;-1:-1:-1;;;350:7556:10;;;;;;;;;;;;;;-1:-1:-1;;350:7556:10;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;350:7556:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;350:7556:10;;;;;;;;;;;;;-1:-1:-1;;350:7556:10;;;;;;:::i;:::-;;;:::i;:::-;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;6514:57;:67;2303:62:24;6470:34:10;6514:82;2303:62:24;;;:::i;6470:34:10:-;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;6514:45;;:57;:::i;:::-;:67;;350:7556;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;350:7556:10;;;;;;:::i;:::-;;;-1:-1:-1;;350:7556:10;;;;2303:62:24;;:::i;:::-;350:7556:10;;;-1:-1:-1;;;;;350:7556:10;;;;;;5246:49;;;;:::i;:::-;350:7556;;;;;;;;;;;5341:18;350:7556;;5408:57;350:7556;5341:57;350:7556;5341:45;350:7556;;;5341:45;:57;:::i;:::-;350:7556;;:::i;:::-;;;;;5341:18;350:7556;;5341:45;350:7556;;;5408:45;:57;:::i;:::-;350:7556;;;;;;;-1:-1:-1;;;;;;350:7556:10;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;350:7556:10;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;350:7556:10;;;;;;-1:-1:-1;;;350:7556:10;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;-1:-1:-1;;;;350:7556:10;;;;;;-1:-1:-1;;;350:7556:10;;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;-1:-1:-1;;350:7556:10;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;5497:57;350:7556;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;350:7556:10;;;;-1:-1:-1;;;;;350:7556:10;;:::i;:::-;;;;385:59:11;350:7556:10;;;;;;;;;;;;;;385:59:11;-1:-1:-1;;;;;385:59:11;;;350:7556:10;385:59:11;;;;350:7556:10;385:59:11;;;350:7556:10;385:59:11;-1:-1:-1;;;;;385:59:11;;350:7556:10;385:59:11;;350:7556:10;385:59:11;;350:7556:10;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;350:7556:10;;;;-1:-1:-1;;;;;;;;;;;350:7556:10;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;-1:-1:-1;;350:7556:10;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;350:7556:10;;;;-1:-1:-1;;;;;;;;;;;350:7556:10;-1:-1:-1;;;;;350:7556:10;;;;;4301:16:25;350:7556:10;;4724:16:25;;:34;;;;350:7556:10;4803:1:25;4788:16;:50;;;;350:7556:10;4853:13:25;:30;;;;350:7556:10;4849:91:25;;;350:7556:10;4803:1:25;-1:-1:-1;;;;;350:7556:10;-1:-1:-1;;;;;;;;;;;350:7556:10;;;-1:-1:-1;;;;;;;;;;;350:7556:10;4977:67:25;;350:7556:10;6891:76:25;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;6959:1;1299:10:10;6959:1:25;:::i;:::-;5064:101;;350:7556:10;5064:101:25;-1:-1:-1;;;350:7556:10;-1:-1:-1;;;;;;;;;;;350:7556:10;;-1:-1:-1;;;;;;;;;;;350:7556:10;5140:14:25;350:7556:10;;;4803:1:25;350:7556:10;;5140:14:25;350:7556:10;4977:67:25;-1:-1:-1;;;;;;350:7556:10;-1:-1:-1;;;;;;;;;;;350:7556:10;;;-1:-1:-1;;;;;;;;;;;350:7556:10;4977:67:25;;4849:91;4906:23;;;350:7556:10;4906:23:25;350:7556:10;;4906:23:25;4853:30;4870:13;;;4853:30;;;4788:50;4816:4;4808:25;:30;;-1:-1:-1;4788:50:25;;4724:34;;;-1:-1:-1;4724:34:25;;350:7556:10;;;;;;-1:-1:-1;;350:7556:10;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;350:7556:10;;-1:-1:-1;;;;;;350:7556:10;;;;;;;-1:-1:-1;;;;;350:7556:10;3975:40:24;350:7556:10;;3975:40:24;350:7556:10;;;;;;;-1:-1:-1;;350:7556:10;;;;;;:::i;:::-;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;-1:-1:-1;;350:7556:10;;;;2303:62:24;;:::i;:::-;350:7556:10;;;;;;;;;2278:18;350:7556;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;2278:18:10;350:7556;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;350:7556:10;2372:40;;;;;;:205;;350:7556;2368:258;;;;350:7556;;;;;;;;;2278:18;350:7556;;;;;;;;;;2278:18;350:7556;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:26;350:7556;;;;2803:26;:::i;:::-;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;;-1:-1:-1;;;;;;350:7556:10;;;;;;;;;;;2893:35;350:7556;;;2893:35;;:::i;:::-;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;;;2839:51;350:7556;;-1:-1:-1;;;;;;350:7556:10;;;;;;;;;;;2984:27;350:7556;;2984:27;;;:::i;:::-;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;;2938:43;350:7556;;-1:-1:-1;;;;350:7556:10;;;;;;-1:-1:-1;;;350:7556:10;;;;;;;3090:50;350:7556;;3090:50;;;:::i;:::-;350:7556;;;;;;;;;2278:18;350:7556;;-1:-1:-1;;;;;350:7556:10;;;;3021:66;350:7556;;-1:-1:-1;;;;;350:7556:10;;;;;;;3150:121;3220:51;;350:7556;;3220:51;;:::i;:::-;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;3150:67;:121;:::i;:::-;3281:111;3346:46;;350:7556;;3346:46;;:::i;:::-;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;3281:62;350:7556;;-1:-1:-1;;;;350:7556:10;;;;;;-1:-1:-1;;;350:7556:10;;;;;;;;3281:111;3402:73;3448:27;;350:7556;;3448:27;;:::i;:::-;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;3402:43;350:7556;;-1:-1:-1;;;;;350:7556:10;;;;;;-1:-1:-1;;;;;;350:7556:10;;;;;;;;3402:73;3554:50;;350:7556;;3554:50;;:::i;:::-;350:7556;;;;;;;;;2278:18;350:7556;;-1:-1:-1;;;;;350:7556:10;;;;3485:66;350:7556;;-1:-1:-1;;;;;350:7556:10;;;;;;;3614:121;3684:51;;350:7556;;3684:51;;:::i;:::-;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;3614:67;:121;:::i;:::-;3745:111;3810:46;;350:7556;;3810:46;;:::i;:::-;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;3745:62;350:7556;;-1:-1:-1;;;;350:7556:10;;;;;;-1:-1:-1;;;350:7556:10;;;;;;;;3745:111;3866:95;3923:38;;350:7556;;3923:38;;:::i;:::-;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;3866:54;350:7556;;-1:-1:-1;;;;;350:7556:10;;;;;;-1:-1:-1;;;;;;350:7556:10;;;;;;;;3866:95;4025:35;;350:7556;;4025:35;;:::i;:::-;350:7556;;;;;;;;;2278:18;350:7556;;-1:-1:-1;;;;;350:7556:10;;;;3971:51;350:7556;;-1:-1:-1;;;;;350:7556:10;;;;;;;4119:30;;350:7556;;4119:30;;:::i;:::-;350:7556;;;;;;;;;2278:18;350:7556;;;;;;4070:46;350:7556;-1:-1:-1;;;;;;;350:7556:10;;;;;;;-1:-1:-1;;;;;;;350:7556:10;;;;;4209:31;;350:7556;;4209:31;;:::i;:::-;350:7556;;;;;;;;;2278:18;350:7556;;-1:-1:-1;;;;;350:7556:10;;;;4159:47;350:7556;;-1:-1:-1;;;;;350:7556:10;;;;;;;;4348:3;4310:29;;350:7556;;4310:29;350:7556;;;;4310:29;:::i;:::-;4306:40;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;4367:45;;4418:29;350:7556;;4310:29;;;;350:7556;;4418:29;:::i;:::-;350:7556;;;;;;;;-1:-1:-1;;;350:7556:10;;;;;;;2278:18;350:7556;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;4294:10;;350:7556;;;;;;;;;;;;4306:40;;;350:7556;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;350:7556:10;;;;2893:35;350:7556;:::i;:::-;;;;;;-1:-1:-1;;;;;350:7556:10;2984:27;350:7556;;2984:27;350:7556;:::i;:::-;;;;;;-1:-1:-1;;;;;350:7556:10;3090:50;350:7556;;3090:50;350:7556;:::i;:::-;;;;;;-1:-1:-1;;;;;350:7556:10;3220:51;350:7556;;3220:51;350:7556;:::i;:::-;;;;;;-1:-1:-1;;;;;350:7556:10;3346:46;350:7556;;3346:46;350:7556;:::i;:::-;;;;;;-1:-1:-1;;;;;350:7556:10;3448:27;350:7556;;3448:27;350:7556;:::i;:::-;;;;;;-1:-1:-1;;;;;350:7556:10;3554:50;350:7556;;3554:50;350:7556;:::i;:::-;;;;;;-1:-1:-1;;;;;350:7556:10;3684:51;350:7556;;3684:51;350:7556;:::i;:::-;;;;;;-1:-1:-1;;;;;350:7556:10;3810:46;350:7556;;3810:46;350:7556;:::i;:::-;;;;;;-1:-1:-1;;;;;350:7556:10;3923:38;350:7556;;3923:38;350:7556;:::i;:::-;;;;;;-1:-1:-1;;;;;350:7556:10;4025:35;350:7556;;4025:35;350:7556;:::i;:::-;;;;;;-1:-1:-1;;;;;350:7556:10;4119:30;350:7556;;4119:30;350:7556;:::i;:::-;;;;;;-1:-1:-1;;;;;350:7556:10;4209:31;350:7556;;4209:31;350:7556;:::i;:::-;;;;;;;;4310:29;;;350:7556;;;;-1:-1:-1;;350:7556:10;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;4485:66;;;;350:7556;4485:66;350:7556;;;;;;;-1:-1:-1;;;;;350:7556:10;;;:::i;:::-;;;;-1:-1:-1;;;;;350:7556:10;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;-1:-1:-1;;;;;2278:18:10;350:7556;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2278:18;350:7556;;;;;;;;;;;;;;;;;;;;;;;2368:258;2598:28;;;350:7556;2598:28;350:7556;;2598:28;2372:205;350:7556;;-1:-1:-1;;;;;;2459:26:10;350:7556;;;;2459:26;:::i;:::-;350:7556;2429:56;;;;:147;;;2372:205;;;;;;2429:147;-1:-1:-1;;;;;350:7556:10;;;;-1:-1:-1;;;;;2541:35:10;;350:7556;;2541:35;;:::i;:::-;350:7556;2502:74;;2429:147;;;350:7556;;;;;;-1:-1:-1;;350:7556:10;;;;;;:::i;:::-;;;:::i;:::-;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;350:7556:10;;1728:24;;1724:53;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;350:7556:10;;;;;;;;;;;1897:48;;350:7556;1897:48;350:7556;1724:53;1761:16;;;350:7556;1761:16;350:7556;;1761:16;350:7556;;;;;;-1:-1:-1;;350:7556:10;;;;5090:6:26;-1:-1:-1;;;;;350:7556:10;5081:4:26;5073:23;5069:145;;350:7556:10;;;-1:-1:-1;;;;;;;;;;;350:7556:10;;;5069:145:26;4844:29;;;350:7556:10;5174:29:26;350:7556:10;;5174:29:26;350:7556:10;;;-1:-1:-1;;350:7556:10;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4667:6:26;350:7556:10;4658:4:26;4650:23;;;:120;;;;350:7556:10;4633:251:26;;;2303:62:24;;:::i;:::-;350:7556:10;;-1:-1:-1;;;6131:52:26;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;6131:52:26;;350:7556:10;;6131:52:26;;;350:7556:10;-1:-1:-1;6127:437:26;;1805:47:39;;;;350:7556:10;6493:60:26;350:7556:10;;;;6493:60:26;6127:437;6225:40;-1:-1:-1;;;;;;;;;;;6225:40:26;;;6221:120;;1748:29:39;;;:34;1744:119;;-1:-1:-1;;;;;;;;;;;350:7556:10;;-1:-1:-1;;;;;;350:7556:10;;;;;2407:36:39;-1:-1:-1;;2407:36:39;350:7556:10;;2458:15:39;:11;;350:7556:10;4065:25:45;;4107:55;4065:25;;;;;;350:7556:10;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;4107:55:45;:::i;350:7556:10:-;;;4107:55:45;:::i;2454:148:39:-;6163:9;;;;6159:70;;350:7556:10;6159:70:39;6199:19;;;350:7556:10;6199:19:39;350:7556:10;;6199:19:39;1744:119;1805:47;;;350:7556:10;1805:47:39;350:7556:10;;;;1805:47:39;6221:120:26;6292:34;;;350:7556:10;6292:34:26;350:7556:10;;;;6292:34:26;6131:52;;;;350:7556:10;6131:52:26;;350:7556:10;6131:52:26;;;;;;350:7556:10;6131:52:26;;;:::i;:::-;;;350:7556:10;;;;;6131:52:26;;;;;;;-1:-1:-1;6131:52:26;;4650:120;-1:-1:-1;;;;;;;;;;;350:7556:10;-1:-1:-1;;;;;350:7556:10;4728:42:26;;;-1:-1:-1;4650:120:26;;;350:7556:10;;;;;;-1:-1:-1;;350:7556:10;;;;;;;:::i;:::-;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;;;;-1:-1:-1;;;6859:46:10;;350:7556;;;;;;;;;;;;;6859:46;;;;;;350:7556;6859:46;;;350:7556;;;;;;;;;;;;;6920:41;;350:7556;6920:41;;350:7556;;;6859:46;;;350:7556;6859:46;;350:7556;6859:46;;;;;;350:7556;6859:46;;;:::i;:::-;;;350:7556;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;6859:46;;;;;;-1:-1:-1;6859:46:10;;;350:7556;;;;;;;;;;;;;;;-1:-1:-1;;350:7556:10;;;;;;-1:-1:-1;;;;;350:7556:10;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;350:7556:10;;;;;;:::o;:::-;;;-1:-1:-1;;;;;350:7556:10;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;:::o;:::-;-1:-1:-1;;;;;350:7556:10;;;;;;-1:-1:-1;;350:7556:10;;;;:::o;:::-;;;-1:-1:-1;;;;;350:7556:10;;;;;;:::o;:::-;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;350:7556:10;;-1:-1:-1;350:7556:10;-1:-1:-1;350:7556:10;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;:::o;:::-;;-1:-1:-1;;;;;350:7556:10;;;;;;;:::o;:::-;;-1:-1:-1;;;350:7556:10;;;;;;;-1:-1:-1;;;350:7556:10;;;;;:::o;:::-;;-1:-1:-1;;;;;350:7556:10;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;350:7556:10;;;-1:-1:-1;350:7556:10;;;;;-1:-1:-1;350:7556:10;:::o;:::-;;;;-1:-1:-1;;;;;350:7556:10;;;:::i;:::-;;;-1:-1:-1;;;;;;350:7556:10;;;;;;-1:-1:-1;350:7556:10;;-1:-1:-1;;;;;350:7556:10;;;;;:::i;:::-;;;-1:-1:-1;;;;;;350:7556:10;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;350:7556:10;;;;;;-1:-1:-1;;;350:7556:10;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;350:7556:10;;;;;;-1:-1:-1;;;350:7556:10;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;:::i;:::-;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;-1:-1:-1;;350:7556:10;;;;:::o;:::-;;;-1:-1:-1;;;;;350:7556:10;;;;;;:::o;:::-;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;:::o;7181:442::-;-1:-1:-1;;;;;350:7556:10;;;;;;;;;;;;;7314:45;;350:7556;:::i;:::-;;;;7420:10;350:7556;7432:13;;;;;;7597:19;;;350:7556;7597:19;;350:7556;7597:19;7420:10;350:7556;;;;;;;;;;;;;;;7467:15;350:7556;-1:-1:-1;;;;;350:7556:10;;;;;7467:30;7463:77;;7314:18;350:7556;7420:10;;7463:77;7517:8;;;;;:::o;3405:215:24:-;-1:-1:-1;;;;;350:7556:10;3489:22:24;;3485:91;;-1:-1:-1;;;;;;;;;;;350:7556:10;;-1:-1:-1;;;;;;350:7556:10;;;;;;;-1:-1:-1;;;;;350:7556:10;3975:40:24;-1:-1:-1;;3975:40:24;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;350:7556:10;;3509:1:24;3534:31;2658:162;-1:-1:-1;;;;;;;;;;;350:7556:10;-1:-1:-1;;;;;350:7556:10;966:10:28;2717:23:24;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:24;966:10:28;2763:40:24;350:7556:10;;-1:-1:-1;2763:40:24;7082:141:25;350:7556:10;-1:-1:-1;;;;;;;;;;;350:7556:10;;;;7148:18:25;7144:73;;7082:141::o;7144:73::-;7189:17;;;-1:-1:-1;7189:17:25;;-1:-1:-1;7189:17:25;4437:582:45;;4609:8;;-1:-1:-1;350:7556:10;;5690:21:45;:17;;5815:105;;;;;;5686:301;5957:19;;;5710:1;5957:19;;5710:1;5957:19;4605:408;350:7556:10;;4857:22:45;:49;;;4605:408;4853:119;;4985:17;;:::o;4853:119::-;-1:-1:-1;;;4878:1:45;4933:24;;;-1:-1:-1;;;;;350:7556:10;;;;4933:24:45;350:7556:10;;;4933:24:45;4857:49;4883:18;;;:23;4857:49;","linkReferences":{},"immutableReferences":{"10672":[{"start":5348,"length":32},{"start":5555,"length":32}]}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","addAsset(address,(address,address,uint8,uint64,uint64,uint64,uint128))":"ea31a447","configuratorParams(address)":"961544d5","deploy(address)":"4c96a389","factory(address)":"395c0fda","getAssetIndex(address,address)":"886fe70b","getConfiguration(address)":"c44b11f7","initialize()":"8129fc1c","owner()":"8da5cb5b","proxiableUUID()":"52d1902d","renounceOwnership()":"715018a6","setConfiguration(address,(address,address,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint104,uint104,(address,address,uint8,uint64,uint64,uint64,uint128)[]))":"65f7ef68","setFactory(address,address)":"5e825564","transferOwnership(address)":"f2fde38b","updateAsset(address,(address,address,uint8,uint64,uint64,uint64,uint128))":"9a0fd808","updateAssetBorrowCollateralFactor(address,address,uint64)":"b73585f1","updateAssetSupplyCap(address,address,uint128)":"a2ced7fd","upgradeToAndCall(address,bytes)":"4f1ef286"}}}},"contracts/ytLending/ConfiguratorStorage.sol":{"ConfiguratorStorage":{"abi":[{"type":"function","name":"configuratorParams","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"baseToken","type":"address","internalType":"address"},{"name":"baseTokenPriceFeed","type":"address","internalType":"address"},{"name":"supplyKink","type":"uint64","internalType":"uint64"},{"name":"supplyPerYearInterestRateSlopeLow","type":"uint64","internalType":"uint64"},{"name":"supplyPerYearInterestRateSlopeHigh","type":"uint64","internalType":"uint64"},{"name":"supplyPerYearInterestRateBase","type":"uint64","internalType":"uint64"},{"name":"borrowKink","type":"uint64","internalType":"uint64"},{"name":"borrowPerYearInterestRateSlopeLow","type":"uint64","internalType":"uint64"},{"name":"borrowPerYearInterestRateSlopeHigh","type":"uint64","internalType":"uint64"},{"name":"borrowPerYearInterestRateBase","type":"uint64","internalType":"uint64"},{"name":"storeFrontPriceFactor","type":"uint64","internalType":"uint64"},{"name":"trackingIndexScale","type":"uint64","internalType":"uint64"},{"name":"baseBorrowMin","type":"uint104","internalType":"uint104"},{"name":"targetReserves","type":"uint104","internalType":"uint104"}],"stateMutability":"view"},{"type":"function","name":"factory","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"configuratorParams\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"baseTokenPriceFeed\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"supplyKink\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"supplyPerYearInterestRateSlopeLow\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"supplyPerYearInterestRateSlopeHigh\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"supplyPerYearInterestRateBase\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowKink\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowPerYearInterestRateSlopeLow\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowPerYearInterestRateSlopeHigh\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowPerYearInterestRateBase\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"storeFrontPriceFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"trackingIndexScale\",\"type\":\"uint64\"},{\"internalType\":\"uint104\",\"name\":\"baseBorrowMin\",\"type\":\"uint104\"},{\"internalType\":\"uint104\",\"name\":\"targetReserves\",\"type\":\"uint104\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"ConfiguratorStorage\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Configurator \\u5b58\\u50a8\\u5b9a\\u4e49\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ytLending/ConfiguratorStorage.sol\":\"ConfiguratorStorage\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"contracts/ytLending/ConfiguratorStorage.sol\":{\"keccak256\":\"0xb77169bdc4b0d2e7b24d9e1d51b87cc6a5c2736a37b0c8aefe1188918c53f264\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94d0f3ff4908fb5d6eb39758029231af1ddcb24b1ebfb857daeabcf98a7f5534\",\"dweb:/ipfs/QmQxANNnSfJFNVK1Xx33Xyypui8thUY89jzSzC4NQmwpFv\"]},\"contracts/ytLending/LendingConfiguration.sol\":{\"keccak256\":\"0xb865cb13a3cdd84c409188043405fce03159fef567296b4ad795eebfbe3ba1ce\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05b6f564c096a2dc656c9b06a6683b723314d01ec194f4a3f288c7d2ecca54f3\",\"dweb:/ipfs/QmYbAD9EDyGBCjHid2hP7m1qmd19bXR7h2hyDA8F1AP2ow\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"configuratorParams(address)":"961544d5","factory(address)":"395c0fda"}}}},"contracts/ytLending/Lending.sol":{"Lending":{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"absorb","inputs":[{"name":"borrower","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"absorbMultiple","inputs":[{"name":"absorber","type":"address","internalType":"address"},{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"accrueInterest","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"assetConfigs","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"asset","type":"address","internalType":"address"},{"name":"priceFeed","type":"address","internalType":"address"},{"name":"decimals","type":"uint8","internalType":"uint8"},{"name":"borrowCollateralFactor","type":"uint64","internalType":"uint64"},{"name":"liquidateCollateralFactor","type":"uint64","internalType":"uint64"},{"name":"liquidationFactor","type":"uint64","internalType":"uint64"},{"name":"supplyCap","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"assetList","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"baseBorrowMin","inputs":[],"outputs":[{"name":"","type":"uint104","internalType":"uint104"}],"stateMutability":"view"},{"type":"function","name":"baseToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"baseTokenPriceFeed","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"borrow","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"borrowBalanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"borrowIndex","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"borrowKink","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"borrowPerSecondInterestRateBase","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"borrowPerSecondInterestRateSlopeHigh","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"borrowPerSecondInterestRateSlopeLow","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"buyCollateral","inputs":[{"name":"asset","type":"address","internalType":"address"},{"name":"minAmount","type":"uint256","internalType":"uint256"},{"name":"baseAmount","type":"uint256","internalType":"uint256"},{"name":"recipient","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"collateralReserves","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBalance","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"getBorrowRate","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getCollateral","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"asset","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCollateralReserves","inputs":[{"name":"asset","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getReserves","inputs":[],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"getSupplyRate","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getTotalBorrow","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTotalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUtilization","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"config","type":"tuple","internalType":"struct LendingConfiguration.Configuration","components":[{"name":"baseToken","type":"address","internalType":"address"},{"name":"baseTokenPriceFeed","type":"address","internalType":"address"},{"name":"supplyKink","type":"uint64","internalType":"uint64"},{"name":"supplyPerYearInterestRateSlopeLow","type":"uint64","internalType":"uint64"},{"name":"supplyPerYearInterestRateSlopeHigh","type":"uint64","internalType":"uint64"},{"name":"supplyPerYearInterestRateBase","type":"uint64","internalType":"uint64"},{"name":"borrowKink","type":"uint64","internalType":"uint64"},{"name":"borrowPerYearInterestRateSlopeLow","type":"uint64","internalType":"uint64"},{"name":"borrowPerYearInterestRateSlopeHigh","type":"uint64","internalType":"uint64"},{"name":"borrowPerYearInterestRateBase","type":"uint64","internalType":"uint64"},{"name":"storeFrontPriceFactor","type":"uint64","internalType":"uint64"},{"name":"trackingIndexScale","type":"uint64","internalType":"uint64"},{"name":"baseBorrowMin","type":"uint104","internalType":"uint104"},{"name":"targetReserves","type":"uint104","internalType":"uint104"},{"name":"assetConfigs","type":"tuple[]","internalType":"struct LendingConfiguration.AssetConfig[]","components":[{"name":"asset","type":"address","internalType":"address"},{"name":"priceFeed","type":"address","internalType":"address"},{"name":"decimals","type":"uint8","internalType":"uint8"},{"name":"borrowCollateralFactor","type":"uint64","internalType":"uint64"},{"name":"liquidateCollateralFactor","type":"uint64","internalType":"uint64"},{"name":"liquidationFactor","type":"uint64","internalType":"uint64"},{"name":"supplyCap","type":"uint128","internalType":"uint128"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isLiquidatable","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"lastAccrualTime","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"quoteCollateral","inputs":[{"name":"asset","type":"address","internalType":"address"},{"name":"baseAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"storeFrontPriceFactor","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"supply","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supplyBalanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"supplyCollateral","inputs":[{"name":"asset","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supplyIndex","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"supplyKink","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"supplyPerSecondInterestRateBase","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"supplyPerSecondInterestRateSlopeHigh","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"supplyPerSecondInterestRateSlopeLow","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"targetReserves","inputs":[],"outputs":[{"name":"","type":"uint104","internalType":"uint104"}],"stateMutability":"view"},{"type":"function","name":"totalBorrowBase","inputs":[],"outputs":[{"name":"","type":"uint104","internalType":"uint104"}],"stateMutability":"view"},{"type":"function","name":"totalSupplyBase","inputs":[],"outputs":[{"name":"","type":"uint104","internalType":"uint104"}],"stateMutability":"view"},{"type":"function","name":"trackingIndexScale","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"userBasic","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"principal","type":"int104","internalType":"int104"}],"stateMutability":"view"},{"type":"function","name":"userCollateral","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdraw","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawCollateral","inputs":[{"name":"asset","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawReserves","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AbsorbCollateral","inputs":[{"name":"absorber","type":"address","indexed":true,"internalType":"address"},{"name":"borrower","type":"address","indexed":true,"internalType":"address"},{"name":"asset","type":"address","indexed":true,"internalType":"address"},{"name":"collateralAbsorbed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"usdValue","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"AbsorbDebt","inputs":[{"name":"absorber","type":"address","indexed":true,"internalType":"address"},{"name":"borrower","type":"address","indexed":true,"internalType":"address"},{"name":"basePaidOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"usdValue","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BuyCollateral","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"asset","type":"address","indexed":true,"internalType":"address"},{"name":"baseAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"collateralAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Supply","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"dst","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SupplyCollateral","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"dst","type":"address","indexed":true,"internalType":"address"},{"name":"asset","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Withdraw","inputs":[{"name":"src","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WithdrawCollateral","inputs":[{"name":"src","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"asset","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WithdrawReserves","inputs":[{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"BorrowTooSmall","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"EnforcedPause","inputs":[]},{"type":"error","name":"ExpectedPause","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[]},{"type":"error","name":"InsufficientCollateral","inputs":[]},{"type":"error","name":"InsufficientReserves","inputs":[]},{"type":"error","name":"InvalidBorrowCollateralFactor","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidLiquidateCollateralFactor","inputs":[]},{"type":"error","name":"InvalidLiquidationFactor","inputs":[]},{"type":"error","name":"NotForSale","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotLiquidatable","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"SupplyCapExceeded","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"Unauthorized","inputs":[]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BorrowTooSmall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientCollateral\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientReserves\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBorrowCollateralFactor\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLiquidateCollateralFactor\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLiquidationFactor\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotForSale\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotLiquidatable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SupplyCapExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"absorber\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateralAbsorbed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"usdValue\",\"type\":\"uint256\"}],\"name\":\"AbsorbCollateral\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"absorber\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"basePaidOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"usdValue\",\"type\":\"uint256\"}],\"name\":\"AbsorbDebt\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateralAmount\",\"type\":\"uint256\"}],\"name\":\"BuyCollateral\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Supply\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SupplyCollateral\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"WithdrawCollateral\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"WithdrawReserves\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"}],\"name\":\"absorb\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"absorber\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"absorbMultiple\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"accrueInterest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"assetConfigs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"priceFeed\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"borrowCollateralFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidateCollateralFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidationFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"supplyCap\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"assetList\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseBorrowMin\",\"outputs\":[{\"internalType\":\"uint104\",\"name\":\"\",\"type\":\"uint104\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseTokenPriceFeed\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"borrowBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"borrowIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"borrowKink\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"borrowPerSecondInterestRateBase\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"borrowPerSecondInterestRateSlopeHigh\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"borrowPerSecondInterestRateSlopeLow\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"buyCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"collateralReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBorrowRate\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getCollateral\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"getCollateralReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupplyRate\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalBorrow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUtilization\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"baseTokenPriceFeed\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"supplyKink\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"supplyPerYearInterestRateSlopeLow\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"supplyPerYearInterestRateSlopeHigh\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"supplyPerYearInterestRateBase\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowKink\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowPerYearInterestRateSlopeLow\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowPerYearInterestRateSlopeHigh\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"borrowPerYearInterestRateBase\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"storeFrontPriceFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"trackingIndexScale\",\"type\":\"uint64\"},{\"internalType\":\"uint104\",\"name\":\"baseBorrowMin\",\"type\":\"uint104\"},{\"internalType\":\"uint104\",\"name\":\"targetReserves\",\"type\":\"uint104\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"priceFeed\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"borrowCollateralFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidateCollateralFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidationFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"supplyCap\",\"type\":\"uint128\"}],\"internalType\":\"struct LendingConfiguration.AssetConfig[]\",\"name\":\"assetConfigs\",\"type\":\"tuple[]\"}],\"internalType\":\"struct LendingConfiguration.Configuration\",\"name\":\"config\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isLiquidatable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastAccrualTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"}],\"name\":\"quoteCollateral\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storeFrontPriceFactor\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"supply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"supplyBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"supplyCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"supplyIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"supplyKink\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"supplyPerSecondInterestRateBase\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"supplyPerSecondInterestRateSlopeHigh\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"supplyPerSecondInterestRateSlopeLow\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetReserves\",\"outputs\":[{\"internalType\":\"uint104\",\"name\":\"\",\"type\":\"uint104\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalBorrowBase\",\"outputs\":[{\"internalType\":\"uint104\",\"name\":\"\",\"type\":\"uint104\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupplyBase\",\"outputs\":[{\"internalType\":\"uint104\",\"name\":\"\",\"type\":\"uint104\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trackingIndexScale\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userBasic\",\"outputs\":[{\"internalType\":\"int104\",\"name\":\"principal\",\"type\":\"int104\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userCollateral\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawReserves\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"borrow(uint256)\":{\"details\":\"baseBorrowMin \\u662f\\u7528\\u6237\\u501f\\u6b3e\\u7684\\u6700\\u5c0f\\u91d1\\u989d\\uff0c\\u5982\\u679c\\u7528\\u6237\\u501f\\u6b3e\\u540e\\uff0c\\u4f59\\u989d\\u5c0f\\u4e8e baseBorrowMin\\uff08\\u7531\\u6b63\\u6570\\u53d8\\u4e3a\\u8d1f\\u6570\\u540c\\u7406\\uff09\\uff0c\\u5219\\u629b\\u51fa BorrowTooSmall \\u9519\\u8bef\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"initialize((address,address,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint104,uint104,(address,address,uint8,uint64,uint64,uint64,uint128)[]))\":{\"params\":{\"config\":\"\\u5e02\\u573a\\u914d\\u7f6e\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"supplyCollateral(address,uint256)\":{\"details\":\"\\u7531\\u4e8e\\u4e0d\\u6d89\\u53ca\\u503a\\u52a1\\u8ba1\\u7b97\\uff0c\\u5b58\\u5165\\u62b5\\u62bc\\u54c1\\u53cd\\u800c\\u4f1a\\u8ba9\\u8d26\\u6237\\u66f4\\u5b89\\u5168\\uff0c\\u6240\\u4ee5\\u4e0d\\u7528\\u66f4\\u65b0\\u5229\\u606f\\u56e0\\u5b50\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"withdraw(uint256)\":{\"details\":\"\\u5982\\u679c\\u7528\\u6237\\u4f59\\u989d\\u4e0d\\u8db3\\uff0c\\u4f1a\\u81ea\\u52a8\\u501f\\u6b3e\\uff0c\\u501f\\u6b3e\\u91d1\\u989d\\u4e3a amount\\uff0c\\u501f\\u6b3e\\u5229\\u7387\\u4e3a borrowRate\\uff0c\\u501f\\u6b3e\\u671f\\u9650\\u4e3a borrowPeriod\"}},\"title\":\"Lending\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"absorb(address)\":{\"notice\":\"\\u6e05\\u7b97\\u4e0d\\u826f\\u503a\\u52a1\\uff08\\u5355\\u4e2a\\uff09\"},\"absorbMultiple(address,address[])\":{\"notice\":\"\\u6279\\u91cf\\u6e05\\u7b97\\u4e0d\\u826f\\u503a\\u52a1\"},\"accrueInterest()\":{\"notice\":\"\\u8ba1\\u63d0\\u5229\\u606f\"},\"borrow(uint256)\":{\"notice\":\"\\u501f\\u6b3e\"},\"buyCollateral(address,uint256,uint256,address)\":{\"notice\":\"\\u8d2d\\u4e70\\u6e05\\u7b97\\u540e\\u7684\\u62b5\\u62bc\\u54c1\"},\"initialize((address,address,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint104,uint104,(address,address,uint8,uint64,uint64,uint64,uint128)[]))\":{\"notice\":\"\\u521d\\u59cb\\u5316\\u51fd\\u6570\"},\"quoteCollateral(address,uint256)\":{\"notice\":\"\\u8ba1\\u7b97\\u652f\\u4ed8\\u6307\\u5b9abaseAmount\\u53ef\\u8d2d\\u4e70\\u7684\\u62b5\\u62bc\\u54c1\\u6570\\u91cf\"},\"supply(uint256)\":{\"notice\":\"\\u5b58\\u5165\\u57fa\\u7840\\u8d44\\u4ea7\"},\"supplyCollateral(address,uint256)\":{\"notice\":\"\\u5b58\\u5165\\u62b5\\u62bc\\u54c1\"},\"withdraw(uint256)\":{\"notice\":\"\\u53d6\\u51fa\\u57fa\\u7840\\u8d44\\u4ea7\\uff08\\u5982\\u679c\\u4f59\\u989d\\u4e0d\\u8db3\\u4f1a\\u81ea\\u52a8\\u501f\\u6b3e\\uff09\"},\"withdrawCollateral(address,uint256)\":{\"notice\":\"\\u53d6\\u51fa\\u62b5\\u62bc\\u54c1\"},\"withdrawReserves(address,uint256)\":{\"notice\":\"\\u63d0\\u53d6\\u534f\\u8bae\\u50a8\\u5907\\u91d1\\uff08\\u4ec5 owner\\uff09\"}},\"notice\":\"\\u501f\\u8d37\\u6c60\\u6838\\u5fc3\\u5408\\u7ea6\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ytLending/Lending.sol\":\"Lending\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"contracts/interfaces/ILending.sol\":{\"keccak256\":\"0xd355b033318695723c227bfe24e298518046a0225594d14e90aec56311ff0873\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://32a34bad59749eceac7b2d7fe45e1f2e3b03d36ad518e977ea8f39bb63cab950\",\"dweb:/ipfs/QmdUvXnU75hTPXGoGWb1XpA64CNHoQ2Xso6EH1TKkDgLZs\"]},\"contracts/interfaces/IPriceFeed.sol\":{\"keccak256\":\"0x70d3c43bb10de1881f27e2ae4cfdc7d9fe88b49bff734a570c01c8f40a75ede8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce0ae7615d33b4d3af325a392b862dcc8a5136b89b674c9bb9c1f644390d67b4\",\"dweb:/ipfs/QmWAbyrMQkF4e8YMRA8JUnBbHcgwPLXjBJjTdfXQ2ekJPm\"]},\"contracts/ytLending/Lending.sol\":{\"keccak256\":\"0xf85860a529b9e728f3e6ae3edef24916c64205f025588a05855403b4ebbf9b57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31d6b91047b5e4528ac6839c895f0695ecc495aefe07905d6f70c6681afdc52e\",\"dweb:/ipfs/QmZYHT2KuumuHV3uSviHgjLtdpM6SD7Apxd7MPZoUSZrUJ\"]},\"contracts/ytLending/LendingConfiguration.sol\":{\"keccak256\":\"0xb865cb13a3cdd84c409188043405fce03159fef567296b4ad795eebfbe3ba1ce\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05b6f564c096a2dc656c9b06a6683b723314d01ec194f4a3f288c7d2ecca54f3\",\"dweb:/ipfs/QmYbAD9EDyGBCjHid2hP7m1qmd19bXR7h2hyDA8F1AP2ow\"]},\"contracts/ytLending/LendingMath.sol\":{\"keccak256\":\"0xd3efd7fa25c05629276fef9f9b51e618671b4704557fd1bcf81489af55567865\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed23a2e6dacefcfc40e5f8fc6ce41c01dfe393b0159de5698dbe9a60fe8baf51\",\"dweb:/ipfs/QmQHcWYpnEBF8wLcFB99yJbnZxuHz9PS5FjxJUga5LQdBg\"]},\"contracts/ytLending/LendingStorage.sol\":{\"keccak256\":\"0xf484e95c1cded3561be679c2d631da2d75b1ecf4c8af24e52f0e8cfdd02c5f09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4fd7f2933b3a2680c6f4c59e0039aa34d03c1f1b1af000808a0cf4e6220facb4\",\"dweb:/ipfs/QmbTP3xvezfAuRfgPSD2vffdYjgaR3uXU1EWTN47mBbxy5\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x574a7451e42724f7de29e2855c392a8a5020acd695169466a18459467d719d63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bc189f63b639ee173dd7b6fecc39baf7113bf161776aea22b34c57fdd1872ec\",\"dweb:/ipfs/QmZAf2VtjDLRULqjJkde6LNsxAg12tUqpPqgUQQZbAjgtZ\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0xa6bf6b7efe0e6625a9dcd30c5ddf52c4c24fe8372f37c7de9dbf5034746768d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c353ee3705bbf6fadb84c0fb10ef1b736e8ca3ca1867814349d1487ed207beb\",\"dweb:/ipfs/QmcugaPssrzGGE8q4YZKm2ZhnD3kCijjcgdWWg76nWt3FY\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8150ceb4ac947e8a442b2a9c017e01e880b2be2dd958f1fa9bc405f4c5a86508\",\"dweb:/ipfs/QmbcBmFX66AY6Kbhnd5gx7zpkgqnUafo43XnmayAM7zVdB\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60a080604052346100c257306080525f5160206137ba5f395f51905f525460ff8160401c166100b3576002600160401b03196001600160401b03821601610060575b6040516136f390816100c7823960805181818161173401526118530152f35b6001600160401b0319166001600160401b039081175f5160206137ba5f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80610041565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8063042e02cf14611fad5780630902f1ac14611f935780631f5954bd14611f73578063278cc7a014611f4d5780632a48cf1214611f245780632b92a07d146117885780632d05670b14611efe5780632e1a7d4d14611d7d578063300e6beb14611d5457806332176c4914611d2e578063350c35e914611c205780633540302314611aa9578063374c49b414611a865780633f4ba83a14611a085780634f1ef286146117d857806352226ef01461178857806352d1902d146117225780635a94b8d1146116fc5780635c975abb146116ce578063715018a614611667578063744713611461163e57806374485e78146115a15780637609d7f6146115005780637914acc7146114d75780637ac88ed1146114b05780637eb7113114611465578063804de71f1461143c5780638456cb59146113cb57806384bdc9a8146113515780638da5cb5b1461131d5780639241a561146112fd57806393889f06146112d257806394920cca146112a957806398f1bc121461128c5780639ff567f814610758578063a0b4b3011461124a578063a5b4ff7914611221578063a6afed9514611209578063aa5af0fd146111ec578063aba7f15e146111c6578063ad3cb1cc14611168578063ba1b24471461111b578063ba1c5e8014611076578063c4e41b2214611043578063c55dae631461101c578063c5ebeaec14610e29578063c9390d8b14610790578063cf31a17e14610758578063d2a8607b146105da578063d7e72708146105bd578063dc4abafd14610582578063e37f8a7e14610543578063e478795d14610489578063e4e6e77914610334578063e7dad6bd1461030c578063f2fde38b146102e15763f8b2cb4f1461028c575f80fd5b346102dd5760203660031901126102dd576001600160a01b036102ad611fda565b165f5260086020526020670de0b6b3a76400006102d460405f2054600c0b600b5490612984565b05604051908152f35b5f80fd5b346102dd5760203660031901126102dd5761030a6102fd611fda565b610305612f8c565b6128ef565b005b346102dd575f3660031901126102dd576001546040516001600160a01b039091168152602090f35b346102dd5760803660031901126102dd5761034d611fda565b6044356064356001600160a01b03811681036102dd5761036b612b1a565b610373612b52565b6001600160a01b0383165f818152600e6020526040902054909390156104555761039b612451565b5f8112159081610473575b5061046457826103b5916125b0565b90602435821061045557835f52600e60205260405f20548211610455575f546104119183916103f2908690309033906001600160a01b0316612ef6565b855f52600e60205260405f20610409838254612411565b905585612eb4565b60405191825260208201527ff891b2a411b0e66a5f0a6ff1368670fefa287a13f541eb633a386a1a9cc7046b60403392a360015f51602061367e5f395f51905f5255005b631e9acf1760e31b5f5260045ffd5b631d99ddbf60e01b5f5260045ffd5b90506001600160681b03600554161115856103a6565b346102dd5760403660031901126102dd576104a2611fda565b602435906104ae612f8c565b6104b6612b1a565b6104be612451565b5f8112908115610539575b5061052a57602081610506847fec4431f2ba1a9382f6b0c4352b888cba6f7db91667d9f776abe5ad8ddc5401b69460018060a01b035f5416612eb4565b6040519384526001600160a01b031692a260015f51602061367e5f395f51905f5255005b63128bd24d60e31b5f5260045ffd5b90508211836104c9565b346102dd575f3660031901126102dd576020670de0b6b3a76400006105796001600160681b03600a5460681c16600c54906120e1565b04604051908152f35b346102dd5760203660031901126102dd576001600160a01b036105a3611fda565b165f526008602052602060405f2054600c0b604051908152f35b346102dd575f3660031901126102dd576020600d54604051908152f35b346102dd5760403660031901126102dd576105f3611fda565b602435906105ff612b1a565b610607612b52565b60018060a01b031690815f52600660205260405f206040519061062982612035565b60c0600260018060a01b03835416928385526001600160401b03600182015460018060a01b038116602088015260ff8160a01c16604088015260a81c1660608601520154926001600160401b03841660808201526001600160401b038460401c1660a0820152019160801c82521561074a57335f52600960205260405f20835f526020526001600160801b036106c38360405f2054612120565b9151161061073b576106d781303385612ef6565b335f52600960205260405f20825f5260205260405f206106f8828254612120565b905560405190815233907ffa56f7b24f17183d81894d3ac2ee654e3c26388d17a28dbd9549b8114304e1f460203392a460015f51602061367e5f395f51905f5255005b637ac7b99d60e11b5f5260045ffd5b6282b42960e81b5f5260045ffd5b346102dd5760203660031901126102dd576001600160a01b03610779611fda565b165f52600e602052602060405f2054604051908152f35b346102dd5760203660031901126102dd576004356001600160401b0381116102dd5780600401906101e060031982360301126102dd575f51602061369e5f395f51905f5254916001600160401b0360ff8460401c1615931680159081610e21575b6001149081610e17575b159081610e0e575b50610dff578260016001600160401b03195f51602061369e5f395f51905f525416175f51602061369e5f395f51905f5255610dcf575b90610842613594565b61084a613594565b610852613594565b61085b336128ef565b610863613594565b61086b613594565b610873613594565b60015f51602061367e5f395f51905f52556001600160a01b036108958361259c565b166bffffffffffffffffffffffff60a01b5f5416175f5560018060a01b036108bf6024830161259c565b600154911667ffffffffffffffff60a01b6108dc6044850161287e565b60a01b169163ffffffff60e01b1617176001556301e133806001600160401b036109086064840161287e565b1604600254906301e133806001600160401b036109276084860161287e565b160467ffffffffffffffff60401b6301e133806001600160401b0361094e60a4880161287e565b1604926001600160c01b031961096660c4880161287e565b60c01b16946001600160401b0360018060c01b039216906001600160401b0360c01b1617169160401b1617906001600160401b0360801b9060801b1617176002556301e133806001600160401b036109c060e4840161287e565b1604600354906301e133806001600160401b036109e0610104860161287e565b160467ffffffffffffffff60401b6301e133806001600160401b03610a08610124880161287e565b1604926001600160c01b0319610a21610144880161287e565b60c01b16946001600160401b0360018060c01b039216906001600160401b0360c01b1617169160401b1617906001600160401b0360801b9060801b1617176003556001600160401b03610a77610164830161287e565b166004549074ffffffffffffffffffffffffff0000000000000000610a9f6101848501612892565b60401b16916affffffffffffffffffffff60a81b1617176004556001600160681b03610ace6101a48301612892565b166001600160681b03196005541617600555670de0b6b3a7640000600b55670de0b6b3a7640000600c5542600d556101c45f9101905b610b0e82846128a6565b9050811015610d7657610b2182846128a6565b821015610d625760e08202019060e0823603126102dd57604051610b4481612035565b610b4d83612006565b8152610b5b60208401612006565b906020810191825260408401359360ff851685036102dd5760408201948552610b86606082016128db565b9260608301938452610b9a608083016128db565b9360808401948552610bae60a084016128db565b9360c060a08201948686520135946001600160801b03861686036102dd576001600160401b03670de0b6b3a76400009160c08401978852161015610d5357670de0b6b3a76400006001600160401b038351161015610d4457670de0b6b3a76400006001600160401b038751161015610d355780516001600160a01b039081165f9081526006602052604090819020925183546001600160a01b031916908316908117845594516001840180549b5195516001600160e81b0319909c16919093161760a09490941b60ff60a01b169390931760a89990991b67ffffffffffffffff60a81b16989098179097559351915192519290931b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6fffffffffffffffffffffffffffffffff1916176002939093019290925560075491600160401b831015610d2157610d0283600180950160075561208c565b819291549060031b91821b91858060a01b03901b191617905501610b04565b634e487b7160e01b5f52604160045260245ffd5b63c1a8d9bd60e01b5f5260045ffd5b6379905e1360e11b5f5260045ffd5b631db60e2960e01b5f5260045ffd5b634e487b7160e01b5f52603260045260245ffd5b83610d7d57005b60ff60401b195f51602061369e5f395f51905f5254165f51602061369e5f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b600160401b60ff60401b195f51602061369e5f395f51905f525416175f51602061369e5f395f51905f5255610839565b63f92ee8a960e01b5f5260045ffd5b90501584610803565b303b1591506107fb565b8491506107f1565b346102dd5760203660031901126102dd57600435610e45612b1a565b610e4d612b52565b610e55612854565b335f52600860205260405f2060405190610e6e8261201a565b54600c0b908190525f811261100457610e9d82670de0b6b3a7640000610e97600b545b85612984565b0561241e565b5f81128080610fe5575b610fd657610ed291610ec891610fca57610ec3600b5491612960565b6129a6565b600c0b8092612bc7565b6001600160681b03610ee9600a549382851661251c565b1690600160681b600160d01b0390610f19906001600160681b03198516841760681c6001600160681b031661253c565b60681b169165ffffffffffff60d01b161717600a55335f52600860205260405f20906001600160681b0319825416906001600160681b0316179055610f5d33612c41565b15610fbb575f54610f7a90829033906001600160a01b0316612eb4565b60405190815233907f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb60203392a360015f51602061367e5f395f51905f5255005b633a23d82560e01b5f5260045ffd5b610ec3600c5491612960565b637139da2360e11b5f5260045ffd5b50610fef826120a4565b6001600160681b0360045460401c1611610ea7565b610e9d82670de0b6b3a7640000610e97600c54610e91565b346102dd575f3660031901126102dd575f546040516001600160a01b039091168152602090f35b346102dd575f3660031901126102dd576020670de0b6b3a76400006105796001600160681b03600a5416600b54906120e1565b346102dd575f3660031901126102dd57602061110a6111056110d4600a54670de0b6b3a76400006110cd816110b6600b546001600160681b0386166120e1565b04926001600160681b03600c549160681c166120e1565b049061346a565b60025460c01c90600354906001600160401b038260801c16926001600160401b0380808560401c16941692166134c8565b6127f4565b6001600160401b0360405191168152f35b346102dd5760203660031901126102dd57611155611137611fda565b61113f612b1a565b611147612b52565b61114f612854565b33612fbf565b60015f51602061367e5f395f51905f5255005b346102dd575f3660031901126102dd5760408051906111878183612050565b600582526020820191640352e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b346102dd575f3660031901126102dd5760206001600160401b0360045416604051908152f35b346102dd575f3660031901126102dd576020600c54604051908152f35b346102dd575f3660031901126102dd5761030a612854565b346102dd575f3660031901126102dd5760206001600160401b0360015460a01c16604051908152f35b346102dd5760203660031901126102dd576004356007548110156102dd5761127360209161208c565b905460405160039290921b1c6001600160a01b03168152f35b346102dd575f3660031901126102dd576020600b54604051908152f35b346102dd575f3660031901126102dd5760206001600160401b0360025460801c16604051908152f35b346102dd5760203660031901126102dd5760206112f56112f0611fda565b612818565b604051908152f35b346102dd575f3660031901126102dd57602060025460c01c604051908152f35b346102dd575f3660031901126102dd575f51602061361e5f395f51905f52546040516001600160a01b039091168152602090f35b346102dd575f3660031901126102dd57602061110a611105611391600a54670de0b6b3a76400006110cd816110b6600b546001600160681b0386166120e1565b6001600160401b0360015460a01c1690600254906001600160401b038260801c16926001600160401b0380808560401c16941692166134c8565b346102dd575f3660031901126102dd576113e3612f8c565b6113eb612b52565b600160ff195f51602061365e5f395f51905f525416175f51602061365e5f395f51905f52557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346102dd575f3660031901126102dd5760206001600160401b0360025460401c16604051908152f35b346102dd575f3660031901126102dd5760206001600160401b036114a7600a54670de0b6b3a76400006110cd816110b6600b546001600160681b0386166120e1565b16604051908152f35b346102dd5760403660031901126102dd5760206112f56114ce611fda565b602435906125b0565b346102dd575f3660031901126102dd5760206001600160401b0360035460801c16604051908152f35b346102dd5760203660031901126102dd576001600160a01b03611521611fda565b165f52600660205260e060405f2060018060a01b03815416906001600160401b03600260018301549201549160405193845260018060a01b038116602085015260ff8160a01c16604085015260a81c1660608301526001600160401b03811660808301526001600160401b038160401c1660a083015260801c60c0820152f35b346102dd5760403660031901126102dd576115ba611fda565b6024356001600160401b0381116102dd57366023820112156102dd578060040135906001600160401b0382116102dd573660248360051b830101116102dd57611601612b1a565b611609612b52565b611611612854565b5f5b828110156111555760019061163861163260248360051b86010161259c565b86612fbf565b01611613565b346102dd575f3660031901126102dd5760206001600160681b03600a5460681c16604051908152f35b346102dd575f3660031901126102dd5761167f612f8c565b5f51602061361e5f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346102dd575f3660031901126102dd57602060ff5f51602061365e5f395f51905f5254166040519015158152f35b346102dd575f3660031901126102dd5760206001600160401b0360025416604051908152f35b346102dd575f3660031901126102dd577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036117795760206040515f51602061363e5f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b346102dd5760403660031901126102dd576117a1611fda565b6117a9611ff0565b6001600160a01b039182165f908152600960209081526040808320949093168252928352819020549051908152f35b60403660031901126102dd576117ec611fda565b602435906001600160401b0382116102dd57366023830112156102dd5781600401359061181882612071565b916118266040519384612050565b808352602083019336602483830101116102dd57815f926024602093018737840101526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163081149081156119e6575b506117795761188b612f8c565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa5f91816119b2575b506118cd5784634c9c8ce360e01b5f5260045260245ffd5b805f51602061363e5f395f51905f528692036119a05750823b1561198e575f51602061363e5f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2825115611975575f809161030a945190845af43d1561196d573d9161195183612071565b9261195f6040519485612050565b83523d5f602085013e6135bf565b6060916135bf565b5050503461197f57005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d6020116119de575b816119ce60209383612050565b810103126102dd575190866118b5565b3d91506119c1565b5f51602061363e5f395f51905f52546001600160a01b0316141590508461187e565b346102dd575f3660031901126102dd57611a20612f8c565b5f51602061365e5f395f51905f525460ff811615611a775760ff19165f51602061365e5f395f51905f52557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b5f5260045ffd5b346102dd5760203660031901126102dd5760206112f5611aa4611fda565b61255c565b346102dd5760203660031901126102dd57600435611ac5612b1a565b611acd612b52565b611ad5612854565b5f54611aef908290309033906001600160a01b0316612ef6565b335f52600860205260405f2060405190611b088261201a565b54600c0b908190525f8112611c0257611b5a611b50611b3d84670de0b6b3a7640000611b37600b545b87612984565b05612436565b5f8112610fca57610ec3600b5491612960565b600c0b8092612f3a565b6001600160681b03611b89600a5493611b7c8360681b91848760681c1661251c565b60681b169282851661253c565b169165ffffffffffff60d01b161717600a55335f52600860205260405f20906001600160681b0319825416906001600160681b031617905560405190815233907fd1cf3d156d5f8f0d50f6c122ed609cec09d35c9b9fb3fff6ea0959134dae424e60203392a360015f51602061367e5f395f51905f5255005b611b5a611b50611b3d84670de0b6b3a7640000611b37600c54611b31565b346102dd5760403660031901126102dd57611c39611fda565b60243590611c45612b1a565b611c4d612b52565b611c55612854565b335f52600960205260405f2060018060a01b0382165f526020528160405f20541061045557335f52600960205260405f2060018060a01b0382165f5260205260405f20611ca3838254612411565b9055335f5260086020525f6040812054600c0b12611d12575b6001600160a01b031690611cd1813384612eb4565b60405190815233907fd6d480d5b3068db003533b170d67561494d72e3bf9fa40a266471351ebba9e1660203392a460015f51602061367e5f395f51905f5255005b611d1b33612c41565b611cbc57633a23d82560e01b5f5260045ffd5b346102dd575f3660031901126102dd5760206001600160681b0360055416604051908152f35b346102dd575f3660031901126102dd5760206001600160681b0360045460401c16604051908152f35b346102dd5760203660031901126102dd57600435611d99612b1a565b611da1612b52565b611da9612854565b335f52600860205260405f2060405190611dc28261201a565b54600c0b908190525f8112611ee657611dea82670de0b6b3a7640000610e97600b5485612984565b905f82129081611ed857611e07610ec8600b545b610ec386612960565b6001600160681b03611e1e600a549382851661251c565b1690600160681b600160d01b0390611e4e906001600160681b03198516841760681c6001600160681b031661253c565b60681b169165ffffffffffff60d01b161717600a55335f52600860205260405f20906001600160681b0319825416906001600160681b0316179055611ea7575b505f54610f7a90829033906001600160a01b0316612eb4565b611eb0906120a4565b6001600160681b0360045460401c1611610fd657611ecd33612c41565b15610fbb5781611e8e565b611e07610ec8600c54611dfe565b611dea82670de0b6b3a7640000610e97600c54610e91565b346102dd575f3660031901126102dd5760206001600160401b0360035416604051908152f35b346102dd575f3660031901126102dd5760206001600160401b0360035460401c16604051908152f35b346102dd575f3660031901126102dd5760206001600160681b03600a5416604051908152f35b346102dd575f3660031901126102dd57602060035460c01c604051908152f35b346102dd575f3660031901126102dd5760206112f5612451565b346102dd5760203660031901126102dd576020611fd0611fcb611fda565b61212d565b6040519015158152f35b600435906001600160a01b03821682036102dd57565b602435906001600160a01b03821682036102dd57565b35906001600160a01b03821682036102dd57565b602081019081106001600160401b03821117610d2157604052565b60e081019081106001600160401b03821117610d2157604052565b90601f801991011681019081106001600160401b03821117610d2157604052565b6001600160401b038111610d2157601f01601f191660200190565b600754811015610d625760075f5260205f2001905f90565b600160ff1b81146120b4575f0390565b634e487b7160e01b5f52601160045260245ffd5b908160209103126102dd575160ff811681036102dd5790565b818102929181159184041417156120b457565b604d81116120b457600a0a90565b811561210c570490565b634e487b7160e01b5f52601260045260245ffd5b919082018092116120b457565b6001600160a01b03165f81815260086020526040812054600c0b9081121561240b57612170670de0b6b3a764000061216a600493600c5490612984565b056120a4565b600154604051634c6afee560e11b81529260209184919082906001600160a01b03165afa801561238f575f906123d8575b5f5460405163313ce56760e01b81529350602090849060049082906001600160a01b03165afa91821561238f576121f6935f9361239a575b506121e96121f09260ff926120e1565b92166120f4565b90612102565b5f915f600754905b81811061220c575050501190565b6122158161208c565b90545f85815260096020908152604080832060039590951b9390931c6001600160a01b031680835293905220549081612253575b50506001016121fe565b5f9691929652600660205260405f209160046040519361227285612035565b60018060a01b0381541685526020600182015491600260018060a01b0384169182848a01526001600160401b0360408a019560ff8160a01c16875260a81c1660608a015201549660c060808201986001600160401b0381168a526001600160401b038160401c1660a084015260801c91015260405193848092634c6afee560e11b82525afa91821561238f575f92612355575b506001946001600160401b0361233d61234d96956121f0612337670de0b6b3a76400009760ff612346985116936120e1565b916129c0565b915116906120e1565b0490612120565b94905f612249565b915092916020823d8211612387575b8161237160209383612050565b810103126102dd57905191929091906001612305565b3d9150612364565b6040513d5f823e3d90fd5b60ff9193506121f0926123c76121e99260203d6020116123d1575b6123bf8183612050565b8101906120c8565b94925092506121d9565b503d6123b5565b506020823d602011612403575b816123f260209383612050565b810103126102dd57600491516121a1565b3d91506123e5565b50505f90565b919082039182116120b457565b81810392915f1380158285131691841216176120b457565b9190915f83820193841291129080158216911516176120b457565b6024612467612462600d5442612411565b6129d1565b5f546040516370a0823160e01b8152306004820152929360209184919082906001600160a01b03165afa91821561238f575f926124e6575b506124e392670de0b6b3a76400006124d76124de936001600160681b03836124cc600a54968388166120e1565b049460681c166120e1565b049261241e565b612436565b90565b9091506020813d602011612514575b8161250260209383612050565b810103126102dd5751906124e361249f565b3d91506124f5565b906001600160681b03809116911603906001600160681b0382116120b457565b906001600160681b03809116911601906001600160681b0382116120b457565b6001600160a01b03165f90815260086020526040812054600c0b9081121561259757670de0b6b3a764000061216a6124e392600c5490612984565b505f90565b356001600160a01b03811681036102dd5790565b60018060a01b03165f526006602052600460405f2091604051926125d384612035565b60018060a01b0381541684526020600182015491600260018060a01b0384169182848901526001600160401b03604089019560ff8160a01c16875260a81c1660608901520154956001600160401b038716608082015260c060a08201976001600160401b038160401c16895260801c91015260405194858092634c6afee560e11b82525afa92831561238f575f936127bf575b50600154604051634c6afee560e11b8152939490602090859060049082906001600160a01b03165afa93841561238f575f9461278b575b506001600160401b0360035460c01c915116670de0b6b3a76400000390670de0b6b3a764000082116120b457670de0b6b3a7640000916126dc916120e1565b04670de0b6b3a764000003670de0b6b3a764000081116120b45761270b670de0b6b3a7640000916004966120e1565b0492602060018060a01b035f54166040519687809263313ce56760e01b82525afa90811561238f576127676121f09461276160ff61275981612761976124e39c5f9161276c575b50166120f4565b9651166120f4565b926120e1565b6120e1565b612785915060203d6020116123d1576123bf8183612050565b5f612752565b9093506020813d6020116127b7575b816127a760209383612050565b810103126102dd5751925f61269d565b3d915061279a565b92506020833d6020116127ec575b816127da60209383612050565b810103126102dd576004925192612666565b3d91506127cd565b6001600160401b036301e13380911602906001600160401b0382169182036120b457565b6001600160a01b03165f90815260086020526040812054600c0b9081131561259757612850670de0b6b3a764000091600b5490612984565b0590565b612860600d5442612411565b801561287b5761286f906129d1565b600c55600b5542600d55565b50565b356001600160401b03811681036102dd5790565b356001600160681b03811681036102dd5790565b903590601e19813603018212156102dd57018035906001600160401b0382116102dd576020019160e08202360383136102dd57565b35906001600160401b03821682036102dd57565b6001600160a01b0316801561294d575f51602061361e5f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b90670de0b6b3a7640000820291808305670de0b6b3a764000014901517156120b457565b81810292915f8212600160ff1b8214166120b45781840514901517156120b457565b811561210c57600160ff1b81145f198314166120b4570590565b60ff16604d81116120b457600a0a90565b90600b54600c5492806129e357509190565b600a54919391826129fd866001600160681b0384166120e1565b670de0b6b3a764000090049160681c6001600160681b031690612a1f916120e1565b670de0b6b3a76400009004612a339161346a565b938160015460a01c6001600160401b0316600254966001600160401b0316908760801c6001600160401b03168860401c6001600160401b03166001600160401b038a16612a8093856134c8565b966003548060801c6001600160401b0316918160401c6001600160401b0316916001600160401b03169060c01c612ab6946134c8565b956001600160401b0316612aca90836120e1565b90612ad4916120e1565b670de0b6b3a76400009004612ae891612120565b936001600160401b0316612afc90836120e1565b90612b06916120e1565b670de0b6b3a764000090046124e391612120565b60025f51602061367e5f395f51905f525414612b435760025f51602061367e5f395f51905f5255565b633ee5aeb560e01b5f5260045ffd5b60ff5f51602061365e5f395f51905f525416612b6a57565b63d93c066560e01b5f5260045ffd5b600c0b6c7fffffffffffffffffffffffff1981146120b4575f0390565b600c91820b910b03906c7fffffffffffffffffffffffff1982126c7fffffffffffffffffffffffff8313176120b457565b919082600c0b81600c0b818113612c36575f13612bf75750612be99192612b96565b6001600160681b0316905f90565b5f12612c1657612c079192612b96565b6001600160681b0316905f9190565b612c1f90612b79565b6001600160681b0316916001600160681b03169190565b50505090505f905f90565b6001600160a01b03165f81815260086020526040812054600c0b90811215612ead57612c7e670de0b6b3a764000061216a600493600c5490612984565b600154604051634c6afee560e11b81529260209184919082906001600160a01b03165afa801561238f575f90612e7a575b5f5460405163313ce56760e01b81529350602090849060049082906001600160a01b03165afa91821561238f57612cf6935f9361239a57506121e96121f09260ff926120e1565b905f905f600754905b818110612d0e57505050101590565b612d178161208c565b90545f85815260096020908152604080832060039590951b9390931c6001600160a01b031680835293905220549081612d55575b5050600101612cff565b5f9591929552600660205260405f2091600460405193612d7485612035565b60018060a01b038154168552602060018201549560018060a01b03871690818382015260c06002604083019560ff8b60a01c1687526001600160401b03606085019b60a81c168b5201546001600160401b03811660808401526001600160401b038160401c1660a084015260801c91015260405193848092634c6afee560e11b82525afa91821561238f575f92612e40575b506001946001600160401b0361233d612e3896956121f0612337670de0b6b3a76400009760ff612346985116936120e1565b93905f612d4b565b915092916020823d8211612e72575b81612e5c60209383612050565b810103126102dd57905191929091906001612e06565b3d9150612e4f565b506020823d602011612ea5575b81612e9460209383612050565b810103126102dd5760049151612caf565b3d9150612e87565b5050600190565b60405163a9059cbb60e01b60208201526001600160a01b039092166024830152604480830193909352918152612ef491612eef606483612050565b61353c565b565b6040516323b872dd60e01b60208201526001600160a01b039283166024820152929091166044830152606480830193909352918152612ef491612eef608483612050565b91909180600c0b83600c0b818112612c36575f12612f5d5750612be99192612b96565b5f13612f6d57612c079192612b96565b612f7690612b79565b6001600160681b0316916001600160681b031690565b5f51602061361e5f395f51905f52546001600160a01b03163303612fac57565b63118cdaa760e01b5f523360045260245ffd5b9190612fca8161212d565b1561345b576001600160a01b03165f81815260086020526040908190209051929190612ff58461201a565b54600c0b809352670de0b6b3a7640000613011600c5485612984565b05915f83121561345b57600154604051634c6afee560e11b81529390602090859060049082906001600160a01b03165afa93841561238f575f94613427575b505f935f5b60075481101561325a576130688161208c565b90545f87815260096020908152604080832060039590951b9390931c6001600160a01b03168083529390522054806130a5575b5050600101613055565b815f52600660205260405f206004604051916130c083612035565b60018060a01b0381541683526020600182015491600260018060a01b0384169182848801526001600160401b03604088019560ff8160a01c16875260a81c1660608801520154946001600160401b038616608082015260c060a08201966001600160401b038160401c16885260801c91015260405193848092634c6afee560e11b82525afa91821561238f575f92613216575b506001600160401b039a670de0b6b3a76400006123468c9561319360019a99989661318e61318760ff61319e9951166129c0565b91896120e1565b612102565b9e8f915116906120e1565b99825f52600960205260405f20868060a01b0385165f526020525f6040812055835f52600e60205260405f206131d5838254612120565b905560405191825260208201527f9850ab1af75177e4a9201c65a2cf7976d5d28e40ef63494b44366f86b2f9412e60408d878060a01b031692a4905f61309b565b9594939150916020863d8211613252575b8161323460209383612050565b810103126102dd579451939492939092916001600160401b03613153565b3d9150613227565b509093919592946004602060018060a01b035f54166040519283809263313ce56760e01b82525afa801561238f578361318e6132a46132ab936132fc955f91613408575b506129c0565b80976120e1565b916132b68388612436565b5f8112613401575b6132ce90610ec3600b5491612960565b600c0b90885f52600860205260405f206001600160681b0319815416836001600160681b0316179055612f3a565b906001600160681b03613314600a549382851661253c565b1690600160681b600160d01b0390613344906001600160681b03198516841760681c6001600160681b031661251c565b60681b169165ffffffffffff60d01b161717600a555f94613364816120a4565b82126133b6575b50509161339f60409261318e7f1547a878dc89ad3c367b6338b4be6a65a5dd74fb77ae044da1e8747ef1f4f62f95876120e1565b825194855260208501526001600160a01b031692a3565b7f1547a878dc89ad3c367b6338b4be6a65a5dd74fb77ae044da1e8747ef1f4f62f949295509261318e6133f661339f936133f16040976120a4565b612411565b96939550509261336b565b505f6132be565b613421915060203d6020116123d1576123bf8183612050565b5f61329e565b9093506020813d602011613453575b8161344360209383612050565b810103126102dd5751925f613050565b3d9150613436565b636ef5bcdd60e11b5f5260045ffd5b90811561240b57670de0b6b3a7640000810290808204670de0b6b3a764000014901517156120b4576001600160401b03916134a491612102565b1690565b906001600160401b03809116911601906001600160401b0382116120b457565b9392906001600160401b0316808511613506575050670de0b6b3a76400006134fe6124e3946001600160401b03809416906120e1565b0416906134a8565b670de0b6b3a764000091936001600160401b03613534819561352e6134fe956124e39a612411565b936134a8565b9516906120e1565b905f602091828151910182855af11561238f575f513d61358b57506001600160a01b0381163b155b61356b5750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b60011415613564565b60ff5f51602061369e5f395f51905f525460401c16156135b057565b631afcd79f60e31b5f5260045ffd5b906135e357508051156135d457602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580613614575b6135f4575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156135ec56fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbccd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212201189984636754d5be8b3be7a659b3fbb6344169e20e41080d78d35984713b6da64736f6c634300081e0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","sourceMap":"765:27073:12:-:0;;;;;;;1171:4:26;1163:13;;-1:-1:-1;;;;;;;;;;;765:27073:12;;;;;;7894:76:25;;-1:-1:-1;;;;;;;;;;;765:27073:12;;7983:34:25;7979:146;;-1:-1:-1;765:27073:12;;;;;;;;1163:13:26;765:27073:12;;;;;;;;;;;7979:146:25;-1:-1:-1;;;;;;765:27073:12;-1:-1:-1;;;;;765:27073:12;;;-1:-1:-1;;;;;;;;;;;765:27073:12;;;8085:29:25;;765:27073:12;;8085:29:25;7979:146;;;;7894:76;7936:23;;;-1:-1:-1;7936:23:25;;-1:-1:-1;7936:23:25;765:27073:12;;;","linkReferences":{}},"deployedBytecode":{"object":"60806040526004361015610011575f80fd5b5f3560e01c8063042e02cf14611fad5780630902f1ac14611f935780631f5954bd14611f73578063278cc7a014611f4d5780632a48cf1214611f245780632b92a07d146117885780632d05670b14611efe5780632e1a7d4d14611d7d578063300e6beb14611d5457806332176c4914611d2e578063350c35e914611c205780633540302314611aa9578063374c49b414611a865780633f4ba83a14611a085780634f1ef286146117d857806352226ef01461178857806352d1902d146117225780635a94b8d1146116fc5780635c975abb146116ce578063715018a614611667578063744713611461163e57806374485e78146115a15780637609d7f6146115005780637914acc7146114d75780637ac88ed1146114b05780637eb7113114611465578063804de71f1461143c5780638456cb59146113cb57806384bdc9a8146113515780638da5cb5b1461131d5780639241a561146112fd57806393889f06146112d257806394920cca146112a957806398f1bc121461128c5780639ff567f814610758578063a0b4b3011461124a578063a5b4ff7914611221578063a6afed9514611209578063aa5af0fd146111ec578063aba7f15e146111c6578063ad3cb1cc14611168578063ba1b24471461111b578063ba1c5e8014611076578063c4e41b2214611043578063c55dae631461101c578063c5ebeaec14610e29578063c9390d8b14610790578063cf31a17e14610758578063d2a8607b146105da578063d7e72708146105bd578063dc4abafd14610582578063e37f8a7e14610543578063e478795d14610489578063e4e6e77914610334578063e7dad6bd1461030c578063f2fde38b146102e15763f8b2cb4f1461028c575f80fd5b346102dd5760203660031901126102dd576001600160a01b036102ad611fda565b165f5260086020526020670de0b6b3a76400006102d460405f2054600c0b600b5490612984565b05604051908152f35b5f80fd5b346102dd5760203660031901126102dd5761030a6102fd611fda565b610305612f8c565b6128ef565b005b346102dd575f3660031901126102dd576001546040516001600160a01b039091168152602090f35b346102dd5760803660031901126102dd5761034d611fda565b6044356064356001600160a01b03811681036102dd5761036b612b1a565b610373612b52565b6001600160a01b0383165f818152600e6020526040902054909390156104555761039b612451565b5f8112159081610473575b5061046457826103b5916125b0565b90602435821061045557835f52600e60205260405f20548211610455575f546104119183916103f2908690309033906001600160a01b0316612ef6565b855f52600e60205260405f20610409838254612411565b905585612eb4565b60405191825260208201527ff891b2a411b0e66a5f0a6ff1368670fefa287a13f541eb633a386a1a9cc7046b60403392a360015f51602061367e5f395f51905f5255005b631e9acf1760e31b5f5260045ffd5b631d99ddbf60e01b5f5260045ffd5b90506001600160681b03600554161115856103a6565b346102dd5760403660031901126102dd576104a2611fda565b602435906104ae612f8c565b6104b6612b1a565b6104be612451565b5f8112908115610539575b5061052a57602081610506847fec4431f2ba1a9382f6b0c4352b888cba6f7db91667d9f776abe5ad8ddc5401b69460018060a01b035f5416612eb4565b6040519384526001600160a01b031692a260015f51602061367e5f395f51905f5255005b63128bd24d60e31b5f5260045ffd5b90508211836104c9565b346102dd575f3660031901126102dd576020670de0b6b3a76400006105796001600160681b03600a5460681c16600c54906120e1565b04604051908152f35b346102dd5760203660031901126102dd576001600160a01b036105a3611fda565b165f526008602052602060405f2054600c0b604051908152f35b346102dd575f3660031901126102dd576020600d54604051908152f35b346102dd5760403660031901126102dd576105f3611fda565b602435906105ff612b1a565b610607612b52565b60018060a01b031690815f52600660205260405f206040519061062982612035565b60c0600260018060a01b03835416928385526001600160401b03600182015460018060a01b038116602088015260ff8160a01c16604088015260a81c1660608601520154926001600160401b03841660808201526001600160401b038460401c1660a0820152019160801c82521561074a57335f52600960205260405f20835f526020526001600160801b036106c38360405f2054612120565b9151161061073b576106d781303385612ef6565b335f52600960205260405f20825f5260205260405f206106f8828254612120565b905560405190815233907ffa56f7b24f17183d81894d3ac2ee654e3c26388d17a28dbd9549b8114304e1f460203392a460015f51602061367e5f395f51905f5255005b637ac7b99d60e11b5f5260045ffd5b6282b42960e81b5f5260045ffd5b346102dd5760203660031901126102dd576001600160a01b03610779611fda565b165f52600e602052602060405f2054604051908152f35b346102dd5760203660031901126102dd576004356001600160401b0381116102dd5780600401906101e060031982360301126102dd575f51602061369e5f395f51905f5254916001600160401b0360ff8460401c1615931680159081610e21575b6001149081610e17575b159081610e0e575b50610dff578260016001600160401b03195f51602061369e5f395f51905f525416175f51602061369e5f395f51905f5255610dcf575b90610842613594565b61084a613594565b610852613594565b61085b336128ef565b610863613594565b61086b613594565b610873613594565b60015f51602061367e5f395f51905f52556001600160a01b036108958361259c565b166bffffffffffffffffffffffff60a01b5f5416175f5560018060a01b036108bf6024830161259c565b600154911667ffffffffffffffff60a01b6108dc6044850161287e565b60a01b169163ffffffff60e01b1617176001556301e133806001600160401b036109086064840161287e565b1604600254906301e133806001600160401b036109276084860161287e565b160467ffffffffffffffff60401b6301e133806001600160401b0361094e60a4880161287e565b1604926001600160c01b031961096660c4880161287e565b60c01b16946001600160401b0360018060c01b039216906001600160401b0360c01b1617169160401b1617906001600160401b0360801b9060801b1617176002556301e133806001600160401b036109c060e4840161287e565b1604600354906301e133806001600160401b036109e0610104860161287e565b160467ffffffffffffffff60401b6301e133806001600160401b03610a08610124880161287e565b1604926001600160c01b0319610a21610144880161287e565b60c01b16946001600160401b0360018060c01b039216906001600160401b0360c01b1617169160401b1617906001600160401b0360801b9060801b1617176003556001600160401b03610a77610164830161287e565b166004549074ffffffffffffffffffffffffff0000000000000000610a9f6101848501612892565b60401b16916affffffffffffffffffffff60a81b1617176004556001600160681b03610ace6101a48301612892565b166001600160681b03196005541617600555670de0b6b3a7640000600b55670de0b6b3a7640000600c5542600d556101c45f9101905b610b0e82846128a6565b9050811015610d7657610b2182846128a6565b821015610d625760e08202019060e0823603126102dd57604051610b4481612035565b610b4d83612006565b8152610b5b60208401612006565b906020810191825260408401359360ff851685036102dd5760408201948552610b86606082016128db565b9260608301938452610b9a608083016128db565b9360808401948552610bae60a084016128db565b9360c060a08201948686520135946001600160801b03861686036102dd576001600160401b03670de0b6b3a76400009160c08401978852161015610d5357670de0b6b3a76400006001600160401b038351161015610d4457670de0b6b3a76400006001600160401b038751161015610d355780516001600160a01b039081165f9081526006602052604090819020925183546001600160a01b031916908316908117845594516001840180549b5195516001600160e81b0319909c16919093161760a09490941b60ff60a01b169390931760a89990991b67ffffffffffffffff60a81b16989098179097559351915192519290931b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6fffffffffffffffffffffffffffffffff1916176002939093019290925560075491600160401b831015610d2157610d0283600180950160075561208c565b819291549060031b91821b91858060a01b03901b191617905501610b04565b634e487b7160e01b5f52604160045260245ffd5b63c1a8d9bd60e01b5f5260045ffd5b6379905e1360e11b5f5260045ffd5b631db60e2960e01b5f5260045ffd5b634e487b7160e01b5f52603260045260245ffd5b83610d7d57005b60ff60401b195f51602061369e5f395f51905f5254165f51602061369e5f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b600160401b60ff60401b195f51602061369e5f395f51905f525416175f51602061369e5f395f51905f5255610839565b63f92ee8a960e01b5f5260045ffd5b90501584610803565b303b1591506107fb565b8491506107f1565b346102dd5760203660031901126102dd57600435610e45612b1a565b610e4d612b52565b610e55612854565b335f52600860205260405f2060405190610e6e8261201a565b54600c0b908190525f811261100457610e9d82670de0b6b3a7640000610e97600b545b85612984565b0561241e565b5f81128080610fe5575b610fd657610ed291610ec891610fca57610ec3600b5491612960565b6129a6565b600c0b8092612bc7565b6001600160681b03610ee9600a549382851661251c565b1690600160681b600160d01b0390610f19906001600160681b03198516841760681c6001600160681b031661253c565b60681b169165ffffffffffff60d01b161717600a55335f52600860205260405f20906001600160681b0319825416906001600160681b0316179055610f5d33612c41565b15610fbb575f54610f7a90829033906001600160a01b0316612eb4565b60405190815233907f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb60203392a360015f51602061367e5f395f51905f5255005b633a23d82560e01b5f5260045ffd5b610ec3600c5491612960565b637139da2360e11b5f5260045ffd5b50610fef826120a4565b6001600160681b0360045460401c1611610ea7565b610e9d82670de0b6b3a7640000610e97600c54610e91565b346102dd575f3660031901126102dd575f546040516001600160a01b039091168152602090f35b346102dd575f3660031901126102dd576020670de0b6b3a76400006105796001600160681b03600a5416600b54906120e1565b346102dd575f3660031901126102dd57602061110a6111056110d4600a54670de0b6b3a76400006110cd816110b6600b546001600160681b0386166120e1565b04926001600160681b03600c549160681c166120e1565b049061346a565b60025460c01c90600354906001600160401b038260801c16926001600160401b0380808560401c16941692166134c8565b6127f4565b6001600160401b0360405191168152f35b346102dd5760203660031901126102dd57611155611137611fda565b61113f612b1a565b611147612b52565b61114f612854565b33612fbf565b60015f51602061367e5f395f51905f5255005b346102dd575f3660031901126102dd5760408051906111878183612050565b600582526020820191640352e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b346102dd575f3660031901126102dd5760206001600160401b0360045416604051908152f35b346102dd575f3660031901126102dd576020600c54604051908152f35b346102dd575f3660031901126102dd5761030a612854565b346102dd575f3660031901126102dd5760206001600160401b0360015460a01c16604051908152f35b346102dd5760203660031901126102dd576004356007548110156102dd5761127360209161208c565b905460405160039290921b1c6001600160a01b03168152f35b346102dd575f3660031901126102dd576020600b54604051908152f35b346102dd575f3660031901126102dd5760206001600160401b0360025460801c16604051908152f35b346102dd5760203660031901126102dd5760206112f56112f0611fda565b612818565b604051908152f35b346102dd575f3660031901126102dd57602060025460c01c604051908152f35b346102dd575f3660031901126102dd575f51602061361e5f395f51905f52546040516001600160a01b039091168152602090f35b346102dd575f3660031901126102dd57602061110a611105611391600a54670de0b6b3a76400006110cd816110b6600b546001600160681b0386166120e1565b6001600160401b0360015460a01c1690600254906001600160401b038260801c16926001600160401b0380808560401c16941692166134c8565b346102dd575f3660031901126102dd576113e3612f8c565b6113eb612b52565b600160ff195f51602061365e5f395f51905f525416175f51602061365e5f395f51905f52557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346102dd575f3660031901126102dd5760206001600160401b0360025460401c16604051908152f35b346102dd575f3660031901126102dd5760206001600160401b036114a7600a54670de0b6b3a76400006110cd816110b6600b546001600160681b0386166120e1565b16604051908152f35b346102dd5760403660031901126102dd5760206112f56114ce611fda565b602435906125b0565b346102dd575f3660031901126102dd5760206001600160401b0360035460801c16604051908152f35b346102dd5760203660031901126102dd576001600160a01b03611521611fda565b165f52600660205260e060405f2060018060a01b03815416906001600160401b03600260018301549201549160405193845260018060a01b038116602085015260ff8160a01c16604085015260a81c1660608301526001600160401b03811660808301526001600160401b038160401c1660a083015260801c60c0820152f35b346102dd5760403660031901126102dd576115ba611fda565b6024356001600160401b0381116102dd57366023820112156102dd578060040135906001600160401b0382116102dd573660248360051b830101116102dd57611601612b1a565b611609612b52565b611611612854565b5f5b828110156111555760019061163861163260248360051b86010161259c565b86612fbf565b01611613565b346102dd575f3660031901126102dd5760206001600160681b03600a5460681c16604051908152f35b346102dd575f3660031901126102dd5761167f612f8c565b5f51602061361e5f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346102dd575f3660031901126102dd57602060ff5f51602061365e5f395f51905f5254166040519015158152f35b346102dd575f3660031901126102dd5760206001600160401b0360025416604051908152f35b346102dd575f3660031901126102dd577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036117795760206040515f51602061363e5f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b346102dd5760403660031901126102dd576117a1611fda565b6117a9611ff0565b6001600160a01b039182165f908152600960209081526040808320949093168252928352819020549051908152f35b60403660031901126102dd576117ec611fda565b602435906001600160401b0382116102dd57366023830112156102dd5781600401359061181882612071565b916118266040519384612050565b808352602083019336602483830101116102dd57815f926024602093018737840101526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163081149081156119e6575b506117795761188b612f8c565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa5f91816119b2575b506118cd5784634c9c8ce360e01b5f5260045260245ffd5b805f51602061363e5f395f51905f528692036119a05750823b1561198e575f51602061363e5f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2825115611975575f809161030a945190845af43d1561196d573d9161195183612071565b9261195f6040519485612050565b83523d5f602085013e6135bf565b6060916135bf565b5050503461197f57005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d6020116119de575b816119ce60209383612050565b810103126102dd575190866118b5565b3d91506119c1565b5f51602061363e5f395f51905f52546001600160a01b0316141590508461187e565b346102dd575f3660031901126102dd57611a20612f8c565b5f51602061365e5f395f51905f525460ff811615611a775760ff19165f51602061365e5f395f51905f52557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b5f5260045ffd5b346102dd5760203660031901126102dd5760206112f5611aa4611fda565b61255c565b346102dd5760203660031901126102dd57600435611ac5612b1a565b611acd612b52565b611ad5612854565b5f54611aef908290309033906001600160a01b0316612ef6565b335f52600860205260405f2060405190611b088261201a565b54600c0b908190525f8112611c0257611b5a611b50611b3d84670de0b6b3a7640000611b37600b545b87612984565b05612436565b5f8112610fca57610ec3600b5491612960565b600c0b8092612f3a565b6001600160681b03611b89600a5493611b7c8360681b91848760681c1661251c565b60681b169282851661253c565b169165ffffffffffff60d01b161717600a55335f52600860205260405f20906001600160681b0319825416906001600160681b031617905560405190815233907fd1cf3d156d5f8f0d50f6c122ed609cec09d35c9b9fb3fff6ea0959134dae424e60203392a360015f51602061367e5f395f51905f5255005b611b5a611b50611b3d84670de0b6b3a7640000611b37600c54611b31565b346102dd5760403660031901126102dd57611c39611fda565b60243590611c45612b1a565b611c4d612b52565b611c55612854565b335f52600960205260405f2060018060a01b0382165f526020528160405f20541061045557335f52600960205260405f2060018060a01b0382165f5260205260405f20611ca3838254612411565b9055335f5260086020525f6040812054600c0b12611d12575b6001600160a01b031690611cd1813384612eb4565b60405190815233907fd6d480d5b3068db003533b170d67561494d72e3bf9fa40a266471351ebba9e1660203392a460015f51602061367e5f395f51905f5255005b611d1b33612c41565b611cbc57633a23d82560e01b5f5260045ffd5b346102dd575f3660031901126102dd5760206001600160681b0360055416604051908152f35b346102dd575f3660031901126102dd5760206001600160681b0360045460401c16604051908152f35b346102dd5760203660031901126102dd57600435611d99612b1a565b611da1612b52565b611da9612854565b335f52600860205260405f2060405190611dc28261201a565b54600c0b908190525f8112611ee657611dea82670de0b6b3a7640000610e97600b5485612984565b905f82129081611ed857611e07610ec8600b545b610ec386612960565b6001600160681b03611e1e600a549382851661251c565b1690600160681b600160d01b0390611e4e906001600160681b03198516841760681c6001600160681b031661253c565b60681b169165ffffffffffff60d01b161717600a55335f52600860205260405f20906001600160681b0319825416906001600160681b0316179055611ea7575b505f54610f7a90829033906001600160a01b0316612eb4565b611eb0906120a4565b6001600160681b0360045460401c1611610fd657611ecd33612c41565b15610fbb5781611e8e565b611e07610ec8600c54611dfe565b611dea82670de0b6b3a7640000610e97600c54610e91565b346102dd575f3660031901126102dd5760206001600160401b0360035416604051908152f35b346102dd575f3660031901126102dd5760206001600160401b0360035460401c16604051908152f35b346102dd575f3660031901126102dd5760206001600160681b03600a5416604051908152f35b346102dd575f3660031901126102dd57602060035460c01c604051908152f35b346102dd575f3660031901126102dd5760206112f5612451565b346102dd5760203660031901126102dd576020611fd0611fcb611fda565b61212d565b6040519015158152f35b600435906001600160a01b03821682036102dd57565b602435906001600160a01b03821682036102dd57565b35906001600160a01b03821682036102dd57565b602081019081106001600160401b03821117610d2157604052565b60e081019081106001600160401b03821117610d2157604052565b90601f801991011681019081106001600160401b03821117610d2157604052565b6001600160401b038111610d2157601f01601f191660200190565b600754811015610d625760075f5260205f2001905f90565b600160ff1b81146120b4575f0390565b634e487b7160e01b5f52601160045260245ffd5b908160209103126102dd575160ff811681036102dd5790565b818102929181159184041417156120b457565b604d81116120b457600a0a90565b811561210c570490565b634e487b7160e01b5f52601260045260245ffd5b919082018092116120b457565b6001600160a01b03165f81815260086020526040812054600c0b9081121561240b57612170670de0b6b3a764000061216a600493600c5490612984565b056120a4565b600154604051634c6afee560e11b81529260209184919082906001600160a01b03165afa801561238f575f906123d8575b5f5460405163313ce56760e01b81529350602090849060049082906001600160a01b03165afa91821561238f576121f6935f9361239a575b506121e96121f09260ff926120e1565b92166120f4565b90612102565b5f915f600754905b81811061220c575050501190565b6122158161208c565b90545f85815260096020908152604080832060039590951b9390931c6001600160a01b031680835293905220549081612253575b50506001016121fe565b5f9691929652600660205260405f209160046040519361227285612035565b60018060a01b0381541685526020600182015491600260018060a01b0384169182848a01526001600160401b0360408a019560ff8160a01c16875260a81c1660608a015201549660c060808201986001600160401b0381168a526001600160401b038160401c1660a084015260801c91015260405193848092634c6afee560e11b82525afa91821561238f575f92612355575b506001946001600160401b0361233d61234d96956121f0612337670de0b6b3a76400009760ff612346985116936120e1565b916129c0565b915116906120e1565b0490612120565b94905f612249565b915092916020823d8211612387575b8161237160209383612050565b810103126102dd57905191929091906001612305565b3d9150612364565b6040513d5f823e3d90fd5b60ff9193506121f0926123c76121e99260203d6020116123d1575b6123bf8183612050565b8101906120c8565b94925092506121d9565b503d6123b5565b506020823d602011612403575b816123f260209383612050565b810103126102dd57600491516121a1565b3d91506123e5565b50505f90565b919082039182116120b457565b81810392915f1380158285131691841216176120b457565b9190915f83820193841291129080158216911516176120b457565b6024612467612462600d5442612411565b6129d1565b5f546040516370a0823160e01b8152306004820152929360209184919082906001600160a01b03165afa91821561238f575f926124e6575b506124e392670de0b6b3a76400006124d76124de936001600160681b03836124cc600a54968388166120e1565b049460681c166120e1565b049261241e565b612436565b90565b9091506020813d602011612514575b8161250260209383612050565b810103126102dd5751906124e361249f565b3d91506124f5565b906001600160681b03809116911603906001600160681b0382116120b457565b906001600160681b03809116911601906001600160681b0382116120b457565b6001600160a01b03165f90815260086020526040812054600c0b9081121561259757670de0b6b3a764000061216a6124e392600c5490612984565b505f90565b356001600160a01b03811681036102dd5790565b60018060a01b03165f526006602052600460405f2091604051926125d384612035565b60018060a01b0381541684526020600182015491600260018060a01b0384169182848901526001600160401b03604089019560ff8160a01c16875260a81c1660608901520154956001600160401b038716608082015260c060a08201976001600160401b038160401c16895260801c91015260405194858092634c6afee560e11b82525afa92831561238f575f936127bf575b50600154604051634c6afee560e11b8152939490602090859060049082906001600160a01b03165afa93841561238f575f9461278b575b506001600160401b0360035460c01c915116670de0b6b3a76400000390670de0b6b3a764000082116120b457670de0b6b3a7640000916126dc916120e1565b04670de0b6b3a764000003670de0b6b3a764000081116120b45761270b670de0b6b3a7640000916004966120e1565b0492602060018060a01b035f54166040519687809263313ce56760e01b82525afa90811561238f576127676121f09461276160ff61275981612761976124e39c5f9161276c575b50166120f4565b9651166120f4565b926120e1565b6120e1565b612785915060203d6020116123d1576123bf8183612050565b5f612752565b9093506020813d6020116127b7575b816127a760209383612050565b810103126102dd5751925f61269d565b3d915061279a565b92506020833d6020116127ec575b816127da60209383612050565b810103126102dd576004925192612666565b3d91506127cd565b6001600160401b036301e13380911602906001600160401b0382169182036120b457565b6001600160a01b03165f90815260086020526040812054600c0b9081131561259757612850670de0b6b3a764000091600b5490612984565b0590565b612860600d5442612411565b801561287b5761286f906129d1565b600c55600b5542600d55565b50565b356001600160401b03811681036102dd5790565b356001600160681b03811681036102dd5790565b903590601e19813603018212156102dd57018035906001600160401b0382116102dd576020019160e08202360383136102dd57565b35906001600160401b03821682036102dd57565b6001600160a01b0316801561294d575f51602061361e5f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b90670de0b6b3a7640000820291808305670de0b6b3a764000014901517156120b457565b81810292915f8212600160ff1b8214166120b45781840514901517156120b457565b811561210c57600160ff1b81145f198314166120b4570590565b60ff16604d81116120b457600a0a90565b90600b54600c5492806129e357509190565b600a54919391826129fd866001600160681b0384166120e1565b670de0b6b3a764000090049160681c6001600160681b031690612a1f916120e1565b670de0b6b3a76400009004612a339161346a565b938160015460a01c6001600160401b0316600254966001600160401b0316908760801c6001600160401b03168860401c6001600160401b03166001600160401b038a16612a8093856134c8565b966003548060801c6001600160401b0316918160401c6001600160401b0316916001600160401b03169060c01c612ab6946134c8565b956001600160401b0316612aca90836120e1565b90612ad4916120e1565b670de0b6b3a76400009004612ae891612120565b936001600160401b0316612afc90836120e1565b90612b06916120e1565b670de0b6b3a764000090046124e391612120565b60025f51602061367e5f395f51905f525414612b435760025f51602061367e5f395f51905f5255565b633ee5aeb560e01b5f5260045ffd5b60ff5f51602061365e5f395f51905f525416612b6a57565b63d93c066560e01b5f5260045ffd5b600c0b6c7fffffffffffffffffffffffff1981146120b4575f0390565b600c91820b910b03906c7fffffffffffffffffffffffff1982126c7fffffffffffffffffffffffff8313176120b457565b919082600c0b81600c0b818113612c36575f13612bf75750612be99192612b96565b6001600160681b0316905f90565b5f12612c1657612c079192612b96565b6001600160681b0316905f9190565b612c1f90612b79565b6001600160681b0316916001600160681b03169190565b50505090505f905f90565b6001600160a01b03165f81815260086020526040812054600c0b90811215612ead57612c7e670de0b6b3a764000061216a600493600c5490612984565b600154604051634c6afee560e11b81529260209184919082906001600160a01b03165afa801561238f575f90612e7a575b5f5460405163313ce56760e01b81529350602090849060049082906001600160a01b03165afa91821561238f57612cf6935f9361239a57506121e96121f09260ff926120e1565b905f905f600754905b818110612d0e57505050101590565b612d178161208c565b90545f85815260096020908152604080832060039590951b9390931c6001600160a01b031680835293905220549081612d55575b5050600101612cff565b5f9591929552600660205260405f2091600460405193612d7485612035565b60018060a01b038154168552602060018201549560018060a01b03871690818382015260c06002604083019560ff8b60a01c1687526001600160401b03606085019b60a81c168b5201546001600160401b03811660808401526001600160401b038160401c1660a084015260801c91015260405193848092634c6afee560e11b82525afa91821561238f575f92612e40575b506001946001600160401b0361233d612e3896956121f0612337670de0b6b3a76400009760ff612346985116936120e1565b93905f612d4b565b915092916020823d8211612e72575b81612e5c60209383612050565b810103126102dd57905191929091906001612e06565b3d9150612e4f565b506020823d602011612ea5575b81612e9460209383612050565b810103126102dd5760049151612caf565b3d9150612e87565b5050600190565b60405163a9059cbb60e01b60208201526001600160a01b039092166024830152604480830193909352918152612ef491612eef606483612050565b61353c565b565b6040516323b872dd60e01b60208201526001600160a01b039283166024820152929091166044830152606480830193909352918152612ef491612eef608483612050565b91909180600c0b83600c0b818112612c36575f12612f5d5750612be99192612b96565b5f13612f6d57612c079192612b96565b612f7690612b79565b6001600160681b0316916001600160681b031690565b5f51602061361e5f395f51905f52546001600160a01b03163303612fac57565b63118cdaa760e01b5f523360045260245ffd5b9190612fca8161212d565b1561345b576001600160a01b03165f81815260086020526040908190209051929190612ff58461201a565b54600c0b809352670de0b6b3a7640000613011600c5485612984565b05915f83121561345b57600154604051634c6afee560e11b81529390602090859060049082906001600160a01b03165afa93841561238f575f94613427575b505f935f5b60075481101561325a576130688161208c565b90545f87815260096020908152604080832060039590951b9390931c6001600160a01b03168083529390522054806130a5575b5050600101613055565b815f52600660205260405f206004604051916130c083612035565b60018060a01b0381541683526020600182015491600260018060a01b0384169182848801526001600160401b03604088019560ff8160a01c16875260a81c1660608801520154946001600160401b038616608082015260c060a08201966001600160401b038160401c16885260801c91015260405193848092634c6afee560e11b82525afa91821561238f575f92613216575b506001600160401b039a670de0b6b3a76400006123468c9561319360019a99989661318e61318760ff61319e9951166129c0565b91896120e1565b612102565b9e8f915116906120e1565b99825f52600960205260405f20868060a01b0385165f526020525f6040812055835f52600e60205260405f206131d5838254612120565b905560405191825260208201527f9850ab1af75177e4a9201c65a2cf7976d5d28e40ef63494b44366f86b2f9412e60408d878060a01b031692a4905f61309b565b9594939150916020863d8211613252575b8161323460209383612050565b810103126102dd579451939492939092916001600160401b03613153565b3d9150613227565b509093919592946004602060018060a01b035f54166040519283809263313ce56760e01b82525afa801561238f578361318e6132a46132ab936132fc955f91613408575b506129c0565b80976120e1565b916132b68388612436565b5f8112613401575b6132ce90610ec3600b5491612960565b600c0b90885f52600860205260405f206001600160681b0319815416836001600160681b0316179055612f3a565b906001600160681b03613314600a549382851661253c565b1690600160681b600160d01b0390613344906001600160681b03198516841760681c6001600160681b031661251c565b60681b169165ffffffffffff60d01b161717600a555f94613364816120a4565b82126133b6575b50509161339f60409261318e7f1547a878dc89ad3c367b6338b4be6a65a5dd74fb77ae044da1e8747ef1f4f62f95876120e1565b825194855260208501526001600160a01b031692a3565b7f1547a878dc89ad3c367b6338b4be6a65a5dd74fb77ae044da1e8747ef1f4f62f949295509261318e6133f661339f936133f16040976120a4565b612411565b96939550509261336b565b505f6132be565b613421915060203d6020116123d1576123bf8183612050565b5f61329e565b9093506020813d602011613453575b8161344360209383612050565b810103126102dd5751925f613050565b3d9150613436565b636ef5bcdd60e11b5f5260045ffd5b90811561240b57670de0b6b3a7640000810290808204670de0b6b3a764000014901517156120b4576001600160401b03916134a491612102565b1690565b906001600160401b03809116911601906001600160401b0382116120b457565b9392906001600160401b0316808511613506575050670de0b6b3a76400006134fe6124e3946001600160401b03809416906120e1565b0416906134a8565b670de0b6b3a764000091936001600160401b03613534819561352e6134fe956124e39a612411565b936134a8565b9516906120e1565b905f602091828151910182855af11561238f575f513d61358b57506001600160a01b0381163b155b61356b5750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b60011415613564565b60ff5f51602061369e5f395f51905f525460401c16156135b057565b631afcd79f60e31b5f5260045ffd5b906135e357508051156135d457602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580613614575b6135f4575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156135ec56fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbccd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212201189984636754d5be8b3be7a659b3fbb6344169e20e41080d78d35984713b6da64736f6c634300081e0033","sourceMap":"765:27073:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;-1:-1:-1;;;;;765:27073:12;;:::i;:::-;;;;21958:9;765:27073;;;190:4:15;618:33;765:27073:12;;;;;;22109:11;765:27073;618:33:15;;:::i;:::-;190:4;765:27073:12;;;;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;2357:1:24;765:27073:12;;:::i;:::-;2303:62:24;;:::i;:::-;2357:1;:::i;:::-;765:27073:12;;;;;;;-1:-1:-1;;765:27073:12;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;3361:103:30;;:::i;:::-;1944:72:29;;:::i;:::-;-1:-1:-1;;;;;765:27073:12;;;;;;17372:18;765:27073;;;;;;;;;17372:30;17368:64;;17551:13;;:::i;:::-;765:27073;17578:20;;;:66;;;;765:27073;17574:150;;;17814:34;;;;:::i;:::-;765:27073;;;17895:28;;17891:62;;765:27073;;;17372:18;765:27073;;;;;;17967:44;;17963:78;;765:27073;;18368:16;;765:27073;;18164:10;;765:27073;;18157:4;;18137:10;;-1:-1:-1;;;;;765:27073:12;18164:10;:::i;:::-;765:27073;;;17372:18;765:27073;;;;;18221:45;765:27073;;;18221:45;:::i;:::-;765:27073;;18368:16;;:::i;:::-;765:27073;;;;;;;;;18499:62;765:27073;18137:10;18499:62;;765:27073;-1:-1:-1;;;;;;;;;;;765:27073:12;;17963:78;10037:21;;;765:27073;18020:21;765:27073;;18020:21;17574:150;17667:12;;;765:27073;17667:12;765:27073;;17667:12;17578:66;765:27073;;-1:-1:-1;;;;;17630:14:12;765:27073;;-1:-1:-1;17602:42:12;17578:66;;;765:27073;;;;;;-1:-1:-1;;765:27073:12;;;;;;:::i;:::-;;;2303:62:24;;;:::i;:::-;3361:103:30;;:::i;:::-;27503:13:12;;:::i;:::-;765:27073;27578:19;;:56;;;;;765:27073;27574:116;;;765:27073;;27770:6;765:27073;27801:28;765:27073;;;;;;;;;27770:6;:::i;:::-;765:27073;;;;;-1:-1:-1;;;;;765:27073:12;;27801:28;765:27073;-1:-1:-1;;;;;;;;;;;765:27073:12;;27574:116;27657:22;;;765:27073;27657:22;765:27073;;27657:22;27578:56;27601:33;;;;27578:56;;;765:27073;;;;;;-1:-1:-1;;765:27073:12;;;;;24656:4;24614:38;-1:-1:-1;;;;;24622:15:12;765:27073;;;;24641:11;765:27073;24614:38;;:::i;:::-;765:27073;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;-1:-1:-1;;;;;765:27073:12;;:::i;:::-;;;;1214:46:16;765:27073:12;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;;1582:30:16;765:27073:12;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;;;:::i;:::-;;;3361:103:30;;;:::i;:::-;1944:72:29;;:::i;:::-;765:27073:12;;;;;;;;;;9317:12;765:27073;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;;;;9350:26;9346:53;;9452:10;765:27073;;9437:14;765:27073;;;;;;-1:-1:-1;765:27073:12;;;-1:-1:-1;;;;;9437:42:12;765:27073;;-1:-1:-1;765:27073:12;;9437:42;:::i;:::-;765:27073;;;-1:-1:-1;9489:59:12;;9625:6;9618:4;;9452:10;9625:6;;:::i;:::-;9452:10;765:27073;;9437:14;765:27073;;;;;;-1:-1:-1;765:27073:12;;;;-1:-1:-1;765:27073:12;9651:43;765:27073;;;9651:43;:::i;:::-;765:27073;;;;;;;9452:10;;9718:55;765:27073;9452:10;9718:55;;765:27073;-1:-1:-1;;;;;;;;;;;765:27073:12;;9489:59;9529:19;;;765:27073;9529:19;765:27073;;9529:19;9346:53;9385:14;;;765:27073;9385:14;765:27073;;9385:14;765:27073;;;;;;-1:-1:-1;;765:27073:12;;;;-1:-1:-1;;;;;765:27073:12;;:::i;:::-;;;;1764:53:16;765:27073:12;;;;;;;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;765:27073:12;;-1:-1:-1;;;;;765:27073:12;;;;;4301:16:25;765:27073:12;;4724:16:25;;:34;;;;765:27073:12;4803:1:25;4788:16;:50;;;;765:27073:12;4853:13:25;:30;;;;765:27073:12;4849:91:25;;;765:27073:12;4803:1:25;-1:-1:-1;;;;;765:27073:12;-1:-1:-1;;;;;;;;;;;765:27073:12;;;-1:-1:-1;;;;;;;;;;;765:27073:12;4977:67:25;;765:27073:12;6891:76:25;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;6959:1;1285:10:12;6959:1:25;:::i;:::-;6891:76;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;4803:1;-1:-1:-1;;;;;;;;;;;765:27073:12;-1:-1:-1;;;;;1418:16:12;;;:::i;:::-;765:27073;;;;;;;;;;;;;;;1465:25;;;;;:::i;:::-;4803:1:25;765:27073:12;;;-1:-1:-1;;;1658:17:12;;;;;:::i;:::-;765:27073;;;;;;;;;;4803:1:25;765:27073:12;;-1:-1:-1;;;;;1730:40:12;;;;;:::i;:::-;765:27073;;1685:105;765:27073;1846:41;765:27073;-1:-1:-1;;;;;1846:41:12;;;;;:::i;:::-;765:27073;;-1:-1:-1;;;765:27073:12;-1:-1:-1;;;;;1958:36:12;;;;;:::i;:::-;765:27073;;;-1:-1:-1;;;;;;2046:17:12;;;;;:::i;:::-;;765:27073;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;1846:41;765:27073;;;;1685:105;765:27073;;-1:-1:-1;;;;;2118:40:12;;;;;:::i;:::-;765:27073;;2073:105;765:27073;2234:41;765:27073;-1:-1:-1;;;;;2234:41:12;;;;;:::i;:::-;765:27073;;-1:-1:-1;;;765:27073:12;-1:-1:-1;;;;;2346:36:12;;;;;:::i;:::-;765:27073;;;-1:-1:-1;;;;;;2475:28:12;;;;;:::i;:::-;2046:17;765:27073;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;1846:41;765:27073;;;;2073:105;765:27073;-1:-1:-1;;;;;2534:25:12;;;;;:::i;:::-;765:27073;;;2585:20;765:27073;2585:20;;;;;:::i;:::-;765:27073;;;;;;;;;;;;-1:-1:-1;;;;;2632:21:12;;;;;:::i;:::-;765:27073;-1:-1:-1;;;;;765:27073:12;2615:38;765:27073;;;2615:38;765:27073;2725:4;2711:18;765:27073;2725:4;2739:18;765:27073;2785:15;2767:33;765:27073;2876:19;765:27073;2876:19;;2855:612;2904:3;2876:19;;;;:::i;:::-;2872:30;;;;;;;2956:19;;;;:::i;:::-;765:27073;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;1730:40;765:27073;;;:::i;:::-;;1730:40;765:27073;;;;;;1846:41;765:27073;;;:::i;:::-;;1846:41;765:27073;;;;;;;;;;:::i;:::-;;2046:17;765:27073;;;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;-1:-1:-1;;;;;2725:4:12;765:27073;2046:17;765:27073;;;;;;3061:37;;3058:75;;2725:4;-1:-1:-1;;;;;765:27073:12;;;3150:42;;3147:85;;2725:4;-1:-1:-1;;;;;765:27073:12;;;3249:45;;3246:91;;765:27073;;-1:-1:-1;;;;;765:27073:12;;;;;;;3364:12;765:27073;;;;;;;;;;;-1:-1:-1;;;;;;765:27073:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;765:27073:12;;;;;;;;;;;;;-1:-1:-1;;;765:27073:12;;;;;;;;;;-1:-1:-1;;;765:27073:12;;;;;;;;;;;;;;;;;;-1:-1:-1;;;765:27073:12;-1:-1:-1;;;;;765:27073:12;;;;;1846:41;765:27073;;;;-1:-1:-1;;765:27073:12;;1685:105;765:27073;;;;;;;;3423:9;765:27073;;-1:-1:-1;;;765:27073:12;;;;;;;4803:1:25;765:27073:12;;;3423:9;765:27073;;:::i;:::-;;;;;;2073:105;765:27073;;;;;;;;;;;;;;;;;;2860:10;;765:27073;;;;;;;;;1465:25;765:27073;;3246:91;3303:34;;;765:27073;3303:34;765:27073;;3303:34;3147:85;3201:31;;;765:27073;3201:31;765:27073;;3201:31;3058:75;3107:26;;;765:27073;3107:26;765:27073;;3107:26;765:27073;;;;;;;;;1465:25;765:27073;;2872:30;;5064:101:25;;765:27073:12;5064:101:25;-1:-1:-1;;;765:27073:12;-1:-1:-1;;;;;;;;;;;765:27073:12;;-1:-1:-1;;;;;;;;;;;765:27073:12;5140:14:25;765:27073:12;;;4803:1:25;765:27073:12;;5140:14:25;765:27073:12;4977:67:25;-1:-1:-1;;;;;;765:27073:12;-1:-1:-1;;;;;;;;;;;765:27073:12;;;-1:-1:-1;;;;;;;;;;;765:27073:12;4977:67:25;;4849:91;4906:23;;;765:27073:12;4906:23:25;765:27073:12;;4906:23:25;4853:30;4870:13;;;4853:30;;;4788:50;4816:4;4808:25;:30;;-1:-1:-1;4788:50:25;;4724:34;;;-1:-1:-1;4724:34:25;;765:27073:12;;;;;;-1:-1:-1;;765:27073:12;;;;;;3361:103:30;;:::i;:::-;1944:72:29;;:::i;:::-;10745:1673:12;;:::i;:::-;10937:10;765:27073;;10927:9;765:27073;;;;;;;;;;;:::i;:::-;;;;;;;;;11080:17;;765:27073;;11293:27;765:27073;190:4:15;618:33;11100:11:12;765:27073;11080:45;618:33:15;;:::i;:::-;190:4;11293:27:12;:::i;:::-;765:27073;11376:14;;;;:54;;11080:45;11372:83;;11799:63;;978:48:15;;11565:15:12;;979:30:15;11583:11:12;765:27073;11565:43;979:30:15;:::i;:::-;978:48;:::i;:::-;765:27073:12;;11799:63;;;:::i;:::-;-1:-1:-1;;;;;11911:33:12;;765:27073;;;;;11911:33;:::i;:::-;765:27073;;-1:-1:-1;;;;;;;765:27073:12;11954:31;;-1:-1:-1;;;;;;765:27073:12;;;;;;-1:-1:-1;;;;;765:27073:12;11954:31;:::i;:::-;765:27073;;;;;;;;;;11911:33;765:27073;10937:10;765:27073;;10927:9;765:27073;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;-1:-1:-1;;;;;765:27073:12;;;;12223:22;10937:10;12223:22;:::i;:::-;12222:23;12218:60;;765:27073;;12340:6;;10937:10;;;;-1:-1:-1;;;;;765:27073:12;12340:6;:::i;:::-;765:27073;;;;;10937:10;;12371:40;765:27073;10937:10;12371:40;;765:27073;-1:-1:-1;;;;;;;;;;;765:27073:12;;12218:60;8832:24;;;765:27073;12254:24;765:27073;;12254:24;11565:43;979:30:15;765:27073:12;;11565:43;979:30:15;:::i;11372:83:12:-;8766:16;;;765:27073;11439:16;765:27073;;11439:16;11376:54;11402:11;;;;:::i;:::-;-1:-1:-1;;;;;765:27073:12;;;;;-1:-1:-1;11376:54:12;;11080:45;11293:27;765:27073;190:4:15;618:33;765:27073:12;;11080:45;;765:27073;;;;;;-1:-1:-1;;765:27073:12;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;;24517:4;24475:38;-1:-1:-1;;;;;24483:15:12;765:27073;;24502:11;765:27073;24475:38;;:::i;765:27073::-;;;;;;-1:-1:-1;;765:27073:12;;;;;27206:24;26919:228;26834:52;26686:15;765:27073;26720:4;26757:38;765:27073;26678:38;26705:11;765:27073;-1:-1:-1;;;;;765:27073:12;;26678:38;:::i;:::-;765:27073;;-1:-1:-1;;;;;26784:11:12;765:27073;;;;;26757:38;:::i;:::-;765:27073;26834:52;;:::i;:::-;26983:10;765:27073;;;;27007:35;765:27073;;-1:-1:-1;;;;;765:27073:12;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;26919:228;:::i;:::-;27206:24;:::i;:::-;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;16740:8;765:27073;;:::i;:::-;3361:103:30;;:::i;:::-;1944:72:29;;:::i;:::-;16597:159:12;;:::i;:::-;16728:10;16740:8;:::i;:::-;1949:1:30;-1:-1:-1;;;;;;;;;;;765:27073:12;;;;;;;;-1:-1:-1;;765:27073:12;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;765:27073:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;;1550:26:16;765:27073:12;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;;;:::i;:::-;;;;;;-1:-1:-1;;765:27073:12;;;;;-1:-1:-1;;;;;394:24:16;765:27073:12;;;;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;;;1038:26:16;765:27073:12;1038:26:16;;;;;;765:27073:12;1038:26:16;;:::i;:::-;765:27073:12;;;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;;1518:26:16;765:27073:12;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;;-1:-1:-1;;;;;535:45:16;765:27073:12;;;;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;;591:24:16;765:27073:12;;;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;-1:-1:-1;;;;;;;;;;;765:27073:12;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;;26523:24;26236:228;26151:52;26003:15;765:27073;26037:4;26074:38;765:27073;25995:38;26022:11;765:27073;-1:-1:-1;;;;;765:27073:12;;25995:38;:::i;26151:52::-;-1:-1:-1;;;;;26300:10:12;765:27073;;;;;26324:35;765:27073;;-1:-1:-1;;;;;765:27073:12;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;26236:228;:::i;765:27073::-;;;;;;-1:-1:-1;;765:27073:12;;;;2303:62:24;;:::i;:::-;1944:72:29;;:::i;:::-;3300:4;765:27073:12;;-1:-1:-1;;;;;;;;;;;765:27073:12;;;-1:-1:-1;;;;;;;;;;;765:27073:12;3319:20:29;765:27073:12;;;966:10:28;765:27073:12;;3319:20:29;765:27073:12;;;;;;;-1:-1:-1;;765:27073:12;;;;;-1:-1:-1;;;;;479:50:16;765:27073:12;;;;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;;-1:-1:-1;;;;;25828:52:12;25694:15;765:27073;25728:4;25765:38;765:27073;25686:38;25713:11;765:27073;-1:-1:-1;;;;;765:27073:12;;25686:38;:::i;25828:52::-;765:27073;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;-1:-1:-1;;765:27073:12;;;;;-1:-1:-1;;;;;732:45:16;765:27073:12;;;;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;-1:-1:-1;;;;;765:27073:12;;:::i;:::-;;;;981:51:16;765:27073:12;;;;;;;;;;;;;;981:51:16;-1:-1:-1;;;;;981:51:16;;;;765:27073:12;981:51:16;;765:27073:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;;;:::i;:::-;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;;;;;3361:103:30;;:::i;:::-;1944:72:29;;:::i;:::-;16822:292:12;;:::i;:::-;765:27073;16979:10;16991:19;;;;;;765:27073;;17054:11;;765:27073;;;;;;;17054:11;:::i;:::-;;;:::i;:::-;765:27073;16979:10;;765:27073;;;;;;-1:-1:-1;;765:27073:12;;;;;-1:-1:-1;;;;;1457:30:16;765:27073:12;;;;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;765:27073:12;;-1:-1:-1;;;;;;765:27073:12;;;;;;;-1:-1:-1;;;;;765:27073:12;3975:40:24;765:27073:12;;3975:40:24;765:27073:12;;;;;;;-1:-1:-1;;765:27073:12;;;;;;-1:-1:-1;;;;;;;;;;;765:27073:12;;;;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;;-1:-1:-1;;;;;424:49:16;765:27073:12;;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;5090:6:26;-1:-1:-1;;;;;765:27073:12;5081:4:26;5073:23;5069:145;;765:27073:12;;;-1:-1:-1;;;;;;;;;;;765:27073:12;;;5069:145:26;4844:29;;;765:27073:12;5174:29:26;765:27073:12;;5174:29:26;765:27073:12;;;;;;-1:-1:-1;;765:27073:12;;;;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;765:27073:12;;;;;;;22931:14;765:27073;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4667:6:26;765:27073:12;4658:4:26;4650:23;;;:120;;;;765:27073:12;4633:251:26;;;2303:62:24;;:::i;:::-;765:27073:12;;-1:-1:-1;;;6131:52:26;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;6131:52:26;;765:27073:12;;6131:52:26;;;765:27073:12;-1:-1:-1;6127:437:26;;1805:47:39;;;;765:27073:12;6493:60:26;765:27073:12;;;;6493:60:26;6127:437;6225:40;-1:-1:-1;;;;;;;;;;;6225:40:26;;;6221:120;;1748:29:39;;;:34;1744:119;;-1:-1:-1;;;;;;;;;;;765:27073:12;;-1:-1:-1;;;;;;765:27073:12;;;;;2407:36:39;-1:-1:-1;;2407:36:39;765:27073:12;;2458:15:39;:11;;765:27073:12;4065:25:45;;4107:55;4065:25;;;;;;765:27073:12;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;4107:55:45;:::i;765:27073:12:-;;;4107:55:45;:::i;2454:148:39:-;6163:9;;;;6159:70;;765:27073:12;6159:70:39;6199:19;;;765:27073:12;6199:19:39;765:27073:12;;6199:19:39;1744:119;1805:47;;;765:27073:12;1805:47:39;765:27073:12;;;;1805:47:39;6221:120:26;6292:34;;;765:27073:12;6292:34:26;765:27073:12;;;;6292:34:26;6131:52;;;;765:27073:12;6131:52:26;;765:27073:12;6131:52:26;;;;;;765:27073:12;6131:52:26;;;:::i;:::-;;;765:27073:12;;;;;6131:52:26;;;;;;;-1:-1:-1;6131:52:26;;4650:120;-1:-1:-1;;;;;;;;;;;765:27073:12;-1:-1:-1;;;;;765:27073:12;4728:42:26;;;-1:-1:-1;4650:120:26;;;765:27073:12;;;;;;-1:-1:-1;;765:27073:12;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;765:27073:12;;;;2971:9:29;2967:62;;765:27073:12;;;-1:-1:-1;;;;;;;;;;;765:27073:12;3627:22:29;765:27073:12;;;966:10:28;765:27073:12;;3627:22:29;765:27073:12;2967:62:29;3003:15;;;765:27073:12;3003:15:29;765:27073:12;;3003:15:29;765:27073:12;;;;;;-1:-1:-1;;765:27073:12;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;765:27073:12;;;;;;3361:103:30;;:::i;:::-;1944:72:29;;:::i;:::-;5870:1357:12;;:::i;:::-;765:27073;;6054:6;;765:27073;;6047:4;;6027:10;;-1:-1:-1;;;;;765:27073:12;6054:6;:::i;:::-;6027:10;765:27073;;6140:9;765:27073;;;;;;;;;;;:::i;:::-;;;;;;;;;6293:17;;765:27073;;6883:60;978:48:15;6503:27:12;765:27073;190:4:15;618:33;6313:11:12;765:27073;6293:45;618:33:15;;:::i;:::-;190:4;6503:27:12;:::i;:::-;765:27073;6631:15;;765:27073;;979:30:15;6649:11:12;765:27073;6631:43;979:30:15;:::i;978:48::-;765:27073:12;;6883:60;;;:::i;:::-;-1:-1:-1;;;;;7032:31:12;6992:30;765:27073;;6992:30;765:27073;;;;;;;;;6992:30;:::i;:::-;765:27073;;;;;;;7032:31;:::i;:::-;765:27073;;;;;;;;6992:30;765:27073;6027:10;765:27073;;6140:9;765:27073;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;6027:10;;7182:38;765:27073;6027:10;7182:38;;765:27073;-1:-1:-1;;;;;;;;;;;765:27073:12;;6293:45;6883:60;978:48:15;6503:27:12;765:27073;190:4:15;618:33;765:27073:12;;6293:45;;765:27073;;;;;;-1:-1:-1;;765:27073:12;;;;;;:::i;:::-;;;3361:103:30;;;:::i;:::-;1944:72:29;;:::i;:::-;9833:691:12;;:::i;:::-;10001:10;765:27073;;9986:14;765:27073;;;;;;;;;;;;-1:-1:-1;765:27073:12;;;;;-1:-1:-1;765:27073:12;;9986:42;9982:76;;10001:10;765:27073;;9986:14;765:27073;;;;;;;;;;;;-1:-1:-1;765:27073:12;;;;-1:-1:-1;765:27073:12;10077:43;765:27073;;;10077:43;:::i;:::-;765:27073;;10001:10;765:27073;;10227:9;765:27073;;;;;;;;;10272:13;10268:104;;765:27073;-1:-1:-1;;;;;765:27073:12;;10429:6;10001:10;;765:27073;10429:6;:::i;:::-;765:27073;;;;;10001:10;;10460:57;765:27073;10001:10;10460:57;;765:27073;-1:-1:-1;;;;;;;;;;;765:27073:12;;10268:104;10306:22;10001:10;10306:22;:::i;:::-;10268:104;10301:60;8832:24;;;765:27073;10337:24;765:27073;;10337:24;765:27073;;;;;;-1:-1:-1;;765:27073:12;;;;;-1:-1:-1;;;;;921:29:16;765:27073:12;;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;;;3361:103:30;;:::i;:::-;1944:72:29;;:::i;:::-;7462:1544:12;;:::i;:::-;7656:10;765:27073;;7646:9;765:27073;;;;;;;;;;;:::i;:::-;;;;;;;;;7799:17;;765:27073;;7991:27;765:27073;190:4:15;618:33;7819:11:12;765:27073;618:33:15;;:::i;7991:27:12:-;8086:15;765:27073;8086:15;;;;;;8320:63;978:48:15;8104:11:12;765:27073;8086:43;979:30:15;;;:::i;8320:63:12:-;-1:-1:-1;;;;;8432:33:12;;765:27073;;;;;8432:33;:::i;:::-;765:27073;;-1:-1:-1;;;;;;;765:27073:12;8475:31;;-1:-1:-1;;;;;;765:27073:12;;;;;;-1:-1:-1;;;;;765:27073:12;8475:31;:::i;:::-;765:27073;;;;;;;;;;8432:33;765:27073;7656:10;765:27073;;7646:9;765:27073;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;-1:-1:-1;;;;;765:27073:12;;;;8683:184;;8086:43;-1:-1:-1;765:27073:12;;8928:6;;7656:10;;;;-1:-1:-1;;;;;765:27073:12;8928:6;:::i;8683:184::-;8729:11;;;:::i;:::-;-1:-1:-1;;;;;765:27073:12;;;;;-1:-1:-1;8717:65:12;;8801:22;7656:10;8801:22;:::i;:::-;8800:23;8796:60;;8683:184;;;8086:43;8320:63;978:48:15;765:27073:12;;8086:43;;7799:45;7991:27;765:27073;190:4:15;618:33;765:27073:12;;7799:45;;765:27073;;;;;;-1:-1:-1;;765:27073:12;;;;;-1:-1:-1;;;;;621:49:16;765:27073:12;;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;;-1:-1:-1;;;;;676:50:16;765:27073:12;;;;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;;-1:-1:-1;;;;;1421:30:16;765:27073:12;;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;;808:35:16;765:27073:12;;;;;;;;;;;;;;;-1:-1:-1;;765:27073:12;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;765:27073:12;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;765:27073:12;;;;;;:::o;:::-;;;-1:-1:-1;;;;;765:27073:12;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;:::o;:::-;-1:-1:-1;;;;;765:27073:12;;;;;;-1:-1:-1;;765:27073:12;;;;:::o;:::-;1038:26:16;765:27073:12;;;;;;1038:26:16;-1:-1:-1;765:27073:12;;-1:-1:-1;765:27073:12;;;-1:-1:-1;765:27073:12;:::o;:::-;-1:-1:-1;;;765:27073:12;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;22974:1419::-;-1:-1:-1;;;;;765:27073:12;;;;;23080:9;765:27073;;;;;;;;;23122:14;;;23118:32;;23318:8;190:4:15;618:33;23458:41:12;765:27073;;;618:33:15;;:::i;:::-;190:4;23318:8:12;:::i;:::-;765:27073;;;;-1:-1:-1;;;23458:41:12;;765:27073;;;;;;;;-1:-1:-1;;;;;765:27073:12;23458:41;;;;;;765:27073;23458:41;;;22974:1419;765:27073;;;;-1:-1:-1;;;23532:36:12;;765:27073;-1:-1:-1;765:27073:12;;;;23458:41;;765:27073;;-1:-1:-1;;;;;765:27073:12;23532:36;;;;;;;23598:41;23532:36;765:27073;23532:36;;;22974:1419;23599:16;;23620:18;23599:16;765:27073;23599:16;;:::i;:::-;765:27073;;23620:18;:::i;:::-;23598:41;;:::i;:::-;765:27073;23754:10;765:27073;23770:9;765:27073;23749:522;23766:20;;;;;;24359:27;;;;22974:1419;:::o;23788:3::-;23823:12;;;:::i;:::-;765:27073;;;;;;23866:14;765:27073;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;23910:351;;23788:3;;;23469:18;765:27073;23754:10;;23910:351;765:27073;;;;;;23972:12;765:27073;;;;;;23458:41;765:27073;;;;;;:::i;:::-;;;;;;;;;;;;23469:18;765:27073;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;;;;;;;;;;;;24025:39;;;;;;;;;765:27073;24025:39;;;23910:351;765:27073;23469:18;765:27073;-1:-1:-1;;;;;5581:65:15;24178:68:12;765:27073;;5621:24:15;5582:34;190:4;765:27073:12;;24198:40;765:27073;;;5582:34:15;;:::i;:::-;5621:24;;:::i;5581:65::-;765:27073:12;;;24198:40;;:::i;:::-;765:27073;24178:68;;:::i;:::-;23910:351;;;;;24025:39;;;;;765:27073;24025:39;;;;;;;;;765:27073;24025:39;;;:::i;:::-;;;765:27073;;;;;;24025:39;;765:27073;;;23469:18;24025:39;;;;;-1:-1:-1;24025:39:12;;;765:27073;;;;;;;;;23532:36;765:27073;23532:36;;;23620:18;23532:36;;23599:16;23532:36;765:27073;23532:36;765:27073;23532:36;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;23458:41;;765:27073;23458:41;;765:27073;23458:41;;;;;;765:27073;23458:41;;;:::i;:::-;;;765:27073;;;;23458:41;765:27073;;23458:41;;;;;-1:-1:-1;23458:41:12;;23118:32;23138:12;;765:27073;23138:12;:::o;765:27073::-;;;;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;765:27073:12;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;24823:753::-;25220:42;25070:35;24976:33;24994:15;765:27073;24976:15;:33;:::i;:::-;25070:35;:::i;:::-;-1:-1:-1;765:27073:12;;;-1:-1:-1;;;25220:42:12;;25256:4;25220:42;;;765:27073;;;;;;;;;;-1:-1:-1;;;;;765:27073:12;25220:42;;;;;;;-1:-1:-1;25220:42:12;;;24823:753;765:27073;25510:59;765:27073;25340:4;25377:41;25510:37;765:27073;-1:-1:-1;;;;;765:27073:12;25295:41;25303:15;765:27073;;;;;25295:41;:::i;:::-;765:27073;;;;;25377:41;:::i;:::-;765:27073;25510:37;;:::i;:::-;:59;:::i;:::-;24823:753;:::o;25220:42::-;;;;765:27073;25220:42;;765:27073;25220:42;;;;;;765:27073;25220:42;;;:::i;:::-;;;765:27073;;;;;;25510:59;25220:42;;;;;-1:-1:-1;25220:42:12;;765:27073;;-1:-1:-1;;;;;765:27073:12;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;:::o;:::-;;-1:-1:-1;;;;;765:27073:12;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;:::o;22455:357::-;-1:-1:-1;;;;;765:27073:12;;;;;22567:9;765:27073;;;;;;;;;22609:14;;;22605:28;;190:4:15;618:33;22796:8:12;765:27073;;;618:33:15;;:::i;22605:28:12:-;22625:8;765:27073;22625:8;:::o;765:27073::-;;-1:-1:-1;;;;;765:27073:12;;;;;;;:::o;18665:1383::-;765:27073;;;;;;-1:-1:-1;765:27073:12;18807:12;765:27073;;18866:44;765:27073;-1:-1:-1;765:27073:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;;;;;;;;;;18866:44;;;;;;;;;-1:-1:-1;18866:44:12;;;18665:1383;-1:-1:-1;765:27073:12;;;;-1:-1:-1;;;18940:41:12;;765:27073;;;;;;;18866:44;;765:27073;;-1:-1:-1;;;;;765:27073:12;18940:41;;;;;;;-1:-1:-1;18940:41:12;;;18665:1383;765:27073;-1:-1:-1;;;;;19192:21:12;765:27073;;;;;;19152:4;765:27073;;19152:4;765:27073;;;;19152:4;19192:70;;;;:::i;:::-;765:27073;19152:4;765:27073;19152:4;765:27073;;;;19465:44;19152:4;19465:44;18866;19465;;:::i;:::-;765:27073;;;;;;;;-1:-1:-1;765:27073:12;;;;;;;;;;;19718:36;;;;;;;;;19968:22;20008:32;19718:36;19786:35;765:27073;19704:51;19718:36;19968:35;19718:36;19967:74;19718:36;-1:-1:-1;19718:36:12;;;18665:1383;765:27073;;19704:51;:::i;:::-;765:27073;;;19786:35;:::i;:::-;19968:22;;:::i;:::-;:35;:::i;19718:36::-;;;;765:27073;19718:36;765:27073;19718:36;;;;;;;:::i;:::-;;;;18940:41;;;;765:27073;18940:41;;765:27073;18940:41;;;;;;765:27073;18940:41;;;:::i;:::-;;;765:27073;;;;;18940:41;;;;;;;-1:-1:-1;18940:41:12;;18866:44;;;765:27073;18866:44;;765:27073;18866:44;;;;;;765:27073;18866:44;;;:::i;:::-;;;765:27073;;;;18866:44;765:27073;;18866:44;;;;;;-1:-1:-1;18866:44:12;;765:27073;-1:-1:-1;;;;;765:27073:12;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;:::o;22138:307::-;-1:-1:-1;;;;;765:27073:12;;;;;22250:9;765:27073;;;;;;;;;22292:14;;;22288:28;;618:33:15;190:4;765:27073:12;22425:11;765:27073;618:33:15;;:::i;:::-;190:4;22138:307:12;:::o;5491:323::-;5556:33;5574:15;765:27073;5556:15;:33;:::i;:::-;5603:16;;5599:29;;5720:35;;;:::i;:::-;5691:64;765:27073;5691:64;765:27073;5556:15;5574;765:27073;5491:323::o;5599:29::-;5621:7;:::o;765:27073::-;;-1:-1:-1;;;;;765:27073:12;;;;;;;:::o;:::-;;-1:-1:-1;;;;;765:27073:12;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;765:27073:12;;;;;;:::o;3405:215:24:-;-1:-1:-1;;;;;765:27073:12;3489:22:24;;3485:91;;-1:-1:-1;;;;;;;;;;;765:27073:12;;-1:-1:-1;;;;;;765:27073:12;;;;;;;-1:-1:-1;;;;;765:27073:12;3975:40:24;-1:-1:-1;;3975:40:24;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;765:27073:12;;3509:1:24;3534:31;765:27073:12;;190:4:15;765:27073:12;;;;;;190:4:15;765:27073:12;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;;;765:27073:12;;;;;;;;;;;;;;;:::o;190:4:15:-;;;;;-1:-1:-1;;;190:4:15;;-1:-1:-1;;190:4:15;;;;;;;:::o;765:27073:12:-;;;;;;;;;;;:::o;3886:1555::-;;4015:11;765:27073;4061:11;765:27073;4095:15;;4091:1286;;5395:39;;3886:1555;:::o;4091:1286::-;4231:15;765:27073;;;;;4223:38;765:27073;-1:-1:-1;;;;;765:27073:12;;4223:38;:::i;:::-;4265:4;765:27073;;;;;-1:-1:-1;;;;;765:27073:12;4306:38;;;;:::i;:::-;4265:4;765:27073;;4400:52;;;:::i;:::-;765:27073;;4638:10;765:27073;;;-1:-1:-1;;;;;765:27073:12;4666:35;765:27073;;-1:-1:-1;;;;;765:27073:12;;;;;-1:-1:-1;;;;;765:27073:12;;;;-1:-1:-1;;;;;765:27073:12;-1:-1:-1;;;;;765:27073:12;;4566:252;;;;:::i;:::-;765:27073;4965:35;765:27073;;;;-1:-1:-1;;;;;765:27073:12;;;;;-1:-1:-1;;;;;765:27073:12;;-1:-1:-1;;;;;765:27073:12;;;;4865:252;;;:::i;:::-;5207:64;-1:-1:-1;;;;;765:27073:12;5232:29:15;;;;:::i;:::-;:43;;;;:::i;:::-;190:4;765:27073:12;;5308:23:15;;;:::i;:::-;5302:64:12;-1:-1:-1;;;;;765:27073:12;5232:29:15;;;;:::i;:::-;:43;;;;:::i;:::-;190:4;765:27073:12;;5308:23:15;;;:::i;3470:384:30:-;1991:1;-1:-1:-1;;;;;;;;;;;765:27073:12;3670:20:30;3666:88;;1991:1;-1:-1:-1;;;;;;;;;;;765:27073:12;3470:384:30:o;3666:88::-;3713:30;;;-1:-1:-1;3713:30:30;;-1:-1:-1;3713:30:30;2709:128:29;765:27073:12;-1:-1:-1;;;;;;;;;;;765:27073:12;;2770:61:29;;2709:128::o;2770:61::-;2805:15;;;-1:-1:-1;2805:15:29;;-1:-1:-1;2805:15:29;765:27073:12;;;-1:-1:-1;;765:27073:12;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;;765:27073:12;;;;;;;;:::o;2040:711:15:-;;;765:27073:12;;;;;;2236:27:15;;;2232:46;;2317:1;-1:-1:-1;2317:1:15;;2396:27;;;;;:::i;:::-;-1:-1:-1;;;;;765:27073:12;2380:48:15;2317:1;2380:48;:::o;2297:448::-;2317:1;-1:-1:-1;2317:1:15;;2553:27;;;;:::i;:::-;-1:-1:-1;;;;;765:27073:12;2534:48:15;2317:1;2534:48;;:::o;2445:300::-;2719:13;;;:::i;:::-;-1:-1:-1;;;;;765:27073:12;;-1:-1:-1;;;;;765:27073:12;2680:54:15;;:::o;2232:46::-;2265:13;;;;;2273:1;2265:13;2273:1;2265:13;:::o;20110:938:12:-;-1:-1:-1;;;;;765:27073:12;;;;;20205:9;765:27073;;;;;;;;;20247:14;;;20243:31;;20462:8;190:4:15;618:33;20581:41:12;765:27073;;;618:33:15;;:::i;20462:8:12:-;765:27073;;;;-1:-1:-1;;;20581:41:12;;765:27073;;;;;;;;-1:-1:-1;;;;;765:27073:12;20581:41;;;;;;765:27073;20581:41;;;20110:938;765:27073;;;;-1:-1:-1;;;20655:36:12;;765:27073;-1:-1:-1;765:27073:12;;;;20581:41;;765:27073;;-1:-1:-1;;;;;765:27073:12;20655:36;;;;;;;20721:41;20655:36;765:27073;20655:36;;;20722:16;;20743:18;20722:16;765:27073;20722:16;;:::i;20721:41::-;21204:22;765:27073;21250:10;765:27073;21266:9;765:27073;21245:514;21262:20;;;;;;21014:27;;;;;20110:938;:::o;21284:3::-;21319:12;;;:::i;:::-;765:27073;;;;;;21362:14;765:27073;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;21406:343;;21284:3;;;20592:18;765:27073;21250:10;;21406:343;765:27073;;;;;;21468:12;765:27073;;;;;;20581:41;765:27073;;;;;;:::i;:::-;;;;;;;;;;;;20592:18;765:27073;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;;;;;;;;;;;;21521:39;;;;;;;;;765:27073;21521:39;;;21406:343;765:27073;20592:18;765:27073;-1:-1:-1;;;;;5581:65:15;21674:60:12;765:27073;;5621:24:15;5582:34;190:4;765:27073:12;;21689:37;765:27073;;;5582:34:15;;:::i;21674:60:12:-;21406:343;;;;;21521:39;;;;;765:27073;21521:39;;;;;;;;;765:27073;21521:39;;;:::i;:::-;;;765:27073;;;;;;21521:39;;765:27073;;;20592:18;21521:39;;;;;-1:-1:-1;21521:39:12;;20581:41;;765:27073;20581:41;;765:27073;20581:41;;;;;;765:27073;20581:41;;;:::i;:::-;;;765:27073;;;;20581:41;765:27073;;20581:41;;;;;-1:-1:-1;20581:41:12;;20243:31;20263:11;;20270:4;20263:11;:::o;1219:160:44:-;765:27073:12;;-1:-1:-1;;;1328:43:44;;;;-1:-1:-1;;;;;765:27073:12;;;1328:43:44;;;765:27073:12;;;;;;;;;1328:43:44;;;;;;;765:27073:12;1328:43:44;:::i;:::-;;:::i;:::-;1219:160::o;1618:188::-;765:27073:12;;-1:-1:-1;;;1745:53:44;;;;-1:-1:-1;;;;;765:27073:12;;;1745:53:44;;;765:27073:12;;;;;;;;;;;;;;;;;1745:53:44;;;;;;;765:27073:12;1745:53:44;:::i;1181:721:15:-;;;;765:27073:12;;;;;;1374:27:15;;;1370:46;;1455:1;-1:-1:-1;1455:1:15;;1547:27;;;;;:::i;1435:461::-;1455:1;-1:-1:-1;1455:1:15;;1704:27;;;;:::i;1596:300::-;1847:13;;;:::i;:::-;-1:-1:-1;;;;;765:27073:12;;-1:-1:-1;;;;;765:27073:12;1831:54:15;:::o;2658:162:24:-;-1:-1:-1;;;;;;;;;;;765:27073:12;-1:-1:-1;;;;;765:27073:12;966:10:28;2717:23:24;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:24;966:10:28;2763:40:24;765:27073:12;;-1:-1:-1;2763:40:24;12819:3706:12;;;12904:24;;;:::i;:::-;12903:25;12899:55;;-1:-1:-1;;;;;765:27073:12;-1:-1:-1;765:27073:12;;;13033:9;765:27073;;;;;;;;;;;;;;;:::i;:::-;;;;;;;190:4:15;618:33;765:27073:12;;618:33:15;;:::i;:::-;190:4;13274:15:12;-1:-1:-1;13274:15:12;;;13270:45;;765:27073;;;;-1:-1:-1;;;13433:41:12;;765:27073;;;;;;13433:41;;765:27073;;-1:-1:-1;;;;;765:27073:12;13433:41;;;;;;;-1:-1:-1;13433:41:12;;;12819:3706;13484:32;-1:-1:-1;13540:10:12;-1:-1:-1;13574:3:12;13556:9;765:27073;13552:20;;;;;13609:12;;;:::i;:::-;765:27073;;-1:-1:-1;765:27073:12;;;13662:14;765:27073;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;13720:1012;;13574:3;;;13444:18;765:27073;13540:10;;13720:1012;765:27073;-1:-1:-1;765:27073:12;13797:12;765:27073;;;-1:-1:-1;765:27073:12;13433:41;765:27073;;;;;;:::i;:::-;;;;;;;;;;;;13444:18;765:27073;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;;;;;;;;;;;;;;;;;13855:44;;;;;;;;;-1:-1:-1;13855:44:12;;;13720:1012;765:27073;-1:-1:-1;;;;;765:27073:12;190:4:15;14248:50:12;765:27073;;14091:44;13444:18;765:27073;;;;14092:29;14018:26;765:27073;14324:39;765:27073;;;14018:26;:::i;:::-;14092:29;;;:::i;:::-;14091:44;:::i;:::-;765:27073;;;;;14248:50;;:::i;14324:39::-;765:27073;;-1:-1:-1;765:27073:12;13662:14;765:27073;;;-1:-1:-1;765:27073:12;;;;;;;;-1:-1:-1;765:27073:12;;;-1:-1:-1;765:27073:12;;;;;-1:-1:-1;765:27073:12;14504:18;765:27073;;;-1:-1:-1;765:27073:12;14504:45;765:27073;;;14504:45;:::i;:::-;765:27073;;;;;;;;;;;14636:81;765:27073;;;;;;;;14636:81;;13720:1012;;;;13855:44;;;;;;;765:27073;13855:44;;;;;;;;;765:27073;13855:44;;;:::i;:::-;;;765:27073;;;;;;13855:44;;;;;;765:27073;-1:-1:-1;;;;;13855:44:12;;;;;-1:-1:-1;13855:44:12;;13552:20;;;;;;;;13433:41;765:27073;;;;;;-1:-1:-1;765:27073:12;;;;;;;;;;;14842:36;;;;;;;;;14916:32;14836:42;14915:46;14842:36;15584:60;14842:36;-1:-1:-1;14842:36:12;;;13535:1207;14836:42;;:::i;:::-;14916:32;;;:::i;14915:46::-;15069:37;;;;;:::i;:::-;-1:-1:-1;15207:14:12;;15203:59;;13535:1207;978:48:15;765:27073:12;979:30:15;15375:11:12;765:27073;979:30:15;;:::i;978:48::-;765:27073:12;;;;-1:-1:-1;765:27073:12;13033:9;765:27073;;;-1:-1:-1;765:27073:12;-1:-1:-1;;;;;765:27073:12;;;;;-1:-1:-1;;;;;765:27073:12;;;;15584:60;:::i;:::-;765:27073;-1:-1:-1;;;;;15778:31:12;;765:27073;;;;;15778:31;:::i;:::-;765:27073;;-1:-1:-1;;;;;;;765:27073:12;15819:30;;-1:-1:-1;;;;;;765:27073:12;;;;;;-1:-1:-1;;;;;765:27073:12;15819:30;:::i;:::-;765:27073;;;;;;;;;;15778:31;765:27073;-1:-1:-1;16055:11:12;;;;:::i;:::-;16028:38;;16024:201;;13535:1207;16359:23;;;16358:37;765:27073;16359:23;;16455:63;16359:23;;;:::i;16358:37::-;765:27073;;;;;;;;;-1:-1:-1;;;;;765:27073:12;;16455:63;12819:3706::o;16024:201::-;16455:63;16183:11;;;;;16359:23;16175:39;16358:37;16183:11;;765:27073;16183:11;;:::i;:::-;16175:39;:::i;:::-;16024:201;;;;;;;;15203:59;-1:-1:-1;;15203:59:12;;14842:36;;;;765:27073;14842:36;765:27073;14842:36;;;;;;;:::i;:::-;;;;13433:41;;;;765:27073;13433:41;;765:27073;13433:41;;;;;;765:27073;13433:41;;;:::i;:::-;;;765:27073;;;;;13433:41;;;;;;;-1:-1:-1;13433:41:12;;13270:45;12937:17;;;-1:-1:-1;13298:17:12;;-1:-1:-1;13298:17:12;2924:211:15;;3035:16;;3031:30;;190:4;765:27073:12;;;;;;190:4:15;765:27073:12;;;;;;;-1:-1:-1;;;;;3085:42:15;;;;:::i;:::-;765:27073:12;2924:211:15;:::o;765:27073:12:-;;-1:-1:-1;;;;;765:27073:12;;;;;;;-1:-1:-1;;;;;765:27073:12;;;;:::o;3209:719:15:-;;;;-1:-1:-1;;;;;765:27073:12;3492:25:15;;;;;765:27073:12;;190:4:15;3582:49;3540:108;765:27073:12;-1:-1:-1;;;;;765:27073:12;;;3582:49:15;;:::i;:::-;765:27073:12;;3540:108:15;;:::i;3488:434::-;190:4;3700:24;;-1:-1:-1;;;;;3745:69:15;3700:24;;;3845:49;3700:24;3745:166;3700:24;;:::i;:::-;3745:69;;:::i;:::-;765:27073:12;;3845:49:15;;:::i;8370:720:44:-;;-1:-1:-1;8507:421:44;8370:720;8507:421;;;;;;;;;;;;-1:-1:-1;8507:421:44;;8942:15;;-1:-1:-1;;;;;;765:27073:12;;8960:26:44;:31;8942:68;8938:146;;8370:720;:::o;8938:146::-;-1:-1:-1;;;;9033:40:44;;;-1:-1:-1;;;;;765:27073:12;;;;9033:40:44;765:27073:12;;;9033:40:44;8942:68;9009:1;8994:16;;8942:68;;7082:141:25;765:27073:12;-1:-1:-1;;;;;;;;;;;765:27073:12;;;;7148:18:25;7144:73;;7082:141::o;7144:73::-;7189:17;;;-1:-1:-1;7189:17:25;;-1:-1:-1;7189:17:25;4437:582:45;;4609:8;;-1:-1:-1;765:27073:12;;5690:21:45;:17;;5815:105;;;;;;5686:301;5957:19;;;5710:1;5957:19;;5710:1;5957:19;4605:408;765:27073:12;;4857:22:45;:49;;;4605:408;4853:119;;4985:17;;:::o;4853:119::-;-1:-1:-1;;;4878:1:45;4933:24;;;-1:-1:-1;;;;;765:27073:12;;;;4933:24:45;765:27073:12;;;4933:24:45;4857:49;4883:18;;;:23;4857:49;","linkReferences":{},"immutableReferences":{"10672":[{"start":5940,"length":32},{"start":6227,"length":32}]}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","absorb(address)":"ba1b2447","absorbMultiple(address,address[])":"74485e78","accrueInterest()":"a6afed95","assetConfigs(address)":"7609d7f6","assetList(uint256)":"a0b4b301","baseBorrowMin()":"300e6beb","baseToken()":"c55dae63","baseTokenPriceFeed()":"e7dad6bd","borrow(uint256)":"c5ebeaec","borrowBalanceOf(address)":"374c49b4","borrowIndex()":"aa5af0fd","borrowKink()":"9241a561","borrowPerSecondInterestRateBase()":"7914acc7","borrowPerSecondInterestRateSlopeHigh()":"2a48cf12","borrowPerSecondInterestRateSlopeLow()":"2d05670b","buyCollateral(address,uint256,uint256,address)":"e4e6e779","collateralReserves(address)":"cf31a17e","getBalance(address)":"f8b2cb4f","getBorrowRate()":"ba1c5e80","getCollateral(address,address)":"52226ef0","getCollateralReserves(address)":"9ff567f8","getReserves()":"0902f1ac","getSupplyRate()":"84bdc9a8","getTotalBorrow()":"e37f8a7e","getTotalSupply()":"c4e41b22","getUtilization()":"7eb71131","initialize((address,address,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint104,uint104,(address,address,uint8,uint64,uint64,uint64,uint128)[]))":"c9390d8b","isLiquidatable(address)":"042e02cf","lastAccrualTime()":"d7e72708","owner()":"8da5cb5b","pause()":"8456cb59","paused()":"5c975abb","proxiableUUID()":"52d1902d","quoteCollateral(address,uint256)":"7ac88ed1","renounceOwnership()":"715018a6","storeFrontPriceFactor()":"1f5954bd","supply(uint256)":"35403023","supplyBalanceOf(address)":"93889f06","supplyCollateral(address,uint256)":"d2a8607b","supplyIndex()":"98f1bc12","supplyKink()":"a5b4ff79","supplyPerSecondInterestRateBase()":"94920cca","supplyPerSecondInterestRateSlopeHigh()":"804de71f","supplyPerSecondInterestRateSlopeLow()":"5a94b8d1","targetReserves()":"32176c49","totalBorrowBase()":"74471361","totalSupplyBase()":"278cc7a0","trackingIndexScale()":"aba7f15e","transferOwnership(address)":"f2fde38b","unpause()":"3f4ba83a","upgradeToAndCall(address,bytes)":"4f1ef286","userBasic(address)":"dc4abafd","userCollateral(address,address)":"2b92a07d","withdraw(uint256)":"2e1a7d4d","withdrawCollateral(address,uint256)":"350c35e9","withdrawReserves(address,uint256)":"e478795d"}}}},"contracts/ytLending/LendingConfiguration.sol":{"LendingConfiguration":{"abi":[],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"LendingConfiguration\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"\\u501f\\u8d37\\u6c60\\u914d\\u7f6e\\u7ed3\\u6784\\u4f53\\u5b9a\\u4e49\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ytLending/LendingConfiguration.sol\":\"LendingConfiguration\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"contracts/ytLending/LendingConfiguration.sol\":{\"keccak256\":\"0xb865cb13a3cdd84c409188043405fce03159fef567296b4ad795eebfbe3ba1ce\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05b6f564c096a2dc656c9b06a6683b723314d01ec194f4a3f288c7d2ecca54f3\",\"dweb:/ipfs/QmYbAD9EDyGBCjHid2hP7m1qmd19bXR7h2hyDA8F1AP2ow\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"608080604052346013576039908160188239f35b5f80fdfe5f80fdfea264697066735822122076098cfdad6b8b1070c4224cc2030f7a7c45e74d0408ccaa578faefa747c668c64736f6c634300081e0033","sourceMap":"138:1818:13:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"5f80fdfea264697066735822122076098cfdad6b8b1070c4224cc2030f7a7c45e74d0408ccaa578faefa747c668c64736f6c634300081e0033","sourceMap":"138:1818:13:-:0;;","linkReferences":{}}}}},"contracts/ytLending/LendingFactory.sol":{"LendingFactory":{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deploy","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"LendingDeployed","inputs":[{"name":"lending","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"lending\",\"type\":\"address\"}],\"name\":\"LendingDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"deploy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"deploy()\":{\"returns\":{\"_0\":\"\\u65b0 Lending \\u5408\\u7ea6\\u5730\\u5740\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deploy()\":{\"notice\":\"\\u90e8\\u7f72\\u65b0\\u7684 Lending \\u5b9e\\u73b0\\u5408\\u7ea6\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ytLending/LendingFactory.sol\":\"LendingFactory\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"contracts/interfaces/ILending.sol\":{\"keccak256\":\"0xd355b033318695723c227bfe24e298518046a0225594d14e90aec56311ff0873\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://32a34bad59749eceac7b2d7fe45e1f2e3b03d36ad518e977ea8f39bb63cab950\",\"dweb:/ipfs/QmdUvXnU75hTPXGoGWb1XpA64CNHoQ2Xso6EH1TKkDgLZs\"]},\"contracts/interfaces/IPriceFeed.sol\":{\"keccak256\":\"0x70d3c43bb10de1881f27e2ae4cfdc7d9fe88b49bff734a570c01c8f40a75ede8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce0ae7615d33b4d3af325a392b862dcc8a5136b89b674c9bb9c1f644390d67b4\",\"dweb:/ipfs/QmWAbyrMQkF4e8YMRA8JUnBbHcgwPLXjBJjTdfXQ2ekJPm\"]},\"contracts/ytLending/Lending.sol\":{\"keccak256\":\"0xf85860a529b9e728f3e6ae3edef24916c64205f025588a05855403b4ebbf9b57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31d6b91047b5e4528ac6839c895f0695ecc495aefe07905d6f70c6681afdc52e\",\"dweb:/ipfs/QmZYHT2KuumuHV3uSviHgjLtdpM6SD7Apxd7MPZoUSZrUJ\"]},\"contracts/ytLending/LendingConfiguration.sol\":{\"keccak256\":\"0xb865cb13a3cdd84c409188043405fce03159fef567296b4ad795eebfbe3ba1ce\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05b6f564c096a2dc656c9b06a6683b723314d01ec194f4a3f288c7d2ecca54f3\",\"dweb:/ipfs/QmYbAD9EDyGBCjHid2hP7m1qmd19bXR7h2hyDA8F1AP2ow\"]},\"contracts/ytLending/LendingFactory.sol\":{\"keccak256\":\"0x965a749c987c9c41cc0dd7b47c8378dae627579c4e0bcf1840cc770b564218b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b57826632fea21c8fbf2e4d403eb8a047459de67ac2a55687d4810d6806afe0e\",\"dweb:/ipfs/Qmf92FjPfEHkJBijUf8Efaam91HAwQiPmNhxrPamgQApWQ\"]},\"contracts/ytLending/LendingMath.sol\":{\"keccak256\":\"0xd3efd7fa25c05629276fef9f9b51e618671b4704557fd1bcf81489af55567865\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed23a2e6dacefcfc40e5f8fc6ce41c01dfe393b0159de5698dbe9a60fe8baf51\",\"dweb:/ipfs/QmQHcWYpnEBF8wLcFB99yJbnZxuHz9PS5FjxJUga5LQdBg\"]},\"contracts/ytLending/LendingStorage.sol\":{\"keccak256\":\"0xf484e95c1cded3561be679c2d631da2d75b1ecf4c8af24e52f0e8cfdd02c5f09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4fd7f2933b3a2680c6f4c59e0039aa34d03c1f1b1af000808a0cf4e6220facb4\",\"dweb:/ipfs/QmbTP3xvezfAuRfgPSD2vffdYjgaR3uXU1EWTN47mBbxy5\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x574a7451e42724f7de29e2855c392a8a5020acd695169466a18459467d719d63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bc189f63b639ee173dd7b6fecc39baf7113bf161776aea22b34c57fdd1872ec\",\"dweb:/ipfs/QmZAf2VtjDLRULqjJkde6LNsxAg12tUqpPqgUQQZbAjgtZ\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0xa6bf6b7efe0e6625a9dcd30c5ddf52c4c24fe8372f37c7de9dbf5034746768d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c353ee3705bbf6fadb84c0fb10ef1b736e8ca3ca1867814349d1487ed207beb\",\"dweb:/ipfs/QmcugaPssrzGGE8q4YZKm2ZhnD3kCijjcgdWWg76nWt3FY\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8150ceb4ac947e8a442b2a9c017e01e880b2be2dd958f1fa9bc405f4c5a86508\",\"dweb:/ipfs/QmbcBmFX66AY6Kbhnd5gx7zpkgqnUafo43XnmayAM7zVdB\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"608080604052346071573315605e575f8054336001600160a01b0319821681178355916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3613a2290816100768239f35b631e4fbdf760e01b5f525f60045260245ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8063715018a614610195578063775c300c146100f95780638da5cb5b146100d25763f2fde38b14610045575f80fd5b346100ce5760203660031901126100ce576004356001600160a01b038116908190036100ce576100736101ec565b80156100bb575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3005b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b346100ce575f3660031901126100ce575f546040516001600160a01b039091168152602090f35b346100ce575f3660031901126100ce576101116101ec565b6040516137da80820182811067ffffffffffffffff821117610181578291610213833903905ff08015610176576040516020916001600160a01b0316807fe5664142667d67c1a12a852c9476d5ca8d09f441bcdf07cbbd892b6cff28484b5f80a28152f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b346100ce575f3660031901126100ce576101ad6101ec565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b5f546001600160a01b031633036101ff57565b63118cdaa760e01b5f523360045260245ffdfe60a080604052346100c257306080525f5160206137ba5f395f51905f525460ff8160401c166100b3576002600160401b03196001600160401b03821601610060575b6040516136f390816100c7823960805181818161173401526118530152f35b6001600160401b0319166001600160401b039081175f5160206137ba5f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80610041565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8063042e02cf14611fad5780630902f1ac14611f935780631f5954bd14611f73578063278cc7a014611f4d5780632a48cf1214611f245780632b92a07d146117885780632d05670b14611efe5780632e1a7d4d14611d7d578063300e6beb14611d5457806332176c4914611d2e578063350c35e914611c205780633540302314611aa9578063374c49b414611a865780633f4ba83a14611a085780634f1ef286146117d857806352226ef01461178857806352d1902d146117225780635a94b8d1146116fc5780635c975abb146116ce578063715018a614611667578063744713611461163e57806374485e78146115a15780637609d7f6146115005780637914acc7146114d75780637ac88ed1146114b05780637eb7113114611465578063804de71f1461143c5780638456cb59146113cb57806384bdc9a8146113515780638da5cb5b1461131d5780639241a561146112fd57806393889f06146112d257806394920cca146112a957806398f1bc121461128c5780639ff567f814610758578063a0b4b3011461124a578063a5b4ff7914611221578063a6afed9514611209578063aa5af0fd146111ec578063aba7f15e146111c6578063ad3cb1cc14611168578063ba1b24471461111b578063ba1c5e8014611076578063c4e41b2214611043578063c55dae631461101c578063c5ebeaec14610e29578063c9390d8b14610790578063cf31a17e14610758578063d2a8607b146105da578063d7e72708146105bd578063dc4abafd14610582578063e37f8a7e14610543578063e478795d14610489578063e4e6e77914610334578063e7dad6bd1461030c578063f2fde38b146102e15763f8b2cb4f1461028c575f80fd5b346102dd5760203660031901126102dd576001600160a01b036102ad611fda565b165f5260086020526020670de0b6b3a76400006102d460405f2054600c0b600b5490612984565b05604051908152f35b5f80fd5b346102dd5760203660031901126102dd5761030a6102fd611fda565b610305612f8c565b6128ef565b005b346102dd575f3660031901126102dd576001546040516001600160a01b039091168152602090f35b346102dd5760803660031901126102dd5761034d611fda565b6044356064356001600160a01b03811681036102dd5761036b612b1a565b610373612b52565b6001600160a01b0383165f818152600e6020526040902054909390156104555761039b612451565b5f8112159081610473575b5061046457826103b5916125b0565b90602435821061045557835f52600e60205260405f20548211610455575f546104119183916103f2908690309033906001600160a01b0316612ef6565b855f52600e60205260405f20610409838254612411565b905585612eb4565b60405191825260208201527ff891b2a411b0e66a5f0a6ff1368670fefa287a13f541eb633a386a1a9cc7046b60403392a360015f51602061367e5f395f51905f5255005b631e9acf1760e31b5f5260045ffd5b631d99ddbf60e01b5f5260045ffd5b90506001600160681b03600554161115856103a6565b346102dd5760403660031901126102dd576104a2611fda565b602435906104ae612f8c565b6104b6612b1a565b6104be612451565b5f8112908115610539575b5061052a57602081610506847fec4431f2ba1a9382f6b0c4352b888cba6f7db91667d9f776abe5ad8ddc5401b69460018060a01b035f5416612eb4565b6040519384526001600160a01b031692a260015f51602061367e5f395f51905f5255005b63128bd24d60e31b5f5260045ffd5b90508211836104c9565b346102dd575f3660031901126102dd576020670de0b6b3a76400006105796001600160681b03600a5460681c16600c54906120e1565b04604051908152f35b346102dd5760203660031901126102dd576001600160a01b036105a3611fda565b165f526008602052602060405f2054600c0b604051908152f35b346102dd575f3660031901126102dd576020600d54604051908152f35b346102dd5760403660031901126102dd576105f3611fda565b602435906105ff612b1a565b610607612b52565b60018060a01b031690815f52600660205260405f206040519061062982612035565b60c0600260018060a01b03835416928385526001600160401b03600182015460018060a01b038116602088015260ff8160a01c16604088015260a81c1660608601520154926001600160401b03841660808201526001600160401b038460401c1660a0820152019160801c82521561074a57335f52600960205260405f20835f526020526001600160801b036106c38360405f2054612120565b9151161061073b576106d781303385612ef6565b335f52600960205260405f20825f5260205260405f206106f8828254612120565b905560405190815233907ffa56f7b24f17183d81894d3ac2ee654e3c26388d17a28dbd9549b8114304e1f460203392a460015f51602061367e5f395f51905f5255005b637ac7b99d60e11b5f5260045ffd5b6282b42960e81b5f5260045ffd5b346102dd5760203660031901126102dd576001600160a01b03610779611fda565b165f52600e602052602060405f2054604051908152f35b346102dd5760203660031901126102dd576004356001600160401b0381116102dd5780600401906101e060031982360301126102dd575f51602061369e5f395f51905f5254916001600160401b0360ff8460401c1615931680159081610e21575b6001149081610e17575b159081610e0e575b50610dff578260016001600160401b03195f51602061369e5f395f51905f525416175f51602061369e5f395f51905f5255610dcf575b90610842613594565b61084a613594565b610852613594565b61085b336128ef565b610863613594565b61086b613594565b610873613594565b60015f51602061367e5f395f51905f52556001600160a01b036108958361259c565b166bffffffffffffffffffffffff60a01b5f5416175f5560018060a01b036108bf6024830161259c565b600154911667ffffffffffffffff60a01b6108dc6044850161287e565b60a01b169163ffffffff60e01b1617176001556301e133806001600160401b036109086064840161287e565b1604600254906301e133806001600160401b036109276084860161287e565b160467ffffffffffffffff60401b6301e133806001600160401b0361094e60a4880161287e565b1604926001600160c01b031961096660c4880161287e565b60c01b16946001600160401b0360018060c01b039216906001600160401b0360c01b1617169160401b1617906001600160401b0360801b9060801b1617176002556301e133806001600160401b036109c060e4840161287e565b1604600354906301e133806001600160401b036109e0610104860161287e565b160467ffffffffffffffff60401b6301e133806001600160401b03610a08610124880161287e565b1604926001600160c01b0319610a21610144880161287e565b60c01b16946001600160401b0360018060c01b039216906001600160401b0360c01b1617169160401b1617906001600160401b0360801b9060801b1617176003556001600160401b03610a77610164830161287e565b166004549074ffffffffffffffffffffffffff0000000000000000610a9f6101848501612892565b60401b16916affffffffffffffffffffff60a81b1617176004556001600160681b03610ace6101a48301612892565b166001600160681b03196005541617600555670de0b6b3a7640000600b55670de0b6b3a7640000600c5542600d556101c45f9101905b610b0e82846128a6565b9050811015610d7657610b2182846128a6565b821015610d625760e08202019060e0823603126102dd57604051610b4481612035565b610b4d83612006565b8152610b5b60208401612006565b906020810191825260408401359360ff851685036102dd5760408201948552610b86606082016128db565b9260608301938452610b9a608083016128db565b9360808401948552610bae60a084016128db565b9360c060a08201948686520135946001600160801b03861686036102dd576001600160401b03670de0b6b3a76400009160c08401978852161015610d5357670de0b6b3a76400006001600160401b038351161015610d4457670de0b6b3a76400006001600160401b038751161015610d355780516001600160a01b039081165f9081526006602052604090819020925183546001600160a01b031916908316908117845594516001840180549b5195516001600160e81b0319909c16919093161760a09490941b60ff60a01b169390931760a89990991b67ffffffffffffffff60a81b16989098179097559351915192519290931b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6fffffffffffffffffffffffffffffffff1916176002939093019290925560075491600160401b831015610d2157610d0283600180950160075561208c565b819291549060031b91821b91858060a01b03901b191617905501610b04565b634e487b7160e01b5f52604160045260245ffd5b63c1a8d9bd60e01b5f5260045ffd5b6379905e1360e11b5f5260045ffd5b631db60e2960e01b5f5260045ffd5b634e487b7160e01b5f52603260045260245ffd5b83610d7d57005b60ff60401b195f51602061369e5f395f51905f5254165f51602061369e5f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b600160401b60ff60401b195f51602061369e5f395f51905f525416175f51602061369e5f395f51905f5255610839565b63f92ee8a960e01b5f5260045ffd5b90501584610803565b303b1591506107fb565b8491506107f1565b346102dd5760203660031901126102dd57600435610e45612b1a565b610e4d612b52565b610e55612854565b335f52600860205260405f2060405190610e6e8261201a565b54600c0b908190525f811261100457610e9d82670de0b6b3a7640000610e97600b545b85612984565b0561241e565b5f81128080610fe5575b610fd657610ed291610ec891610fca57610ec3600b5491612960565b6129a6565b600c0b8092612bc7565b6001600160681b03610ee9600a549382851661251c565b1690600160681b600160d01b0390610f19906001600160681b03198516841760681c6001600160681b031661253c565b60681b169165ffffffffffff60d01b161717600a55335f52600860205260405f20906001600160681b0319825416906001600160681b0316179055610f5d33612c41565b15610fbb575f54610f7a90829033906001600160a01b0316612eb4565b60405190815233907f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb60203392a360015f51602061367e5f395f51905f5255005b633a23d82560e01b5f5260045ffd5b610ec3600c5491612960565b637139da2360e11b5f5260045ffd5b50610fef826120a4565b6001600160681b0360045460401c1611610ea7565b610e9d82670de0b6b3a7640000610e97600c54610e91565b346102dd575f3660031901126102dd575f546040516001600160a01b039091168152602090f35b346102dd575f3660031901126102dd576020670de0b6b3a76400006105796001600160681b03600a5416600b54906120e1565b346102dd575f3660031901126102dd57602061110a6111056110d4600a54670de0b6b3a76400006110cd816110b6600b546001600160681b0386166120e1565b04926001600160681b03600c549160681c166120e1565b049061346a565b60025460c01c90600354906001600160401b038260801c16926001600160401b0380808560401c16941692166134c8565b6127f4565b6001600160401b0360405191168152f35b346102dd5760203660031901126102dd57611155611137611fda565b61113f612b1a565b611147612b52565b61114f612854565b33612fbf565b60015f51602061367e5f395f51905f5255005b346102dd575f3660031901126102dd5760408051906111878183612050565b600582526020820191640352e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b346102dd575f3660031901126102dd5760206001600160401b0360045416604051908152f35b346102dd575f3660031901126102dd576020600c54604051908152f35b346102dd575f3660031901126102dd5761030a612854565b346102dd575f3660031901126102dd5760206001600160401b0360015460a01c16604051908152f35b346102dd5760203660031901126102dd576004356007548110156102dd5761127360209161208c565b905460405160039290921b1c6001600160a01b03168152f35b346102dd575f3660031901126102dd576020600b54604051908152f35b346102dd575f3660031901126102dd5760206001600160401b0360025460801c16604051908152f35b346102dd5760203660031901126102dd5760206112f56112f0611fda565b612818565b604051908152f35b346102dd575f3660031901126102dd57602060025460c01c604051908152f35b346102dd575f3660031901126102dd575f51602061361e5f395f51905f52546040516001600160a01b039091168152602090f35b346102dd575f3660031901126102dd57602061110a611105611391600a54670de0b6b3a76400006110cd816110b6600b546001600160681b0386166120e1565b6001600160401b0360015460a01c1690600254906001600160401b038260801c16926001600160401b0380808560401c16941692166134c8565b346102dd575f3660031901126102dd576113e3612f8c565b6113eb612b52565b600160ff195f51602061365e5f395f51905f525416175f51602061365e5f395f51905f52557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346102dd575f3660031901126102dd5760206001600160401b0360025460401c16604051908152f35b346102dd575f3660031901126102dd5760206001600160401b036114a7600a54670de0b6b3a76400006110cd816110b6600b546001600160681b0386166120e1565b16604051908152f35b346102dd5760403660031901126102dd5760206112f56114ce611fda565b602435906125b0565b346102dd575f3660031901126102dd5760206001600160401b0360035460801c16604051908152f35b346102dd5760203660031901126102dd576001600160a01b03611521611fda565b165f52600660205260e060405f2060018060a01b03815416906001600160401b03600260018301549201549160405193845260018060a01b038116602085015260ff8160a01c16604085015260a81c1660608301526001600160401b03811660808301526001600160401b038160401c1660a083015260801c60c0820152f35b346102dd5760403660031901126102dd576115ba611fda565b6024356001600160401b0381116102dd57366023820112156102dd578060040135906001600160401b0382116102dd573660248360051b830101116102dd57611601612b1a565b611609612b52565b611611612854565b5f5b828110156111555760019061163861163260248360051b86010161259c565b86612fbf565b01611613565b346102dd575f3660031901126102dd5760206001600160681b03600a5460681c16604051908152f35b346102dd575f3660031901126102dd5761167f612f8c565b5f51602061361e5f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346102dd575f3660031901126102dd57602060ff5f51602061365e5f395f51905f5254166040519015158152f35b346102dd575f3660031901126102dd5760206001600160401b0360025416604051908152f35b346102dd575f3660031901126102dd577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036117795760206040515f51602061363e5f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b346102dd5760403660031901126102dd576117a1611fda565b6117a9611ff0565b6001600160a01b039182165f908152600960209081526040808320949093168252928352819020549051908152f35b60403660031901126102dd576117ec611fda565b602435906001600160401b0382116102dd57366023830112156102dd5781600401359061181882612071565b916118266040519384612050565b808352602083019336602483830101116102dd57815f926024602093018737840101526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163081149081156119e6575b506117795761188b612f8c565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa5f91816119b2575b506118cd5784634c9c8ce360e01b5f5260045260245ffd5b805f51602061363e5f395f51905f528692036119a05750823b1561198e575f51602061363e5f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2825115611975575f809161030a945190845af43d1561196d573d9161195183612071565b9261195f6040519485612050565b83523d5f602085013e6135bf565b6060916135bf565b5050503461197f57005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d6020116119de575b816119ce60209383612050565b810103126102dd575190866118b5565b3d91506119c1565b5f51602061363e5f395f51905f52546001600160a01b0316141590508461187e565b346102dd575f3660031901126102dd57611a20612f8c565b5f51602061365e5f395f51905f525460ff811615611a775760ff19165f51602061365e5f395f51905f52557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b5f5260045ffd5b346102dd5760203660031901126102dd5760206112f5611aa4611fda565b61255c565b346102dd5760203660031901126102dd57600435611ac5612b1a565b611acd612b52565b611ad5612854565b5f54611aef908290309033906001600160a01b0316612ef6565b335f52600860205260405f2060405190611b088261201a565b54600c0b908190525f8112611c0257611b5a611b50611b3d84670de0b6b3a7640000611b37600b545b87612984565b05612436565b5f8112610fca57610ec3600b5491612960565b600c0b8092612f3a565b6001600160681b03611b89600a5493611b7c8360681b91848760681c1661251c565b60681b169282851661253c565b169165ffffffffffff60d01b161717600a55335f52600860205260405f20906001600160681b0319825416906001600160681b031617905560405190815233907fd1cf3d156d5f8f0d50f6c122ed609cec09d35c9b9fb3fff6ea0959134dae424e60203392a360015f51602061367e5f395f51905f5255005b611b5a611b50611b3d84670de0b6b3a7640000611b37600c54611b31565b346102dd5760403660031901126102dd57611c39611fda565b60243590611c45612b1a565b611c4d612b52565b611c55612854565b335f52600960205260405f2060018060a01b0382165f526020528160405f20541061045557335f52600960205260405f2060018060a01b0382165f5260205260405f20611ca3838254612411565b9055335f5260086020525f6040812054600c0b12611d12575b6001600160a01b031690611cd1813384612eb4565b60405190815233907fd6d480d5b3068db003533b170d67561494d72e3bf9fa40a266471351ebba9e1660203392a460015f51602061367e5f395f51905f5255005b611d1b33612c41565b611cbc57633a23d82560e01b5f5260045ffd5b346102dd575f3660031901126102dd5760206001600160681b0360055416604051908152f35b346102dd575f3660031901126102dd5760206001600160681b0360045460401c16604051908152f35b346102dd5760203660031901126102dd57600435611d99612b1a565b611da1612b52565b611da9612854565b335f52600860205260405f2060405190611dc28261201a565b54600c0b908190525f8112611ee657611dea82670de0b6b3a7640000610e97600b5485612984565b905f82129081611ed857611e07610ec8600b545b610ec386612960565b6001600160681b03611e1e600a549382851661251c565b1690600160681b600160d01b0390611e4e906001600160681b03198516841760681c6001600160681b031661253c565b60681b169165ffffffffffff60d01b161717600a55335f52600860205260405f20906001600160681b0319825416906001600160681b0316179055611ea7575b505f54610f7a90829033906001600160a01b0316612eb4565b611eb0906120a4565b6001600160681b0360045460401c1611610fd657611ecd33612c41565b15610fbb5781611e8e565b611e07610ec8600c54611dfe565b611dea82670de0b6b3a7640000610e97600c54610e91565b346102dd575f3660031901126102dd5760206001600160401b0360035416604051908152f35b346102dd575f3660031901126102dd5760206001600160401b0360035460401c16604051908152f35b346102dd575f3660031901126102dd5760206001600160681b03600a5416604051908152f35b346102dd575f3660031901126102dd57602060035460c01c604051908152f35b346102dd575f3660031901126102dd5760206112f5612451565b346102dd5760203660031901126102dd576020611fd0611fcb611fda565b61212d565b6040519015158152f35b600435906001600160a01b03821682036102dd57565b602435906001600160a01b03821682036102dd57565b35906001600160a01b03821682036102dd57565b602081019081106001600160401b03821117610d2157604052565b60e081019081106001600160401b03821117610d2157604052565b90601f801991011681019081106001600160401b03821117610d2157604052565b6001600160401b038111610d2157601f01601f191660200190565b600754811015610d625760075f5260205f2001905f90565b600160ff1b81146120b4575f0390565b634e487b7160e01b5f52601160045260245ffd5b908160209103126102dd575160ff811681036102dd5790565b818102929181159184041417156120b457565b604d81116120b457600a0a90565b811561210c570490565b634e487b7160e01b5f52601260045260245ffd5b919082018092116120b457565b6001600160a01b03165f81815260086020526040812054600c0b9081121561240b57612170670de0b6b3a764000061216a600493600c5490612984565b056120a4565b600154604051634c6afee560e11b81529260209184919082906001600160a01b03165afa801561238f575f906123d8575b5f5460405163313ce56760e01b81529350602090849060049082906001600160a01b03165afa91821561238f576121f6935f9361239a575b506121e96121f09260ff926120e1565b92166120f4565b90612102565b5f915f600754905b81811061220c575050501190565b6122158161208c565b90545f85815260096020908152604080832060039590951b9390931c6001600160a01b031680835293905220549081612253575b50506001016121fe565b5f9691929652600660205260405f209160046040519361227285612035565b60018060a01b0381541685526020600182015491600260018060a01b0384169182848a01526001600160401b0360408a019560ff8160a01c16875260a81c1660608a015201549660c060808201986001600160401b0381168a526001600160401b038160401c1660a084015260801c91015260405193848092634c6afee560e11b82525afa91821561238f575f92612355575b506001946001600160401b0361233d61234d96956121f0612337670de0b6b3a76400009760ff612346985116936120e1565b916129c0565b915116906120e1565b0490612120565b94905f612249565b915092916020823d8211612387575b8161237160209383612050565b810103126102dd57905191929091906001612305565b3d9150612364565b6040513d5f823e3d90fd5b60ff9193506121f0926123c76121e99260203d6020116123d1575b6123bf8183612050565b8101906120c8565b94925092506121d9565b503d6123b5565b506020823d602011612403575b816123f260209383612050565b810103126102dd57600491516121a1565b3d91506123e5565b50505f90565b919082039182116120b457565b81810392915f1380158285131691841216176120b457565b9190915f83820193841291129080158216911516176120b457565b6024612467612462600d5442612411565b6129d1565b5f546040516370a0823160e01b8152306004820152929360209184919082906001600160a01b03165afa91821561238f575f926124e6575b506124e392670de0b6b3a76400006124d76124de936001600160681b03836124cc600a54968388166120e1565b049460681c166120e1565b049261241e565b612436565b90565b9091506020813d602011612514575b8161250260209383612050565b810103126102dd5751906124e361249f565b3d91506124f5565b906001600160681b03809116911603906001600160681b0382116120b457565b906001600160681b03809116911601906001600160681b0382116120b457565b6001600160a01b03165f90815260086020526040812054600c0b9081121561259757670de0b6b3a764000061216a6124e392600c5490612984565b505f90565b356001600160a01b03811681036102dd5790565b60018060a01b03165f526006602052600460405f2091604051926125d384612035565b60018060a01b0381541684526020600182015491600260018060a01b0384169182848901526001600160401b03604089019560ff8160a01c16875260a81c1660608901520154956001600160401b038716608082015260c060a08201976001600160401b038160401c16895260801c91015260405194858092634c6afee560e11b82525afa92831561238f575f936127bf575b50600154604051634c6afee560e11b8152939490602090859060049082906001600160a01b03165afa93841561238f575f9461278b575b506001600160401b0360035460c01c915116670de0b6b3a76400000390670de0b6b3a764000082116120b457670de0b6b3a7640000916126dc916120e1565b04670de0b6b3a764000003670de0b6b3a764000081116120b45761270b670de0b6b3a7640000916004966120e1565b0492602060018060a01b035f54166040519687809263313ce56760e01b82525afa90811561238f576127676121f09461276160ff61275981612761976124e39c5f9161276c575b50166120f4565b9651166120f4565b926120e1565b6120e1565b612785915060203d6020116123d1576123bf8183612050565b5f612752565b9093506020813d6020116127b7575b816127a760209383612050565b810103126102dd5751925f61269d565b3d915061279a565b92506020833d6020116127ec575b816127da60209383612050565b810103126102dd576004925192612666565b3d91506127cd565b6001600160401b036301e13380911602906001600160401b0382169182036120b457565b6001600160a01b03165f90815260086020526040812054600c0b9081131561259757612850670de0b6b3a764000091600b5490612984565b0590565b612860600d5442612411565b801561287b5761286f906129d1565b600c55600b5542600d55565b50565b356001600160401b03811681036102dd5790565b356001600160681b03811681036102dd5790565b903590601e19813603018212156102dd57018035906001600160401b0382116102dd576020019160e08202360383136102dd57565b35906001600160401b03821682036102dd57565b6001600160a01b0316801561294d575f51602061361e5f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b90670de0b6b3a7640000820291808305670de0b6b3a764000014901517156120b457565b81810292915f8212600160ff1b8214166120b45781840514901517156120b457565b811561210c57600160ff1b81145f198314166120b4570590565b60ff16604d81116120b457600a0a90565b90600b54600c5492806129e357509190565b600a54919391826129fd866001600160681b0384166120e1565b670de0b6b3a764000090049160681c6001600160681b031690612a1f916120e1565b670de0b6b3a76400009004612a339161346a565b938160015460a01c6001600160401b0316600254966001600160401b0316908760801c6001600160401b03168860401c6001600160401b03166001600160401b038a16612a8093856134c8565b966003548060801c6001600160401b0316918160401c6001600160401b0316916001600160401b03169060c01c612ab6946134c8565b956001600160401b0316612aca90836120e1565b90612ad4916120e1565b670de0b6b3a76400009004612ae891612120565b936001600160401b0316612afc90836120e1565b90612b06916120e1565b670de0b6b3a764000090046124e391612120565b60025f51602061367e5f395f51905f525414612b435760025f51602061367e5f395f51905f5255565b633ee5aeb560e01b5f5260045ffd5b60ff5f51602061365e5f395f51905f525416612b6a57565b63d93c066560e01b5f5260045ffd5b600c0b6c7fffffffffffffffffffffffff1981146120b4575f0390565b600c91820b910b03906c7fffffffffffffffffffffffff1982126c7fffffffffffffffffffffffff8313176120b457565b919082600c0b81600c0b818113612c36575f13612bf75750612be99192612b96565b6001600160681b0316905f90565b5f12612c1657612c079192612b96565b6001600160681b0316905f9190565b612c1f90612b79565b6001600160681b0316916001600160681b03169190565b50505090505f905f90565b6001600160a01b03165f81815260086020526040812054600c0b90811215612ead57612c7e670de0b6b3a764000061216a600493600c5490612984565b600154604051634c6afee560e11b81529260209184919082906001600160a01b03165afa801561238f575f90612e7a575b5f5460405163313ce56760e01b81529350602090849060049082906001600160a01b03165afa91821561238f57612cf6935f9361239a57506121e96121f09260ff926120e1565b905f905f600754905b818110612d0e57505050101590565b612d178161208c565b90545f85815260096020908152604080832060039590951b9390931c6001600160a01b031680835293905220549081612d55575b5050600101612cff565b5f9591929552600660205260405f2091600460405193612d7485612035565b60018060a01b038154168552602060018201549560018060a01b03871690818382015260c06002604083019560ff8b60a01c1687526001600160401b03606085019b60a81c168b5201546001600160401b03811660808401526001600160401b038160401c1660a084015260801c91015260405193848092634c6afee560e11b82525afa91821561238f575f92612e40575b506001946001600160401b0361233d612e3896956121f0612337670de0b6b3a76400009760ff612346985116936120e1565b93905f612d4b565b915092916020823d8211612e72575b81612e5c60209383612050565b810103126102dd57905191929091906001612e06565b3d9150612e4f565b506020823d602011612ea5575b81612e9460209383612050565b810103126102dd5760049151612caf565b3d9150612e87565b5050600190565b60405163a9059cbb60e01b60208201526001600160a01b039092166024830152604480830193909352918152612ef491612eef606483612050565b61353c565b565b6040516323b872dd60e01b60208201526001600160a01b039283166024820152929091166044830152606480830193909352918152612ef491612eef608483612050565b91909180600c0b83600c0b818112612c36575f12612f5d5750612be99192612b96565b5f13612f6d57612c079192612b96565b612f7690612b79565b6001600160681b0316916001600160681b031690565b5f51602061361e5f395f51905f52546001600160a01b03163303612fac57565b63118cdaa760e01b5f523360045260245ffd5b9190612fca8161212d565b1561345b576001600160a01b03165f81815260086020526040908190209051929190612ff58461201a565b54600c0b809352670de0b6b3a7640000613011600c5485612984565b05915f83121561345b57600154604051634c6afee560e11b81529390602090859060049082906001600160a01b03165afa93841561238f575f94613427575b505f935f5b60075481101561325a576130688161208c565b90545f87815260096020908152604080832060039590951b9390931c6001600160a01b03168083529390522054806130a5575b5050600101613055565b815f52600660205260405f206004604051916130c083612035565b60018060a01b0381541683526020600182015491600260018060a01b0384169182848801526001600160401b03604088019560ff8160a01c16875260a81c1660608801520154946001600160401b038616608082015260c060a08201966001600160401b038160401c16885260801c91015260405193848092634c6afee560e11b82525afa91821561238f575f92613216575b506001600160401b039a670de0b6b3a76400006123468c9561319360019a99989661318e61318760ff61319e9951166129c0565b91896120e1565b612102565b9e8f915116906120e1565b99825f52600960205260405f20868060a01b0385165f526020525f6040812055835f52600e60205260405f206131d5838254612120565b905560405191825260208201527f9850ab1af75177e4a9201c65a2cf7976d5d28e40ef63494b44366f86b2f9412e60408d878060a01b031692a4905f61309b565b9594939150916020863d8211613252575b8161323460209383612050565b810103126102dd579451939492939092916001600160401b03613153565b3d9150613227565b509093919592946004602060018060a01b035f54166040519283809263313ce56760e01b82525afa801561238f578361318e6132a46132ab936132fc955f91613408575b506129c0565b80976120e1565b916132b68388612436565b5f8112613401575b6132ce90610ec3600b5491612960565b600c0b90885f52600860205260405f206001600160681b0319815416836001600160681b0316179055612f3a565b906001600160681b03613314600a549382851661253c565b1690600160681b600160d01b0390613344906001600160681b03198516841760681c6001600160681b031661251c565b60681b169165ffffffffffff60d01b161717600a555f94613364816120a4565b82126133b6575b50509161339f60409261318e7f1547a878dc89ad3c367b6338b4be6a65a5dd74fb77ae044da1e8747ef1f4f62f95876120e1565b825194855260208501526001600160a01b031692a3565b7f1547a878dc89ad3c367b6338b4be6a65a5dd74fb77ae044da1e8747ef1f4f62f949295509261318e6133f661339f936133f16040976120a4565b612411565b96939550509261336b565b505f6132be565b613421915060203d6020116123d1576123bf8183612050565b5f61329e565b9093506020813d602011613453575b8161344360209383612050565b810103126102dd5751925f613050565b3d9150613436565b636ef5bcdd60e11b5f5260045ffd5b90811561240b57670de0b6b3a7640000810290808204670de0b6b3a764000014901517156120b4576001600160401b03916134a491612102565b1690565b906001600160401b03809116911601906001600160401b0382116120b457565b9392906001600160401b0316808511613506575050670de0b6b3a76400006134fe6124e3946001600160401b03809416906120e1565b0416906134a8565b670de0b6b3a764000091936001600160401b03613534819561352e6134fe956124e39a612411565b936134a8565b9516906120e1565b905f602091828151910182855af11561238f575f513d61358b57506001600160a01b0381163b155b61356b5750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b60011415613564565b60ff5f51602061369e5f395f51905f525460401c16156135b057565b631afcd79f60e31b5f5260045ffd5b906135e357508051156135d457602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580613614575b6135f4575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156135ec56fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbccd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212201189984636754d5be8b3be7a659b3fbb6344169e20e41080d78d35984713b6da64736f6c634300081e0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212202771f7f7dad3d8ede67ae8f577c03bd3e60ec50747437f1f8f2f69cbe58e014564736f6c634300081e0033","sourceMap":"172:458:14:-:0;;;;;;;258:10;1273:26:31;1269:95;;1297:1;172:458:14;;258:10;-1:-1:-1;;;;;;172:458:14;;;;;;258:10;-1:-1:-1;;;;;172:458:14;;;;3052:40:31;;1297:1;3052:40;172:458:14;;;;;;;1269:95:31;1322:31;;;1297:1;1322:31;1297:1;1322:31;172:458:14;;1297:1:31;1322:31;172:458:14;;;","linkReferences":{}},"deployedBytecode":{"object":"60806040526004361015610011575f80fd5b5f3560e01c8063715018a614610195578063775c300c146100f95780638da5cb5b146100d25763f2fde38b14610045575f80fd5b346100ce5760203660031901126100ce576004356001600160a01b038116908190036100ce576100736101ec565b80156100bb575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3005b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b346100ce575f3660031901126100ce575f546040516001600160a01b039091168152602090f35b346100ce575f3660031901126100ce576101116101ec565b6040516137da80820182811067ffffffffffffffff821117610181578291610213833903905ff08015610176576040516020916001600160a01b0316807fe5664142667d67c1a12a852c9476d5ca8d09f441bcdf07cbbd892b6cff28484b5f80a28152f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b346100ce575f3660031901126100ce576101ad6101ec565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b5f546001600160a01b031633036101ff57565b63118cdaa760e01b5f523360045260245ffdfe60a080604052346100c257306080525f5160206137ba5f395f51905f525460ff8160401c166100b3576002600160401b03196001600160401b03821601610060575b6040516136f390816100c7823960805181818161173401526118530152f35b6001600160401b0319166001600160401b039081175f5160206137ba5f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80610041565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8063042e02cf14611fad5780630902f1ac14611f935780631f5954bd14611f73578063278cc7a014611f4d5780632a48cf1214611f245780632b92a07d146117885780632d05670b14611efe5780632e1a7d4d14611d7d578063300e6beb14611d5457806332176c4914611d2e578063350c35e914611c205780633540302314611aa9578063374c49b414611a865780633f4ba83a14611a085780634f1ef286146117d857806352226ef01461178857806352d1902d146117225780635a94b8d1146116fc5780635c975abb146116ce578063715018a614611667578063744713611461163e57806374485e78146115a15780637609d7f6146115005780637914acc7146114d75780637ac88ed1146114b05780637eb7113114611465578063804de71f1461143c5780638456cb59146113cb57806384bdc9a8146113515780638da5cb5b1461131d5780639241a561146112fd57806393889f06146112d257806394920cca146112a957806398f1bc121461128c5780639ff567f814610758578063a0b4b3011461124a578063a5b4ff7914611221578063a6afed9514611209578063aa5af0fd146111ec578063aba7f15e146111c6578063ad3cb1cc14611168578063ba1b24471461111b578063ba1c5e8014611076578063c4e41b2214611043578063c55dae631461101c578063c5ebeaec14610e29578063c9390d8b14610790578063cf31a17e14610758578063d2a8607b146105da578063d7e72708146105bd578063dc4abafd14610582578063e37f8a7e14610543578063e478795d14610489578063e4e6e77914610334578063e7dad6bd1461030c578063f2fde38b146102e15763f8b2cb4f1461028c575f80fd5b346102dd5760203660031901126102dd576001600160a01b036102ad611fda565b165f5260086020526020670de0b6b3a76400006102d460405f2054600c0b600b5490612984565b05604051908152f35b5f80fd5b346102dd5760203660031901126102dd5761030a6102fd611fda565b610305612f8c565b6128ef565b005b346102dd575f3660031901126102dd576001546040516001600160a01b039091168152602090f35b346102dd5760803660031901126102dd5761034d611fda565b6044356064356001600160a01b03811681036102dd5761036b612b1a565b610373612b52565b6001600160a01b0383165f818152600e6020526040902054909390156104555761039b612451565b5f8112159081610473575b5061046457826103b5916125b0565b90602435821061045557835f52600e60205260405f20548211610455575f546104119183916103f2908690309033906001600160a01b0316612ef6565b855f52600e60205260405f20610409838254612411565b905585612eb4565b60405191825260208201527ff891b2a411b0e66a5f0a6ff1368670fefa287a13f541eb633a386a1a9cc7046b60403392a360015f51602061367e5f395f51905f5255005b631e9acf1760e31b5f5260045ffd5b631d99ddbf60e01b5f5260045ffd5b90506001600160681b03600554161115856103a6565b346102dd5760403660031901126102dd576104a2611fda565b602435906104ae612f8c565b6104b6612b1a565b6104be612451565b5f8112908115610539575b5061052a57602081610506847fec4431f2ba1a9382f6b0c4352b888cba6f7db91667d9f776abe5ad8ddc5401b69460018060a01b035f5416612eb4565b6040519384526001600160a01b031692a260015f51602061367e5f395f51905f5255005b63128bd24d60e31b5f5260045ffd5b90508211836104c9565b346102dd575f3660031901126102dd576020670de0b6b3a76400006105796001600160681b03600a5460681c16600c54906120e1565b04604051908152f35b346102dd5760203660031901126102dd576001600160a01b036105a3611fda565b165f526008602052602060405f2054600c0b604051908152f35b346102dd575f3660031901126102dd576020600d54604051908152f35b346102dd5760403660031901126102dd576105f3611fda565b602435906105ff612b1a565b610607612b52565b60018060a01b031690815f52600660205260405f206040519061062982612035565b60c0600260018060a01b03835416928385526001600160401b03600182015460018060a01b038116602088015260ff8160a01c16604088015260a81c1660608601520154926001600160401b03841660808201526001600160401b038460401c1660a0820152019160801c82521561074a57335f52600960205260405f20835f526020526001600160801b036106c38360405f2054612120565b9151161061073b576106d781303385612ef6565b335f52600960205260405f20825f5260205260405f206106f8828254612120565b905560405190815233907ffa56f7b24f17183d81894d3ac2ee654e3c26388d17a28dbd9549b8114304e1f460203392a460015f51602061367e5f395f51905f5255005b637ac7b99d60e11b5f5260045ffd5b6282b42960e81b5f5260045ffd5b346102dd5760203660031901126102dd576001600160a01b03610779611fda565b165f52600e602052602060405f2054604051908152f35b346102dd5760203660031901126102dd576004356001600160401b0381116102dd5780600401906101e060031982360301126102dd575f51602061369e5f395f51905f5254916001600160401b0360ff8460401c1615931680159081610e21575b6001149081610e17575b159081610e0e575b50610dff578260016001600160401b03195f51602061369e5f395f51905f525416175f51602061369e5f395f51905f5255610dcf575b90610842613594565b61084a613594565b610852613594565b61085b336128ef565b610863613594565b61086b613594565b610873613594565b60015f51602061367e5f395f51905f52556001600160a01b036108958361259c565b166bffffffffffffffffffffffff60a01b5f5416175f5560018060a01b036108bf6024830161259c565b600154911667ffffffffffffffff60a01b6108dc6044850161287e565b60a01b169163ffffffff60e01b1617176001556301e133806001600160401b036109086064840161287e565b1604600254906301e133806001600160401b036109276084860161287e565b160467ffffffffffffffff60401b6301e133806001600160401b0361094e60a4880161287e565b1604926001600160c01b031961096660c4880161287e565b60c01b16946001600160401b0360018060c01b039216906001600160401b0360c01b1617169160401b1617906001600160401b0360801b9060801b1617176002556301e133806001600160401b036109c060e4840161287e565b1604600354906301e133806001600160401b036109e0610104860161287e565b160467ffffffffffffffff60401b6301e133806001600160401b03610a08610124880161287e565b1604926001600160c01b0319610a21610144880161287e565b60c01b16946001600160401b0360018060c01b039216906001600160401b0360c01b1617169160401b1617906001600160401b0360801b9060801b1617176003556001600160401b03610a77610164830161287e565b166004549074ffffffffffffffffffffffffff0000000000000000610a9f6101848501612892565b60401b16916affffffffffffffffffffff60a81b1617176004556001600160681b03610ace6101a48301612892565b166001600160681b03196005541617600555670de0b6b3a7640000600b55670de0b6b3a7640000600c5542600d556101c45f9101905b610b0e82846128a6565b9050811015610d7657610b2182846128a6565b821015610d625760e08202019060e0823603126102dd57604051610b4481612035565b610b4d83612006565b8152610b5b60208401612006565b906020810191825260408401359360ff851685036102dd5760408201948552610b86606082016128db565b9260608301938452610b9a608083016128db565b9360808401948552610bae60a084016128db565b9360c060a08201948686520135946001600160801b03861686036102dd576001600160401b03670de0b6b3a76400009160c08401978852161015610d5357670de0b6b3a76400006001600160401b038351161015610d4457670de0b6b3a76400006001600160401b038751161015610d355780516001600160a01b039081165f9081526006602052604090819020925183546001600160a01b031916908316908117845594516001840180549b5195516001600160e81b0319909c16919093161760a09490941b60ff60a01b169390931760a89990991b67ffffffffffffffff60a81b16989098179097559351915192519290931b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6fffffffffffffffffffffffffffffffff1916176002939093019290925560075491600160401b831015610d2157610d0283600180950160075561208c565b819291549060031b91821b91858060a01b03901b191617905501610b04565b634e487b7160e01b5f52604160045260245ffd5b63c1a8d9bd60e01b5f5260045ffd5b6379905e1360e11b5f5260045ffd5b631db60e2960e01b5f5260045ffd5b634e487b7160e01b5f52603260045260245ffd5b83610d7d57005b60ff60401b195f51602061369e5f395f51905f5254165f51602061369e5f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b600160401b60ff60401b195f51602061369e5f395f51905f525416175f51602061369e5f395f51905f5255610839565b63f92ee8a960e01b5f5260045ffd5b90501584610803565b303b1591506107fb565b8491506107f1565b346102dd5760203660031901126102dd57600435610e45612b1a565b610e4d612b52565b610e55612854565b335f52600860205260405f2060405190610e6e8261201a565b54600c0b908190525f811261100457610e9d82670de0b6b3a7640000610e97600b545b85612984565b0561241e565b5f81128080610fe5575b610fd657610ed291610ec891610fca57610ec3600b5491612960565b6129a6565b600c0b8092612bc7565b6001600160681b03610ee9600a549382851661251c565b1690600160681b600160d01b0390610f19906001600160681b03198516841760681c6001600160681b031661253c565b60681b169165ffffffffffff60d01b161717600a55335f52600860205260405f20906001600160681b0319825416906001600160681b0316179055610f5d33612c41565b15610fbb575f54610f7a90829033906001600160a01b0316612eb4565b60405190815233907f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb60203392a360015f51602061367e5f395f51905f5255005b633a23d82560e01b5f5260045ffd5b610ec3600c5491612960565b637139da2360e11b5f5260045ffd5b50610fef826120a4565b6001600160681b0360045460401c1611610ea7565b610e9d82670de0b6b3a7640000610e97600c54610e91565b346102dd575f3660031901126102dd575f546040516001600160a01b039091168152602090f35b346102dd575f3660031901126102dd576020670de0b6b3a76400006105796001600160681b03600a5416600b54906120e1565b346102dd575f3660031901126102dd57602061110a6111056110d4600a54670de0b6b3a76400006110cd816110b6600b546001600160681b0386166120e1565b04926001600160681b03600c549160681c166120e1565b049061346a565b60025460c01c90600354906001600160401b038260801c16926001600160401b0380808560401c16941692166134c8565b6127f4565b6001600160401b0360405191168152f35b346102dd5760203660031901126102dd57611155611137611fda565b61113f612b1a565b611147612b52565b61114f612854565b33612fbf565b60015f51602061367e5f395f51905f5255005b346102dd575f3660031901126102dd5760408051906111878183612050565b600582526020820191640352e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b346102dd575f3660031901126102dd5760206001600160401b0360045416604051908152f35b346102dd575f3660031901126102dd576020600c54604051908152f35b346102dd575f3660031901126102dd5761030a612854565b346102dd575f3660031901126102dd5760206001600160401b0360015460a01c16604051908152f35b346102dd5760203660031901126102dd576004356007548110156102dd5761127360209161208c565b905460405160039290921b1c6001600160a01b03168152f35b346102dd575f3660031901126102dd576020600b54604051908152f35b346102dd575f3660031901126102dd5760206001600160401b0360025460801c16604051908152f35b346102dd5760203660031901126102dd5760206112f56112f0611fda565b612818565b604051908152f35b346102dd575f3660031901126102dd57602060025460c01c604051908152f35b346102dd575f3660031901126102dd575f51602061361e5f395f51905f52546040516001600160a01b039091168152602090f35b346102dd575f3660031901126102dd57602061110a611105611391600a54670de0b6b3a76400006110cd816110b6600b546001600160681b0386166120e1565b6001600160401b0360015460a01c1690600254906001600160401b038260801c16926001600160401b0380808560401c16941692166134c8565b346102dd575f3660031901126102dd576113e3612f8c565b6113eb612b52565b600160ff195f51602061365e5f395f51905f525416175f51602061365e5f395f51905f52557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346102dd575f3660031901126102dd5760206001600160401b0360025460401c16604051908152f35b346102dd575f3660031901126102dd5760206001600160401b036114a7600a54670de0b6b3a76400006110cd816110b6600b546001600160681b0386166120e1565b16604051908152f35b346102dd5760403660031901126102dd5760206112f56114ce611fda565b602435906125b0565b346102dd575f3660031901126102dd5760206001600160401b0360035460801c16604051908152f35b346102dd5760203660031901126102dd576001600160a01b03611521611fda565b165f52600660205260e060405f2060018060a01b03815416906001600160401b03600260018301549201549160405193845260018060a01b038116602085015260ff8160a01c16604085015260a81c1660608301526001600160401b03811660808301526001600160401b038160401c1660a083015260801c60c0820152f35b346102dd5760403660031901126102dd576115ba611fda565b6024356001600160401b0381116102dd57366023820112156102dd578060040135906001600160401b0382116102dd573660248360051b830101116102dd57611601612b1a565b611609612b52565b611611612854565b5f5b828110156111555760019061163861163260248360051b86010161259c565b86612fbf565b01611613565b346102dd575f3660031901126102dd5760206001600160681b03600a5460681c16604051908152f35b346102dd575f3660031901126102dd5761167f612f8c565b5f51602061361e5f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346102dd575f3660031901126102dd57602060ff5f51602061365e5f395f51905f5254166040519015158152f35b346102dd575f3660031901126102dd5760206001600160401b0360025416604051908152f35b346102dd575f3660031901126102dd577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036117795760206040515f51602061363e5f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b346102dd5760403660031901126102dd576117a1611fda565b6117a9611ff0565b6001600160a01b039182165f908152600960209081526040808320949093168252928352819020549051908152f35b60403660031901126102dd576117ec611fda565b602435906001600160401b0382116102dd57366023830112156102dd5781600401359061181882612071565b916118266040519384612050565b808352602083019336602483830101116102dd57815f926024602093018737840101526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163081149081156119e6575b506117795761188b612f8c565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa5f91816119b2575b506118cd5784634c9c8ce360e01b5f5260045260245ffd5b805f51602061363e5f395f51905f528692036119a05750823b1561198e575f51602061363e5f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2825115611975575f809161030a945190845af43d1561196d573d9161195183612071565b9261195f6040519485612050565b83523d5f602085013e6135bf565b6060916135bf565b5050503461197f57005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d6020116119de575b816119ce60209383612050565b810103126102dd575190866118b5565b3d91506119c1565b5f51602061363e5f395f51905f52546001600160a01b0316141590508461187e565b346102dd575f3660031901126102dd57611a20612f8c565b5f51602061365e5f395f51905f525460ff811615611a775760ff19165f51602061365e5f395f51905f52557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b5f5260045ffd5b346102dd5760203660031901126102dd5760206112f5611aa4611fda565b61255c565b346102dd5760203660031901126102dd57600435611ac5612b1a565b611acd612b52565b611ad5612854565b5f54611aef908290309033906001600160a01b0316612ef6565b335f52600860205260405f2060405190611b088261201a565b54600c0b908190525f8112611c0257611b5a611b50611b3d84670de0b6b3a7640000611b37600b545b87612984565b05612436565b5f8112610fca57610ec3600b5491612960565b600c0b8092612f3a565b6001600160681b03611b89600a5493611b7c8360681b91848760681c1661251c565b60681b169282851661253c565b169165ffffffffffff60d01b161717600a55335f52600860205260405f20906001600160681b0319825416906001600160681b031617905560405190815233907fd1cf3d156d5f8f0d50f6c122ed609cec09d35c9b9fb3fff6ea0959134dae424e60203392a360015f51602061367e5f395f51905f5255005b611b5a611b50611b3d84670de0b6b3a7640000611b37600c54611b31565b346102dd5760403660031901126102dd57611c39611fda565b60243590611c45612b1a565b611c4d612b52565b611c55612854565b335f52600960205260405f2060018060a01b0382165f526020528160405f20541061045557335f52600960205260405f2060018060a01b0382165f5260205260405f20611ca3838254612411565b9055335f5260086020525f6040812054600c0b12611d12575b6001600160a01b031690611cd1813384612eb4565b60405190815233907fd6d480d5b3068db003533b170d67561494d72e3bf9fa40a266471351ebba9e1660203392a460015f51602061367e5f395f51905f5255005b611d1b33612c41565b611cbc57633a23d82560e01b5f5260045ffd5b346102dd575f3660031901126102dd5760206001600160681b0360055416604051908152f35b346102dd575f3660031901126102dd5760206001600160681b0360045460401c16604051908152f35b346102dd5760203660031901126102dd57600435611d99612b1a565b611da1612b52565b611da9612854565b335f52600860205260405f2060405190611dc28261201a565b54600c0b908190525f8112611ee657611dea82670de0b6b3a7640000610e97600b5485612984565b905f82129081611ed857611e07610ec8600b545b610ec386612960565b6001600160681b03611e1e600a549382851661251c565b1690600160681b600160d01b0390611e4e906001600160681b03198516841760681c6001600160681b031661253c565b60681b169165ffffffffffff60d01b161717600a55335f52600860205260405f20906001600160681b0319825416906001600160681b0316179055611ea7575b505f54610f7a90829033906001600160a01b0316612eb4565b611eb0906120a4565b6001600160681b0360045460401c1611610fd657611ecd33612c41565b15610fbb5781611e8e565b611e07610ec8600c54611dfe565b611dea82670de0b6b3a7640000610e97600c54610e91565b346102dd575f3660031901126102dd5760206001600160401b0360035416604051908152f35b346102dd575f3660031901126102dd5760206001600160401b0360035460401c16604051908152f35b346102dd575f3660031901126102dd5760206001600160681b03600a5416604051908152f35b346102dd575f3660031901126102dd57602060035460c01c604051908152f35b346102dd575f3660031901126102dd5760206112f5612451565b346102dd5760203660031901126102dd576020611fd0611fcb611fda565b61212d565b6040519015158152f35b600435906001600160a01b03821682036102dd57565b602435906001600160a01b03821682036102dd57565b35906001600160a01b03821682036102dd57565b602081019081106001600160401b03821117610d2157604052565b60e081019081106001600160401b03821117610d2157604052565b90601f801991011681019081106001600160401b03821117610d2157604052565b6001600160401b038111610d2157601f01601f191660200190565b600754811015610d625760075f5260205f2001905f90565b600160ff1b81146120b4575f0390565b634e487b7160e01b5f52601160045260245ffd5b908160209103126102dd575160ff811681036102dd5790565b818102929181159184041417156120b457565b604d81116120b457600a0a90565b811561210c570490565b634e487b7160e01b5f52601260045260245ffd5b919082018092116120b457565b6001600160a01b03165f81815260086020526040812054600c0b9081121561240b57612170670de0b6b3a764000061216a600493600c5490612984565b056120a4565b600154604051634c6afee560e11b81529260209184919082906001600160a01b03165afa801561238f575f906123d8575b5f5460405163313ce56760e01b81529350602090849060049082906001600160a01b03165afa91821561238f576121f6935f9361239a575b506121e96121f09260ff926120e1565b92166120f4565b90612102565b5f915f600754905b81811061220c575050501190565b6122158161208c565b90545f85815260096020908152604080832060039590951b9390931c6001600160a01b031680835293905220549081612253575b50506001016121fe565b5f9691929652600660205260405f209160046040519361227285612035565b60018060a01b0381541685526020600182015491600260018060a01b0384169182848a01526001600160401b0360408a019560ff8160a01c16875260a81c1660608a015201549660c060808201986001600160401b0381168a526001600160401b038160401c1660a084015260801c91015260405193848092634c6afee560e11b82525afa91821561238f575f92612355575b506001946001600160401b0361233d61234d96956121f0612337670de0b6b3a76400009760ff612346985116936120e1565b916129c0565b915116906120e1565b0490612120565b94905f612249565b915092916020823d8211612387575b8161237160209383612050565b810103126102dd57905191929091906001612305565b3d9150612364565b6040513d5f823e3d90fd5b60ff9193506121f0926123c76121e99260203d6020116123d1575b6123bf8183612050565b8101906120c8565b94925092506121d9565b503d6123b5565b506020823d602011612403575b816123f260209383612050565b810103126102dd57600491516121a1565b3d91506123e5565b50505f90565b919082039182116120b457565b81810392915f1380158285131691841216176120b457565b9190915f83820193841291129080158216911516176120b457565b6024612467612462600d5442612411565b6129d1565b5f546040516370a0823160e01b8152306004820152929360209184919082906001600160a01b03165afa91821561238f575f926124e6575b506124e392670de0b6b3a76400006124d76124de936001600160681b03836124cc600a54968388166120e1565b049460681c166120e1565b049261241e565b612436565b90565b9091506020813d602011612514575b8161250260209383612050565b810103126102dd5751906124e361249f565b3d91506124f5565b906001600160681b03809116911603906001600160681b0382116120b457565b906001600160681b03809116911601906001600160681b0382116120b457565b6001600160a01b03165f90815260086020526040812054600c0b9081121561259757670de0b6b3a764000061216a6124e392600c5490612984565b505f90565b356001600160a01b03811681036102dd5790565b60018060a01b03165f526006602052600460405f2091604051926125d384612035565b60018060a01b0381541684526020600182015491600260018060a01b0384169182848901526001600160401b03604089019560ff8160a01c16875260a81c1660608901520154956001600160401b038716608082015260c060a08201976001600160401b038160401c16895260801c91015260405194858092634c6afee560e11b82525afa92831561238f575f936127bf575b50600154604051634c6afee560e11b8152939490602090859060049082906001600160a01b03165afa93841561238f575f9461278b575b506001600160401b0360035460c01c915116670de0b6b3a76400000390670de0b6b3a764000082116120b457670de0b6b3a7640000916126dc916120e1565b04670de0b6b3a764000003670de0b6b3a764000081116120b45761270b670de0b6b3a7640000916004966120e1565b0492602060018060a01b035f54166040519687809263313ce56760e01b82525afa90811561238f576127676121f09461276160ff61275981612761976124e39c5f9161276c575b50166120f4565b9651166120f4565b926120e1565b6120e1565b612785915060203d6020116123d1576123bf8183612050565b5f612752565b9093506020813d6020116127b7575b816127a760209383612050565b810103126102dd5751925f61269d565b3d915061279a565b92506020833d6020116127ec575b816127da60209383612050565b810103126102dd576004925192612666565b3d91506127cd565b6001600160401b036301e13380911602906001600160401b0382169182036120b457565b6001600160a01b03165f90815260086020526040812054600c0b9081131561259757612850670de0b6b3a764000091600b5490612984565b0590565b612860600d5442612411565b801561287b5761286f906129d1565b600c55600b5542600d55565b50565b356001600160401b03811681036102dd5790565b356001600160681b03811681036102dd5790565b903590601e19813603018212156102dd57018035906001600160401b0382116102dd576020019160e08202360383136102dd57565b35906001600160401b03821682036102dd57565b6001600160a01b0316801561294d575f51602061361e5f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b90670de0b6b3a7640000820291808305670de0b6b3a764000014901517156120b457565b81810292915f8212600160ff1b8214166120b45781840514901517156120b457565b811561210c57600160ff1b81145f198314166120b4570590565b60ff16604d81116120b457600a0a90565b90600b54600c5492806129e357509190565b600a54919391826129fd866001600160681b0384166120e1565b670de0b6b3a764000090049160681c6001600160681b031690612a1f916120e1565b670de0b6b3a76400009004612a339161346a565b938160015460a01c6001600160401b0316600254966001600160401b0316908760801c6001600160401b03168860401c6001600160401b03166001600160401b038a16612a8093856134c8565b966003548060801c6001600160401b0316918160401c6001600160401b0316916001600160401b03169060c01c612ab6946134c8565b956001600160401b0316612aca90836120e1565b90612ad4916120e1565b670de0b6b3a76400009004612ae891612120565b936001600160401b0316612afc90836120e1565b90612b06916120e1565b670de0b6b3a764000090046124e391612120565b60025f51602061367e5f395f51905f525414612b435760025f51602061367e5f395f51905f5255565b633ee5aeb560e01b5f5260045ffd5b60ff5f51602061365e5f395f51905f525416612b6a57565b63d93c066560e01b5f5260045ffd5b600c0b6c7fffffffffffffffffffffffff1981146120b4575f0390565b600c91820b910b03906c7fffffffffffffffffffffffff1982126c7fffffffffffffffffffffffff8313176120b457565b919082600c0b81600c0b818113612c36575f13612bf75750612be99192612b96565b6001600160681b0316905f90565b5f12612c1657612c079192612b96565b6001600160681b0316905f9190565b612c1f90612b79565b6001600160681b0316916001600160681b03169190565b50505090505f905f90565b6001600160a01b03165f81815260086020526040812054600c0b90811215612ead57612c7e670de0b6b3a764000061216a600493600c5490612984565b600154604051634c6afee560e11b81529260209184919082906001600160a01b03165afa801561238f575f90612e7a575b5f5460405163313ce56760e01b81529350602090849060049082906001600160a01b03165afa91821561238f57612cf6935f9361239a57506121e96121f09260ff926120e1565b905f905f600754905b818110612d0e57505050101590565b612d178161208c565b90545f85815260096020908152604080832060039590951b9390931c6001600160a01b031680835293905220549081612d55575b5050600101612cff565b5f9591929552600660205260405f2091600460405193612d7485612035565b60018060a01b038154168552602060018201549560018060a01b03871690818382015260c06002604083019560ff8b60a01c1687526001600160401b03606085019b60a81c168b5201546001600160401b03811660808401526001600160401b038160401c1660a084015260801c91015260405193848092634c6afee560e11b82525afa91821561238f575f92612e40575b506001946001600160401b0361233d612e3896956121f0612337670de0b6b3a76400009760ff612346985116936120e1565b93905f612d4b565b915092916020823d8211612e72575b81612e5c60209383612050565b810103126102dd57905191929091906001612e06565b3d9150612e4f565b506020823d602011612ea5575b81612e9460209383612050565b810103126102dd5760049151612caf565b3d9150612e87565b5050600190565b60405163a9059cbb60e01b60208201526001600160a01b039092166024830152604480830193909352918152612ef491612eef606483612050565b61353c565b565b6040516323b872dd60e01b60208201526001600160a01b039283166024820152929091166044830152606480830193909352918152612ef491612eef608483612050565b91909180600c0b83600c0b818112612c36575f12612f5d5750612be99192612b96565b5f13612f6d57612c079192612b96565b612f7690612b79565b6001600160681b0316916001600160681b031690565b5f51602061361e5f395f51905f52546001600160a01b03163303612fac57565b63118cdaa760e01b5f523360045260245ffd5b9190612fca8161212d565b1561345b576001600160a01b03165f81815260086020526040908190209051929190612ff58461201a565b54600c0b809352670de0b6b3a7640000613011600c5485612984565b05915f83121561345b57600154604051634c6afee560e11b81529390602090859060049082906001600160a01b03165afa93841561238f575f94613427575b505f935f5b60075481101561325a576130688161208c565b90545f87815260096020908152604080832060039590951b9390931c6001600160a01b03168083529390522054806130a5575b5050600101613055565b815f52600660205260405f206004604051916130c083612035565b60018060a01b0381541683526020600182015491600260018060a01b0384169182848801526001600160401b03604088019560ff8160a01c16875260a81c1660608801520154946001600160401b038616608082015260c060a08201966001600160401b038160401c16885260801c91015260405193848092634c6afee560e11b82525afa91821561238f575f92613216575b506001600160401b039a670de0b6b3a76400006123468c9561319360019a99989661318e61318760ff61319e9951166129c0565b91896120e1565b612102565b9e8f915116906120e1565b99825f52600960205260405f20868060a01b0385165f526020525f6040812055835f52600e60205260405f206131d5838254612120565b905560405191825260208201527f9850ab1af75177e4a9201c65a2cf7976d5d28e40ef63494b44366f86b2f9412e60408d878060a01b031692a4905f61309b565b9594939150916020863d8211613252575b8161323460209383612050565b810103126102dd579451939492939092916001600160401b03613153565b3d9150613227565b509093919592946004602060018060a01b035f54166040519283809263313ce56760e01b82525afa801561238f578361318e6132a46132ab936132fc955f91613408575b506129c0565b80976120e1565b916132b68388612436565b5f8112613401575b6132ce90610ec3600b5491612960565b600c0b90885f52600860205260405f206001600160681b0319815416836001600160681b0316179055612f3a565b906001600160681b03613314600a549382851661253c565b1690600160681b600160d01b0390613344906001600160681b03198516841760681c6001600160681b031661251c565b60681b169165ffffffffffff60d01b161717600a555f94613364816120a4565b82126133b6575b50509161339f60409261318e7f1547a878dc89ad3c367b6338b4be6a65a5dd74fb77ae044da1e8747ef1f4f62f95876120e1565b825194855260208501526001600160a01b031692a3565b7f1547a878dc89ad3c367b6338b4be6a65a5dd74fb77ae044da1e8747ef1f4f62f949295509261318e6133f661339f936133f16040976120a4565b612411565b96939550509261336b565b505f6132be565b613421915060203d6020116123d1576123bf8183612050565b5f61329e565b9093506020813d602011613453575b8161344360209383612050565b810103126102dd5751925f613050565b3d9150613436565b636ef5bcdd60e11b5f5260045ffd5b90811561240b57670de0b6b3a7640000810290808204670de0b6b3a764000014901517156120b4576001600160401b03916134a491612102565b1690565b906001600160401b03809116911601906001600160401b0382116120b457565b9392906001600160401b0316808511613506575050670de0b6b3a76400006134fe6124e3946001600160401b03809416906120e1565b0416906134a8565b670de0b6b3a764000091936001600160401b03613534819561352e6134fe956124e39a612411565b936134a8565b9516906120e1565b905f602091828151910182855af11561238f575f513d61358b57506001600160a01b0381163b155b61356b5750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b60011415613564565b60ff5f51602061369e5f395f51905f525460401c16156135b057565b631afcd79f60e31b5f5260045ffd5b906135e357508051156135d457602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580613614575b6135f4575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156135ec56fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbccd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212201189984636754d5be8b3be7a659b3fbb6344169e20e41080d78d35984713b6da64736f6c634300081e0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212202771f7f7dad3d8ede67ae8f577c03bd3e60ec50747437f1f8f2f69cbe58e014564736f6c634300081e0033","sourceMap":"172:458:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;172:458:14;;;;;;-1:-1:-1;;;;;172:458:14;;;;;;;;1500:62:31;;:::i;:::-;2627:22;;2623:91;;172:458:14;;;-1:-1:-1;;;;;;172:458:14;;;;;;-1:-1:-1;;;;;172:458:14;;3052:40:31;;172:458:14;3052:40:31;172:458:14;2623:91:31;2672:31;;;172:458:14;2672:31:31;172:458:14;;;;;2672:31:31;172:458:14;;;;;;;;;;-1:-1:-1;;172:458:14;;;;;;;;-1:-1:-1;;;;;172:458:14;;;;;;;;;;;;;;-1:-1:-1;;172:458:14;;;;1500:62:31;;:::i;:::-;172:458:14;;527:13;;;;;;;;;;;;;;;;;;;;172:458;527:13;;;;;172:458;;;;-1:-1:-1;;;;;172:458:14;;555:33;172:458;;555:33;172:458;;;527:13;172:458;;;;;;;;;527:13;172:458;;;;;;;;;;;;;;;;;-1:-1:-1;;172:458:14;;;;1500:62:31;;:::i;:::-;172:458:14;;;-1:-1:-1;;;;;;172:458:14;;;;-1:-1:-1;;;;;172:458:14;3052:40:31;172:458:14;;3052:40:31;172:458:14;1796:162:31;1710:6;172:458:14;-1:-1:-1;;;;;172:458:14;735:10:46;1855:23:31;1851:101;;1796:162::o;1851:101::-;1901:40;;;1710:6;1901:40;735:10:46;1901:40:31;172:458:14;;1710:6:31;1901:40","linkReferences":{}},"methodIdentifiers":{"deploy()":"775c300c","owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}}}},"contracts/ytLending/LendingMath.sol":{"LendingMath":{"abi":[],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"LendingMath\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"\\u501f\\u8d37\\u6c60\\u6570\\u5b66\\u8ba1\\u7b97\\u5e93\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ytLending/LendingMath.sol\":\"LendingMath\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"contracts/ytLending/LendingMath.sol\":{\"keccak256\":\"0xd3efd7fa25c05629276fef9f9b51e618671b4704557fd1bcf81489af55567865\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed23a2e6dacefcfc40e5f8fc6ce41c01dfe393b0159de5698dbe9a60fe8baf51\",\"dweb:/ipfs/QmQHcWYpnEBF8wLcFB99yJbnZxuHz9PS5FjxJUga5LQdBg\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220eacae22ea1c61864b0bf872dff41fae37d0ca1766e1bb4174a06da5cde01b81964736f6c634300081e0033","sourceMap":"123:5806:15:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"5f80fdfea2646970667358221220eacae22ea1c61864b0bf872dff41fae37d0ca1766e1bb4174a06da5cde01b81964736f6c634300081e0033","sourceMap":"123:5806:15:-:0;;","linkReferences":{}}}}},"contracts/ytLending/LendingStorage.sol":{"LendingStorage":{"abi":[{"type":"function","name":"assetConfigs","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"asset","type":"address","internalType":"address"},{"name":"priceFeed","type":"address","internalType":"address"},{"name":"decimals","type":"uint8","internalType":"uint8"},{"name":"borrowCollateralFactor","type":"uint64","internalType":"uint64"},{"name":"liquidateCollateralFactor","type":"uint64","internalType":"uint64"},{"name":"liquidationFactor","type":"uint64","internalType":"uint64"},{"name":"supplyCap","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"assetList","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"baseBorrowMin","inputs":[],"outputs":[{"name":"","type":"uint104","internalType":"uint104"}],"stateMutability":"view"},{"type":"function","name":"baseToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"baseTokenPriceFeed","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"borrowIndex","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"borrowKink","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"borrowPerSecondInterestRateBase","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"borrowPerSecondInterestRateSlopeHigh","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"borrowPerSecondInterestRateSlopeLow","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"collateralReserves","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"lastAccrualTime","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"storeFrontPriceFactor","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"supplyIndex","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"supplyKink","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"supplyPerSecondInterestRateBase","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"supplyPerSecondInterestRateSlopeHigh","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"supplyPerSecondInterestRateSlopeLow","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"targetReserves","inputs":[],"outputs":[{"name":"","type":"uint104","internalType":"uint104"}],"stateMutability":"view"},{"type":"function","name":"totalBorrowBase","inputs":[],"outputs":[{"name":"","type":"uint104","internalType":"uint104"}],"stateMutability":"view"},{"type":"function","name":"totalSupplyBase","inputs":[],"outputs":[{"name":"","type":"uint104","internalType":"uint104"}],"stateMutability":"view"},{"type":"function","name":"trackingIndexScale","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"userBasic","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"principal","type":"int104","internalType":"int104"}],"stateMutability":"view"},{"type":"function","name":"userCollateral","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"assetConfigs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"priceFeed\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"borrowCollateralFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidateCollateralFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidationFactor\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"supplyCap\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"assetList\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseBorrowMin\",\"outputs\":[{\"internalType\":\"uint104\",\"name\":\"\",\"type\":\"uint104\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseTokenPriceFeed\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"borrowIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"borrowKink\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"borrowPerSecondInterestRateBase\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"borrowPerSecondInterestRateSlopeHigh\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"borrowPerSecondInterestRateSlopeLow\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"collateralReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastAccrualTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storeFrontPriceFactor\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"supplyIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"supplyKink\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"supplyPerSecondInterestRateBase\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"supplyPerSecondInterestRateSlopeHigh\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"supplyPerSecondInterestRateSlopeLow\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetReserves\",\"outputs\":[{\"internalType\":\"uint104\",\"name\":\"\",\"type\":\"uint104\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalBorrowBase\",\"outputs\":[{\"internalType\":\"uint104\",\"name\":\"\",\"type\":\"uint104\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupplyBase\",\"outputs\":[{\"internalType\":\"uint104\",\"name\":\"\",\"type\":\"uint104\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trackingIndexScale\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userBasic\",\"outputs\":[{\"internalType\":\"int104\",\"name\":\"principal\",\"type\":\"int104\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userCollateral\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"LendingStorage\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"\\u501f\\u8d37\\u6c60\\u5b58\\u50a8\\u53d8\\u91cf\\u5b9a\\u4e49\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ytLending/LendingStorage.sol\":\"LendingStorage\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"contracts/ytLending/LendingConfiguration.sol\":{\"keccak256\":\"0xb865cb13a3cdd84c409188043405fce03159fef567296b4ad795eebfbe3ba1ce\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05b6f564c096a2dc656c9b06a6683b723314d01ec194f4a3f288c7d2ecca54f3\",\"dweb:/ipfs/QmYbAD9EDyGBCjHid2hP7m1qmd19bXR7h2hyDA8F1AP2ow\"]},\"contracts/ytLending/LendingStorage.sol\":{\"keccak256\":\"0xf484e95c1cded3561be679c2d631da2d75b1ecf4c8af24e52f0e8cfdd02c5f09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4fd7f2933b3a2680c6f4c59e0039aa34d03c1f1b1af000808a0cf4e6220facb4\",\"dweb:/ipfs/QmbTP3xvezfAuRfgPSD2vffdYjgaR3uXU1EWTN47mBbxy5\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"assetConfigs(address)":"7609d7f6","assetList(uint256)":"a0b4b301","baseBorrowMin()":"300e6beb","baseToken()":"c55dae63","baseTokenPriceFeed()":"e7dad6bd","borrowIndex()":"aa5af0fd","borrowKink()":"9241a561","borrowPerSecondInterestRateBase()":"7914acc7","borrowPerSecondInterestRateSlopeHigh()":"2a48cf12","borrowPerSecondInterestRateSlopeLow()":"2d05670b","collateralReserves(address)":"cf31a17e","lastAccrualTime()":"d7e72708","storeFrontPriceFactor()":"1f5954bd","supplyIndex()":"98f1bc12","supplyKink()":"a5b4ff79","supplyPerSecondInterestRateBase()":"94920cca","supplyPerSecondInterestRateSlopeHigh()":"804de71f","supplyPerSecondInterestRateSlopeLow()":"5a94b8d1","targetReserves()":"32176c49","totalBorrowBase()":"74471361","totalSupplyBase()":"278cc7a0","trackingIndexScale()":"aba7f15e","userBasic(address)":"dc4abafd","userCollateral(address,address)":"2b92a07d"}}}},"contracts/ytLp/core/YTPoolManager.sol":{"YTPoolManager":{"abi":[{"type":"function","name":"BASIS_POINTS_DIVISOR","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_COOLDOWN_DURATION","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"PRICE_PRECISION","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"YTLP_PRECISION","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"addLiquidityForAccount","inputs":[{"name":"_fundingAccount","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"},{"name":"_token","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_minUsdy","type":"uint256","internalType":"uint256"},{"name":"_minYtLP","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"aumAddition","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"aumDeduction","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"cooldownDuration","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAumInUsdy","inputs":[{"name":"_maximise","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPrice","inputs":[{"name":"_maximise","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"gov","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_ytVault","type":"address","internalType":"address"},{"name":"_usdy","type":"address","internalType":"address"},{"name":"_ytLP","type":"address","internalType":"address"},{"name":"_cooldownDuration","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isHandler","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"lastAddedAt","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"removeLiquidityForAccount","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_tokenOut","type":"address","internalType":"address"},{"name":"_ytLPAmount","type":"uint256","internalType":"uint256"},{"name":"_minOut","type":"uint256","internalType":"uint256"},{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"setAumAdjustment","inputs":[{"name":"_addition","type":"uint256","internalType":"uint256"},{"name":"_deduction","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setCooldownDuration","inputs":[{"name":"_duration","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setGov","inputs":[{"name":"_gov","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setHandler","inputs":[{"name":"_handler","type":"address","internalType":"address"},{"name":"_isActive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"usdy","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"ytLP","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"ytVault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"AddLiquidity","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"aumInUsdy","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ytLPSupply","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"usdyAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"mintAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CooldownDurationSet","inputs":[{"name":"duration","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"HandlerSet","inputs":[{"name":"handler","type":"address","indexed":true,"internalType":"address"},{"name":"isActive","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RemoveLiquidity","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"ytLPAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"aumInUsdy","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ytLPSupply","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"usdyAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"CooldownNotPassed","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"Forbidden","inputs":[]},{"type":"error","name":"InsufficientOutput","inputs":[]},{"type":"error","name":"InvalidAddress","inputs":[]},{"type":"error","name":"InvalidAmount","inputs":[]},{"type":"error","name":"InvalidDuration","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"PrivateMode","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CooldownNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Forbidden\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientOutput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PrivateMode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"aumInUsdy\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ytLPSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"usdyAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"AddLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"CooldownDurationSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"handler\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"}],\"name\":\"HandlerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ytLPAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"aumInUsdy\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ytLPSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"usdyAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"RemoveLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BASIS_POINTS_DIVISOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_COOLDOWN_DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PRICE_PRECISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"YTLP_PRECISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_fundingAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minUsdy\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minYtLP\",\"type\":\"uint256\"}],\"name\":\"addLiquidityForAccount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"aumAddition\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"aumDeduction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cooldownDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_maximise\",\"type\":\"bool\"}],\"name\":\"getAumInUsdy\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_maximise\",\"type\":\"bool\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gov\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ytVault\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_usdy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_ytLP\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_cooldownDuration\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isHandler\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"lastAddedAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_ytLPAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"removeLiquidityForAccount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_addition\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_deduction\",\"type\":\"uint256\"}],\"name\":\"setAumAdjustment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"}],\"name\":\"setCooldownDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gov\",\"type\":\"address\"}],\"name\":\"setGov\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_handler\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isActive\",\"type\":\"bool\"}],\"name\":\"setHandler\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"usdy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ytLP\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ytVault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"UUPS\\u53ef\\u5347\\u7ea7\\u5408\\u7ea6\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"getAumInUsdy(bool)\":{\"params\":{\"_maximise\":\"true=\\u4f7f\\u7528\\u6700\\u5927\\u4ef7\\u683c(\\u6dfb\\u52a0\\u6d41\\u52a8\\u6027\\u65f6), false=\\u4f7f\\u7528\\u6700\\u5c0f\\u4ef7\\u683c(\\u79fb\\u9664\\u6d41\\u52a8\\u6027\\u65f6)\"},\"returns\":{\"_0\":\"USDY\\u8ba1\\u4ef7\\u7684\\u603b\\u4ef7\\u503c\"}},\"getPrice(bool)\":{\"params\":{\"_maximise\":\"\\u662f\\u5426\\u53d6\\u6700\\u5927\\u503c\"},\"returns\":{\"_0\":\"ytLP\\u4ef7\\u683c\\uff0818\\u4f4d\\u7cbe\\u5ea6\\uff09\"}},\"initialize(address,address,address,uint256)\":{\"params\":{\"_cooldownDuration\":\"\\u51b7\\u5374\\u65f6\\u95f4\\uff08\\u79d2\\uff09\",\"_usdy\":\"USDY\\u4ee3\\u5e01\\u5730\\u5740\",\"_ytLP\":\"ytLP\\u4ee3\\u5e01\\u5730\\u5740\",\"_ytVault\":\"YTVault\\u5408\\u7ea6\\u5730\\u5740\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"\\u9884\\u7559\\u5b58\\u50a8\\u7a7a\\u95f4\\uff0c\\u7528\\u4e8e\\u672a\\u6765\\u5347\\u7ea7\\u65f6\\u6dfb\\u52a0\\u65b0\\u7684\\u72b6\\u6001\\u53d8\\u91cf 50\\u4e2aslot = 50 * 32 bytes = 1600 bytes\"}},\"title\":\"YTPoolManager\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addLiquidityForAccount(address,address,address,uint256,uint256,uint256)\":{\"notice\":\"\\u4e3a\\u6307\\u5b9a\\u8d26\\u6237\\u6dfb\\u52a0\\u6d41\\u52a8\\u6027\\uff08Handler\\u8c03\\u7528\\uff09\"},\"getAumInUsdy(bool)\":{\"notice\":\"\\u83b7\\u53d6\\u6c60\\u5b50\\u603b\\u4ef7\\u503c\\uff08AUM\\uff09\"},\"getPrice(bool)\":{\"notice\":\"\\u83b7\\u53d6ytLP\\u4ef7\\u683c\"},\"initialize(address,address,address,uint256)\":{\"notice\":\"\\u521d\\u59cb\\u5316\\u5408\\u7ea6\"},\"removeLiquidityForAccount(address,address,uint256,uint256,address)\":{\"notice\":\"\\u4e3a\\u6307\\u5b9a\\u8d26\\u6237\\u79fb\\u9664\\u6d41\\u52a8\\u6027\\uff08Handler\\u8c03\\u7528\\uff09\"}},\"notice\":\"\\u7ba1\\u7406ytLP\\u7684\\u94f8\\u9020\\u548c\\u8d4e\\u56de\\uff0c\\u8ba1\\u7b97\\u6c60\\u5b50AUM\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ytLp/core/YTPoolManager.sol\":\"YTPoolManager\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IUSDY.sol\":{\"keccak256\":\"0xaade47070265f223011892bc2430ecb819edb10b1a46e41ea2c69f3d8cc84816\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a7501875c15baa98120e7b5607953b1874e2a0e80ac521e97d2bc834d590b6ef\",\"dweb:/ipfs/QmYJ8CkJV3XgPjGUBx6EKV4mgEUqRHeZGna193MrThpkjc\"]},\"contracts/interfaces/IYTLPToken.sol\":{\"keccak256\":\"0xd45ede40a52600b47b7a3fb2851f40e57ee60bf6ac4b64a2f534a8c2c09fc4ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://751553bdd966010f2f8f11ae6c6abcff57b8671562dbac516dd89dc5042a1352\",\"dweb:/ipfs/QmfMeQqUTcEQJJCgiT54SFiXQ3dkojrZkqQjkhR9QDBXDo\"]},\"contracts/interfaces/IYTVault.sol\":{\"keccak256\":\"0xd0d67c7560f2c46466a2575b3da8a3253bc955c1023abaebd29e2f7ec1cf0b42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c830f6a2e31c80a1c74570613baf4e653eca1425de20a2869ff38fc77fae3800\",\"dweb:/ipfs/QmbLR7bMSyLqAMMuHMDC8y9B7e4f8tDGpmmS8RyrvSk12z\"]},\"contracts/ytLp/core/YTPoolManager.sol\":{\"keccak256\":\"0x0c0834f94b96958d058cf828759fb4f1b6769d2a1c86ff833710415bd08b1403\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d00b7152ffeb36ac5c6bb01d120e2f092b3892d96b5dc116f771d7ca32b0a123\",\"dweb:/ipfs/QmRbb84Ls76KLWJRtoyee5ks9asapVnGrbZdJYRgfcSXtL\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x574a7451e42724f7de29e2855c392a8a5020acd695169466a18459467d719d63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bc189f63b639ee173dd7b6fecc39baf7113bf161776aea22b34c57fdd1872ec\",\"dweb:/ipfs/QmZAf2VtjDLRULqjJkde6LNsxAg12tUqpPqgUQQZbAjgtZ\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8150ceb4ac947e8a442b2a9c017e01e880b2be2dd958f1fa9bc405f4c5a86508\",\"dweb:/ipfs/QmbcBmFX66AY6Kbhnd5gx7zpkgqnUafo43XnmayAM7zVdB\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60a08060405234602957306080526116f3908161002e8239608051818181610ba30152610c730152f35b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c908163126082cf146112e15750806312d43a51146112ba57806317eb2a1514610f06578063196b68cb14610ee85780631e9049cf14610eca578063275558ff14610ea75780633526931514610e8957806346ea87af14610e4a5780634f1ef28614610bf757806352d1902d14610b9057806371d597ad146106cc57806384a08e63146106a35780638b770e111461066a5780639116c4ae1461062957806395082d2514610601578063966be0751461058057806398d506e9146105575780639cb7de4b146104cb578063ad3cb1cc1461046f578063b172bb0c14610451578063cef6ef271461042d578063cf756fdf146101f3578063cfad57a214610188578063e245b5af1461015c5763e348031b14610131575f80fd5b346101595780600319360112610159576003546040516001600160a01b039091168152602090f35b80fd5b503461015957602036600319011261015957602061018061017b61138f565b611496565b604051908152f35b5034610159576020366003190112610159576101a26112fb565b8154906001600160a01b03821633036101e4576001600160a01b03169081156101d5576001600160a01b03191617815580f35b63e6c4247b60e01b8352600483fd5b631dd2188d60e31b8352600483fd5b50346101595760803660031901126101595761020d6112fb565b610215611311565b61021d611327565b606435915f51602061169e5f395f51905f52549360ff8560401c16159467ffffffffffffffff811680159081610425575b600114908161041b575b159081610412575b506104035767ffffffffffffffff1981166001175f51602061169e5f395f51905f5255856103d7575b506001600160a01b0316801580156103c6575b80156103b5575b6103a6576202a3008411610397576102b961157c565b6102c161157c565b60015f51602061167e5f395f51905f52556102da61157c565b336001600160601b0360a01b8754161786556001600160601b0360a01b600154161760015560018060a01b03166001600160601b0360a01b600254161760025560018060a01b03166001600160601b0360a01b600354161760035560045561033f5780f35b68ff0000000000000000195f51602061169e5f395f51905f5254165f51602061169e5f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b637616640160e01b8652600486fd5b63e6c4247b60e01b8652600486fd5b506001600160a01b038316156102a3565b506001600160a01b0382161561029c565b68ffffffffffffffffff191668010000000000000001175f51602061169e5f395f51905f52555f610289565b63f92ee8a960e01b8752600487fd5b9050155f610260565b303b159150610258565b87915061024e565b503461015957602036600319011261015957602061018061044c61138f565b6113cc565b50346101595780600319360112610159576020600854604051908152f35b50346101595780600319360112610159576040805161048e828261133d565b6005815260208101640352e302e360dc1b81528251938492602084525180928160208601528585015e828201840152601f01601f19168101030190f35b5034610159576040366003190112610159576104e56112fb565b602435908115158092036105535782546001600160a01b031633036101e45760207f6cc67219f62a9e5d66cc9f2a62e16634cffcf48facd698a829bafcc1ad2c5c839160018060a01b031692838552600682526040852060ff1981541660ff8316179055604051908152a280f35b8280fd5b50346101595780600319360112610159576002546040516001600160a01b039091168152602090f35b5034610159576020366003190112610159578054600435906001600160a01b031633036105f2576202a30081116105e3576020817f22a843a6490ffd6fc66fbaf9d670f2dd193309268a6305732d1d4055d96af09692600455604051908152a180f35b637616640160e01b8252600482fd5b631dd2188d60e31b8252600482fd5b503461015957806003193601126101595760206040516c0c9f2c9cd04674edea400000008152f35b50346101595760403660031901126101595780546001600160a01b0316330361065b5760043560075560243560085580f35b631dd2188d60e31b8152600490fd5b5034610159576020366003190112610159576020906040906001600160a01b036106926112fb565b168152600583522054604051908152f35b50346101595780600319360112610159576001546040516001600160a01b039091168152602090f35b50346101595760a0366003190112610159576106e66112fb565b906106ef611311565b60843592604435916001600160a01b0385168503610b8c57338452600660205260ff6040852054161580610b78575b610b695761072a611544565b8215610b5a576001600160a01b038216808552600560205260408520546004549193916107569161139e565b4210610b4b57600154604051635d59f4f360e11b81526004810187905290602090829060249082906001600160a01b03165afa8015610b40578690610b0c575b6107a491506007549061139e565b60085480821115610b03576107b8916113bf565b955b6003546040516318160ddd60e01b815291906001600160a01b0316602083600481845afa928315610a6b578893610acf575b50610800836107fb8b8a611465565b611478565b93813b15610a7657604051632770a7eb60e21b81526001600160a01b03919091166004820152602481018890529088908290604490829084905af18015610a6b57908891610aba575b50506002546040516370a0823160e01b81523060048201526001600160a01b0390911690602081602481855afa908115610aaf5790899392918491610a7a575b508086116109fe575b505060025460015460405163a9059cbb60e01b6020808301919091526001600160a01b03928316602483015260448083018990528252936109209390926108e59291166108e060648361133d565b6115a7565b600154604051633d33258360e01b81526001600160a01b03898116600483015292831660248201529a8b939190921691839182906044820190565b03925af19687156109f15781976109b9575b5060643587106109aa5750604080519586526020868101989098528501526060840152608083018490526001600160a01b0316917f87b9679bb9a4944bafa98c267e7cd4a00ab29fed48afdefae25f0fca5da27940908060a081015b0390a360015f51602061167e5f395f51905f5255604051908152f35b63bb2875c360e01b8152600490fd5b9096506020813d6020116109e9575b816109d56020938361133d565b810103126109e55751955f610932565b5f80fd5b3d91506109c8565b50604051903d90823e3d90fd5b610a0b91929350856113bf565b813b15610a76576040516340c10f1960e01b815230600482015260248101919091529088908290604490829084905af18015610a6b57908891610a52575b80929192610892565b81610a5c9161133d565b610a6757865f610a49565b8680fd5b6040513d8a823e3d90fd5b8880fd5b9350506020833d602011610aa7575b81610a966020938361133d565b810103126109e5578892515f610889565b3d9150610a89565b6040513d8b823e3d90fd5b81610ac49161133d565b610a6757865f610849565b9092506020813d602011610afb575b81610aeb6020938361133d565b810103126109e55751915f6107ec565b3d9150610ade565b505084956107ba565b506020813d602011610b38575b81610b266020938361133d565b810103126109e5576107a49051610796565b3d9150610b19565b6040513d88823e3d90fd5b632792526560e21b8552600485fd5b63162908e360e11b8452600484fd5b631dd2188d60e31b8452600484fd5b5083546001600160a01b031633141561071e565b8380fd5b50346101595780600319360112610159577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610be85760206040515f51602061165e5f395f51905f528152f35b63703e46dd60e11b8152600490fd5b50604036600319011261015957610c0c6112fb565b6024359067ffffffffffffffff821161055357366023830112156105535781600401359083610c3a83611373565b93610c48604051958661133d565b8385526020850193366024828401011161055357806024602093018637850101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115610e28575b50610e195783546001600160a01b03163303610b69576040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa869181610de5575b50610cf757634c9c8ce360e01b86526004859052602486fd5b93845f51602061165e5f395f51905f52879603610dd35750823b15610dc1575f51602061165e5f395f51905f5280546001600160a01b031916821790558491907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8380a2805115610da657610d9a9382915190845af43d15610d9e573d91610d7e83611373565b92610d8c604051948561133d565b83523d85602085013e6115ff565b5080f35b6060916115ff565b5050505034610db25780f35b63b398979f60e01b8152600490fd5b634c9c8ce360e01b8552600452602484fd5b632a87526960e21b8652600452602485fd5b9091506020813d602011610e11575b81610e016020938361133d565b81010312610a675751905f610cde565b3d9150610df4565b63703e46dd60e11b8452600484fd5b5f51602061165e5f395f51905f52546001600160a01b0316141590505f610c9e565b50346101595760203660031901126101595760209060ff906040906001600160a01b03610e756112fb565b168152600684522054166040519015158152f35b50346101595780600319360112610159576020600454604051908152f35b50346101595780600319360112610159576020604051670de0b6b3a76400008152f35b503461015957806003193601126101595760206040516202a3008152f35b50346101595780600319360112610159576020600754604051908152f35b50346109e55760c03660031901126109e557610f206112fb565b90610f29611311565b91610f32611327565b9260643592335f52600660205260ff60405f20541615806112a6575b61129757610f5a611544565b831561128857602493602060018060a01b036001541660405196878092635d59f4f360e11b8252600160048301525afa9485156111b0575f95611252575b50600754600495610fa9919061139e565b6008548082111561124957610fbd916113bf565b905b6003546040516318160ddd60e01b81529660209188919082906001600160a01b03165afa9586156111b0575f96611212575b506001546040516323b872dd60e01b6020828101919091526001600160a01b0397881660248301529187166044820152606480820184905281525f98968716966110839161104a9061104460848261133d565b896115a7565b600154604051630177e3b360e51b81526001600160a01b0392831660048201523060248201529a8b939190921691839182906044820190565b03925af19687156111b0575f976111de575b5060843587106111bb57856111ca5786955b60a43587106111bb576003546001600160a01b031697883b156109e5576040516340c10f1960e01b81526001600160a01b038716600482015260248101899052985f908a90604490829084905af19182156111b0576020998993611172575b506001600160a01b0390961680865260058a526040958690204290558551938452602084019490945293820194909452606081019290925260808201929092527f38dc38b96482be64113daffd8d464ebda93e856b70ccfc605e69ccf892ab981e908060a0810161098e565b7f38dc38b96482be64113daffd8d464ebda93e856b70ccfc605e69ccf892ab981e9650906111a55f61098e95949361133d565b5f9650909192611106565b6040513d5f823e3d90fd5b63bb2875c360e01b5f5260045ffd5b6111d8826107fb888a611465565b956110a7565b9096506020813d60201161120a575b816111fa6020938361133d565b810103126109e55751955f611095565b3d91506111ed565b9695506020873d602011611241575b8161122e6020938361133d565b810103126109e557955194956020610ff1565b3d9150611221565b50505f90610fbf565b94506020853d602011611280575b8161126d6020938361133d565b810103126109e557935193610fa9610f98565b3d9150611260565b63162908e360e11b5f5260045ffd5b631dd2188d60e31b5f5260045ffd5b505f546001600160a01b0316331415610f4e565b346109e5575f3660031901126109e5575f546040516001600160a01b039091168152602090f35b346109e5575f3660031901126109e5578061271060209252f35b600435906001600160a01b03821682036109e557565b602435906001600160a01b03821682036109e557565b604435906001600160a01b03821682036109e557565b90601f8019910116810190811067ffffffffffffffff82111761135f57604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161135f57601f01601f191660200190565b6004359081151582036109e557565b919082018092116113ab57565b634e487b7160e01b5f52601160045260245ffd5b919082039182116113ab57565b600154604051635d59f4f360e11b81529115156004830152602090829060249082906001600160a01b03165afa80156111b0575f90611431575b61141491506007549061139e565b6008548082111561142b57611428916113bf565b90565b50505f90565b506020813d60201161145d575b8161144b6020938361133d565b810103126109e5576114149051611406565b3d915061143e565b818102929181159184041417156113ab57565b8115611482570490565b634e487b7160e01b5f52601260045260245ffd5b61149f906113cc565b6003546040516318160ddd60e01b815290602090829060049082906001600160a01b03165afa9081156111b0575f91611512575b50801561150457670de0b6b3a7640000820291808304670de0b6b3a764000014901517156113ab5761142891611478565b5050670de0b6b3a764000090565b90506020813d60201161153c575b8161152d6020938361133d565b810103126109e557515f6114d3565b3d9150611520565b60025f51602061167e5f395f51905f52541461156d5760025f51602061167e5f395f51905f5255565b633ee5aeb560e01b5f5260045ffd5b60ff5f51602061169e5f395f51905f525460401c161561159857565b631afcd79f60e31b5f5260045ffd5b905f602091828151910182855af1156111b0575f513d6115f657506001600160a01b0381163b155b6115d65750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b600114156115cf565b90611623575080511561161457602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580611654575b611634575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561162c56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220638cdb4a7f9d9e2c59f9bd333c148c67f91283eefe173c433e1ab19a7234804c64736f6c634300081e0033","sourceMap":"655:7884:17:-:0;;;;;;;1171:4:26;1163:13;;655:7884:17;;;;;;1163:13:26;655:7884:17;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"6080806040526004361015610012575f80fd5b5f905f3560e01c908163126082cf146112e15750806312d43a51146112ba57806317eb2a1514610f06578063196b68cb14610ee85780631e9049cf14610eca578063275558ff14610ea75780633526931514610e8957806346ea87af14610e4a5780634f1ef28614610bf757806352d1902d14610b9057806371d597ad146106cc57806384a08e63146106a35780638b770e111461066a5780639116c4ae1461062957806395082d2514610601578063966be0751461058057806398d506e9146105575780639cb7de4b146104cb578063ad3cb1cc1461046f578063b172bb0c14610451578063cef6ef271461042d578063cf756fdf146101f3578063cfad57a214610188578063e245b5af1461015c5763e348031b14610131575f80fd5b346101595780600319360112610159576003546040516001600160a01b039091168152602090f35b80fd5b503461015957602036600319011261015957602061018061017b61138f565b611496565b604051908152f35b5034610159576020366003190112610159576101a26112fb565b8154906001600160a01b03821633036101e4576001600160a01b03169081156101d5576001600160a01b03191617815580f35b63e6c4247b60e01b8352600483fd5b631dd2188d60e31b8352600483fd5b50346101595760803660031901126101595761020d6112fb565b610215611311565b61021d611327565b606435915f51602061169e5f395f51905f52549360ff8560401c16159467ffffffffffffffff811680159081610425575b600114908161041b575b159081610412575b506104035767ffffffffffffffff1981166001175f51602061169e5f395f51905f5255856103d7575b506001600160a01b0316801580156103c6575b80156103b5575b6103a6576202a3008411610397576102b961157c565b6102c161157c565b60015f51602061167e5f395f51905f52556102da61157c565b336001600160601b0360a01b8754161786556001600160601b0360a01b600154161760015560018060a01b03166001600160601b0360a01b600254161760025560018060a01b03166001600160601b0360a01b600354161760035560045561033f5780f35b68ff0000000000000000195f51602061169e5f395f51905f5254165f51602061169e5f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b637616640160e01b8652600486fd5b63e6c4247b60e01b8652600486fd5b506001600160a01b038316156102a3565b506001600160a01b0382161561029c565b68ffffffffffffffffff191668010000000000000001175f51602061169e5f395f51905f52555f610289565b63f92ee8a960e01b8752600487fd5b9050155f610260565b303b159150610258565b87915061024e565b503461015957602036600319011261015957602061018061044c61138f565b6113cc565b50346101595780600319360112610159576020600854604051908152f35b50346101595780600319360112610159576040805161048e828261133d565b6005815260208101640352e302e360dc1b81528251938492602084525180928160208601528585015e828201840152601f01601f19168101030190f35b5034610159576040366003190112610159576104e56112fb565b602435908115158092036105535782546001600160a01b031633036101e45760207f6cc67219f62a9e5d66cc9f2a62e16634cffcf48facd698a829bafcc1ad2c5c839160018060a01b031692838552600682526040852060ff1981541660ff8316179055604051908152a280f35b8280fd5b50346101595780600319360112610159576002546040516001600160a01b039091168152602090f35b5034610159576020366003190112610159578054600435906001600160a01b031633036105f2576202a30081116105e3576020817f22a843a6490ffd6fc66fbaf9d670f2dd193309268a6305732d1d4055d96af09692600455604051908152a180f35b637616640160e01b8252600482fd5b631dd2188d60e31b8252600482fd5b503461015957806003193601126101595760206040516c0c9f2c9cd04674edea400000008152f35b50346101595760403660031901126101595780546001600160a01b0316330361065b5760043560075560243560085580f35b631dd2188d60e31b8152600490fd5b5034610159576020366003190112610159576020906040906001600160a01b036106926112fb565b168152600583522054604051908152f35b50346101595780600319360112610159576001546040516001600160a01b039091168152602090f35b50346101595760a0366003190112610159576106e66112fb565b906106ef611311565b60843592604435916001600160a01b0385168503610b8c57338452600660205260ff6040852054161580610b78575b610b695761072a611544565b8215610b5a576001600160a01b038216808552600560205260408520546004549193916107569161139e565b4210610b4b57600154604051635d59f4f360e11b81526004810187905290602090829060249082906001600160a01b03165afa8015610b40578690610b0c575b6107a491506007549061139e565b60085480821115610b03576107b8916113bf565b955b6003546040516318160ddd60e01b815291906001600160a01b0316602083600481845afa928315610a6b578893610acf575b50610800836107fb8b8a611465565b611478565b93813b15610a7657604051632770a7eb60e21b81526001600160a01b03919091166004820152602481018890529088908290604490829084905af18015610a6b57908891610aba575b50506002546040516370a0823160e01b81523060048201526001600160a01b0390911690602081602481855afa908115610aaf5790899392918491610a7a575b508086116109fe575b505060025460015460405163a9059cbb60e01b6020808301919091526001600160a01b03928316602483015260448083018990528252936109209390926108e59291166108e060648361133d565b6115a7565b600154604051633d33258360e01b81526001600160a01b03898116600483015292831660248201529a8b939190921691839182906044820190565b03925af19687156109f15781976109b9575b5060643587106109aa5750604080519586526020868101989098528501526060840152608083018490526001600160a01b0316917f87b9679bb9a4944bafa98c267e7cd4a00ab29fed48afdefae25f0fca5da27940908060a081015b0390a360015f51602061167e5f395f51905f5255604051908152f35b63bb2875c360e01b8152600490fd5b9096506020813d6020116109e9575b816109d56020938361133d565b810103126109e55751955f610932565b5f80fd5b3d91506109c8565b50604051903d90823e3d90fd5b610a0b91929350856113bf565b813b15610a76576040516340c10f1960e01b815230600482015260248101919091529088908290604490829084905af18015610a6b57908891610a52575b80929192610892565b81610a5c9161133d565b610a6757865f610a49565b8680fd5b6040513d8a823e3d90fd5b8880fd5b9350506020833d602011610aa7575b81610a966020938361133d565b810103126109e5578892515f610889565b3d9150610a89565b6040513d8b823e3d90fd5b81610ac49161133d565b610a6757865f610849565b9092506020813d602011610afb575b81610aeb6020938361133d565b810103126109e55751915f6107ec565b3d9150610ade565b505084956107ba565b506020813d602011610b38575b81610b266020938361133d565b810103126109e5576107a49051610796565b3d9150610b19565b6040513d88823e3d90fd5b632792526560e21b8552600485fd5b63162908e360e11b8452600484fd5b631dd2188d60e31b8452600484fd5b5083546001600160a01b031633141561071e565b8380fd5b50346101595780600319360112610159577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610be85760206040515f51602061165e5f395f51905f528152f35b63703e46dd60e11b8152600490fd5b50604036600319011261015957610c0c6112fb565b6024359067ffffffffffffffff821161055357366023830112156105535781600401359083610c3a83611373565b93610c48604051958661133d565b8385526020850193366024828401011161055357806024602093018637850101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115610e28575b50610e195783546001600160a01b03163303610b69576040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa869181610de5575b50610cf757634c9c8ce360e01b86526004859052602486fd5b93845f51602061165e5f395f51905f52879603610dd35750823b15610dc1575f51602061165e5f395f51905f5280546001600160a01b031916821790558491907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8380a2805115610da657610d9a9382915190845af43d15610d9e573d91610d7e83611373565b92610d8c604051948561133d565b83523d85602085013e6115ff565b5080f35b6060916115ff565b5050505034610db25780f35b63b398979f60e01b8152600490fd5b634c9c8ce360e01b8552600452602484fd5b632a87526960e21b8652600452602485fd5b9091506020813d602011610e11575b81610e016020938361133d565b81010312610a675751905f610cde565b3d9150610df4565b63703e46dd60e11b8452600484fd5b5f51602061165e5f395f51905f52546001600160a01b0316141590505f610c9e565b50346101595760203660031901126101595760209060ff906040906001600160a01b03610e756112fb565b168152600684522054166040519015158152f35b50346101595780600319360112610159576020600454604051908152f35b50346101595780600319360112610159576020604051670de0b6b3a76400008152f35b503461015957806003193601126101595760206040516202a3008152f35b50346101595780600319360112610159576020600754604051908152f35b50346109e55760c03660031901126109e557610f206112fb565b90610f29611311565b91610f32611327565b9260643592335f52600660205260ff60405f20541615806112a6575b61129757610f5a611544565b831561128857602493602060018060a01b036001541660405196878092635d59f4f360e11b8252600160048301525afa9485156111b0575f95611252575b50600754600495610fa9919061139e565b6008548082111561124957610fbd916113bf565b905b6003546040516318160ddd60e01b81529660209188919082906001600160a01b03165afa9586156111b0575f96611212575b506001546040516323b872dd60e01b6020828101919091526001600160a01b0397881660248301529187166044820152606480820184905281525f98968716966110839161104a9061104460848261133d565b896115a7565b600154604051630177e3b360e51b81526001600160a01b0392831660048201523060248201529a8b939190921691839182906044820190565b03925af19687156111b0575f976111de575b5060843587106111bb57856111ca5786955b60a43587106111bb576003546001600160a01b031697883b156109e5576040516340c10f1960e01b81526001600160a01b038716600482015260248101899052985f908a90604490829084905af19182156111b0576020998993611172575b506001600160a01b0390961680865260058a526040958690204290558551938452602084019490945293820194909452606081019290925260808201929092527f38dc38b96482be64113daffd8d464ebda93e856b70ccfc605e69ccf892ab981e908060a0810161098e565b7f38dc38b96482be64113daffd8d464ebda93e856b70ccfc605e69ccf892ab981e9650906111a55f61098e95949361133d565b5f9650909192611106565b6040513d5f823e3d90fd5b63bb2875c360e01b5f5260045ffd5b6111d8826107fb888a611465565b956110a7565b9096506020813d60201161120a575b816111fa6020938361133d565b810103126109e55751955f611095565b3d91506111ed565b9695506020873d602011611241575b8161122e6020938361133d565b810103126109e557955194956020610ff1565b3d9150611221565b50505f90610fbf565b94506020853d602011611280575b8161126d6020938361133d565b810103126109e557935193610fa9610f98565b3d9150611260565b63162908e360e11b5f5260045ffd5b631dd2188d60e31b5f5260045ffd5b505f546001600160a01b0316331415610f4e565b346109e5575f3660031901126109e5575f546040516001600160a01b039091168152602090f35b346109e5575f3660031901126109e5578061271060209252f35b600435906001600160a01b03821682036109e557565b602435906001600160a01b03821682036109e557565b604435906001600160a01b03821682036109e557565b90601f8019910116810190811067ffffffffffffffff82111761135f57604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161135f57601f01601f191660200190565b6004359081151582036109e557565b919082018092116113ab57565b634e487b7160e01b5f52601160045260245ffd5b919082039182116113ab57565b600154604051635d59f4f360e11b81529115156004830152602090829060249082906001600160a01b03165afa80156111b0575f90611431575b61141491506007549061139e565b6008548082111561142b57611428916113bf565b90565b50505f90565b506020813d60201161145d575b8161144b6020938361133d565b810103126109e5576114149051611406565b3d915061143e565b818102929181159184041417156113ab57565b8115611482570490565b634e487b7160e01b5f52601260045260245ffd5b61149f906113cc565b6003546040516318160ddd60e01b815290602090829060049082906001600160a01b03165afa9081156111b0575f91611512575b50801561150457670de0b6b3a7640000820291808304670de0b6b3a764000014901517156113ab5761142891611478565b5050670de0b6b3a764000090565b90506020813d60201161153c575b8161152d6020938361133d565b810103126109e557515f6114d3565b3d9150611520565b60025f51602061167e5f395f51905f52541461156d5760025f51602061167e5f395f51905f5255565b633ee5aeb560e01b5f5260045ffd5b60ff5f51602061169e5f395f51905f525460401c161561159857565b631afcd79f60e31b5f5260045ffd5b905f602091828151910182855af1156111b0575f513d6115f657506001600160a01b0381163b155b6115d65750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b600114156115cf565b90611623575080511561161457602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580611654575b611634575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561162c56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220638cdb4a7f9d9e2c59f9bd333c148c67f91283eefe173c433e1ab19a7234804c64736f6c634300081e0033","sourceMap":"655:7884:17:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1296:19;655:7884;;;-1:-1:-1;;;;;655:7884:17;;;;;;;;;;;;;;;;;;-1:-1:-1;;655:7884:17;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;655:7884:17;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;655:7884:17;;2151:10;:17;2147:41;;-1:-1:-1;;;;;655:7884:17;;3423:18;;3419:47;;-1:-1:-1;;;;;;655:7884:17;;;;;;3419:47;-1:-1:-1;;;3450:16:17;;655:7884;2807:16;3450;2147:41;-1:-1:-1;;;2177:11:17;;655:7884;2305:11;2177;655:7884;;;;;;;-1:-1:-1;;655:7884:17;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;655:7884:17;;;;;;;4301:16:25;655:7884:17;;;;4724:16:25;;:34;;;;655:7884:17;;4788:16:25;:50;;;;655:7884:17;4853:13:25;:30;;;;655:7884:17;4849:91:25;;;-1:-1:-1;;655:7884:17;;;;-1:-1:-1;;;;;;;;;;;655:7884:17;;4977:67:25;;655:7884:17;-1:-1:-1;;;;;;655:7884:17;2730:22;;:45;;;;655:7884;2730:68;;;;655:7884;2726:97;;1200:8;2837:41;;2833:71;;6891:76:25;;:::i;:::-;;;:::i;:::-;655:7884:17;-1:-1:-1;;;;;;;;;;;655:7884:17;6891:76:25;;:::i;:::-;3006:10:17;-1:-1:-1;;;;;655:7884:17;;;;;;;;-1:-1:-1;;;;;655:7884:17;;;;;;;;;;;;;;-1:-1:-1;;;;;655:7884:17;;3054:12;655:7884;;;3054:12;655:7884;;;;;;;-1:-1:-1;;;;;655:7884:17;;3076:12;655:7884;;;3076:12;655:7884;;;5064:101:25;;655:7884:17;;5064:101:25;655:7884:17;;-1:-1:-1;;;;;;;;;;;655:7884:17;;-1:-1:-1;;;;;;;;;;;655:7884:17;5140:14:25;655:7884:17;;;;;;5140:14:25;655:7884:17;;2833:71;-1:-1:-1;;;2887:17:17;;655:7884;3799:17;2887;2726:97;-1:-1:-1;;;2807:16:17;;655:7884;2807:16;;2730:68;-1:-1:-1;;;;;;655:7884:17;;2779:19;2730:68;;:45;-1:-1:-1;;;;;;655:7884:17;;2756:19;2730:45;;4977:67:25;-1:-1:-1;;655:7884:17;;;-1:-1:-1;;;;;;;;;;;655:7884:17;4977:67:25;;;4849:91;-1:-1:-1;;;4906:23:25;;655:7884:17;4906:23:25;;4853:30;4870:13;;;4853:30;;;4788:50;4816:4;4808:25;:30;;-1:-1:-1;4788:50:25;;4724:34;;;-1:-1:-1;4724:34:25;;655:7884:17;;;;;;;-1:-1:-1;;655:7884:17;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;1500:27;655:7884;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;655:7884:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;655:7884:17;;;;;;;;;;;;;;-1:-1:-1;;655:7884:17;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;655:7884:17;2151:10;:17;2147:41;;655:7884;3630:31;655:7884;;;;;;;;;;;3584:9;655:7884;;;;;;;;;;;;;;;;;;;;;3630:31;655:7884;;;;;;;;;;;;;;;;;;;1271:19;655:7884;;;-1:-1:-1;;;;;655:7884:17;;;;;;;;;;;;;;;-1:-1:-1;;655:7884:17;;;;;;;;;-1:-1:-1;;;;;655:7884:17;2151:10;:17;2147:41;;1200:8;3757:33;;3753:63;;655:7884;;3869:30;655:7884;;;;;;;;3869:30;655:7884;;3753:63;-1:-1:-1;;;3799:17:17;;655:7884;3799:17;;2147:41;-1:-1:-1;;;2177:11:17;;655:7884;2305:11;2177;655:7884;;;;;;;;;;;;;;;;1025:8;655:7884;;;;;;;;;;-1:-1:-1;;655:7884:17;;;;;;-1:-1:-1;;;;;655:7884:17;2151:10;:17;2147:41;;655:7884;;4008:23;655:7884;;;4041:25;655:7884;;;2147:41;-1:-1:-1;;;2177:11:17;;655:7884;;2177:11;655:7884;;;;;;;-1:-1:-1;;655:7884:17;;;;;;;;-1:-1:-1;;;;;655:7884:17;;:::i;:::-;;;;1363:46;655:7884;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;655:7884:17;;;;;;;;;;;;;;;-1:-1:-1;;655:7884:17;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;655:7884:17;;;;;;2264:10;655:7884;;2254:9;655:7884;;;;;;;;2253:22;:43;;;655:7884;2249:67;;3361:103:30;;:::i;:::-;6291:16:17;;6287:44;;-1:-1:-1;;;;;655:7884:17;;;;;6354:11;655:7884;;;;;;;;;;;6354:40;;;:::i;:::-;6397:15;-1:-1:-1;6350:90:17;;655:7884;;;;-1:-1:-1;;;8131:41:17;;655:7884;8131:41;;655:7884;;;;;;;;;;;;-1:-1:-1;;;;;655:7884:17;8131:41;;;;;;;;;;655:7884;8191:18;8117:55;;8198:11;655:7884;8191:18;;:::i;:::-;8229:12;655:7884;8223:18;;;;;;8257:19;;;:::i;:::-;8219:106;;6536:4;655:7884;;;-1:-1:-1;;;6529:26:17;;655:7884;;-1:-1:-1;;;;;655:7884:17;;;;;;6529:26;;;;;;;;;;;8219:106;6595:23;:36;:23;;;;;:::i;:::-;:36;:::i;:::-;6675:44;;;;;;655:7884;;-1:-1:-1;;;6675:44:17;;-1:-1:-1;;;;;655:7884:17;;;;;6675:44;;655:7884;;;;;;;;;;;;;;;;;;6675:44;;;;;;;;;;;8219:106;-1:-1:-1;;6815:4:17;655:7884;;;-1:-1:-1;;;6808:37:17;;6839:4;655:7884;6808:37;;655:7884;-1:-1:-1;;;;;655:7884:17;;;;;;;;;6808:37;;;;;;;;;;;;;;;;8219:106;6859:24;;;;6855:112;;8219:106;-1:-1:-1;;6815:4:17;655:7884;;;;;-1:-1:-1;;;655:7884:17;1328:43:44;;;;;;;-1:-1:-1;;;;;655:7884:17;;;;1328:43:44;;655:7884:17;;;;;;;;1328:43:44;;655:7884:17;7106:48;;655:7884;;1328:43:44;;655:7884:17;;1328:43:44;655:7884:17;;1328:43:44;:::i;:::-;;:::i;:::-;655:7884:17;;;;-1:-1:-1;;;7106:48:17;;-1:-1:-1;;;;;655:7884:17;;;;7106:48;;655:7884;;;;;;;;;;;;;;;;;;;;;;;;;7106:48;;;;;;;;;;;;;;8219:106;655:7884;;;7177:19;;7173:52;;-1:-1:-1;655:7884:17;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;655:7884:17;;7249:95;;655:7884;;;;7249:95;;;;655:7884;-1:-1:-1;;;;;;;;;;;655:7884:17;;;;;;;7173:52;-1:-1:-1;;;7205:20:17;;655:7884;;7205:20;7106:48;;;;655:7884;7106:48;;655:7884;7106:48;;;;;;655:7884;7106:48;;;:::i;:::-;;;655:7884;;;;;7106:48;;;;655:7884;-1:-1:-1;655:7884:17;;7106:48;;;-1:-1:-1;7106:48:17;;;655:7884;;;;;;;;;;;6855:112;6931:24;;;;;;;:::i;:::-;6899:57;;;;;655:7884;;-1:-1:-1;;;6899:57:17;;6839:4;655:7884;6899:57;;655:7884;;;;;;;;;;;;;;;;;;;6899:57;;;;;;;;;;;6855:112;;;;;;;6899:57;;;;;:::i;:::-;655:7884;;6899:57;;;;655:7884;;;;6899:57;655:7884;;;;;;;;;6899:57;655:7884;;;6808:37;;;;655:7884;6808:37;;655:7884;6808:37;;;;;;655:7884;6808:37;;;:::i;:::-;;;655:7884;;;;;;;6808:37;;;;;;-1:-1:-1;6808:37:17;;;655:7884;;;;;;;;;6675:44;;;;;:::i;:::-;655:7884;;6675:44;;;;6529:26;;;;655:7884;6529:26;;655:7884;6529:26;;;;;;655:7884;6529:26;;;:::i;:::-;;;655:7884;;;;;6529:26;;;;;;;-1:-1:-1;6529:26:17;;8219:106;8307:7;;;8219:106;;;8131:41;;655:7884;8131:41;;655:7884;8131:41;;;;;;655:7884;8131:41;;;:::i;:::-;;;655:7884;;;;8191:18;655:7884;;8131:41;;;;;-1:-1:-1;8131:41:17;;;655:7884;;;;;;;;;6350:90;-1:-1:-1;;;6421:19:17;;655:7884;6421:19;;6287:44;-1:-1:-1;;;6316:15:17;;655:7884;4775:15;6316;2249:67;-1:-1:-1;;;2305:11:17;;655:7884;2305:11;;2253:43;-1:-1:-1;655:7884:17;;-1:-1:-1;;;;;655:7884:17;2264:10;2279:17;;2253:43;;655:7884;;;;;;;;;;;;;;;;;5090:6:26;-1:-1:-1;;;;;655:7884:17;5081:4:26;5073:23;5069:145;;655:7884:17;;;-1:-1:-1;;;;;;;;;;;655:7884:17;;;5069:145:26;-1:-1:-1;;;5174:29:26;;655:7884:17;;5174:29:26;655:7884:17;-1:-1:-1;655:7884:17;;-1:-1:-1;;655:7884:17;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4667:6:26;655:7884:17;4658:4:26;4650:23;;;:120;;;;655:7884:17;4633:251:26;;;655:7884:17;;-1:-1:-1;;;;;655:7884:17;2151:10;:17;2147:41;;655:7884;;-1:-1:-1;;;6131:52:26;;-1:-1:-1;;;;;655:7884:17;;;;;;;;;6131:52:26;;;;;;;655:7884:17;-1:-1:-1;6127:437:26;;-1:-1:-1;;;6493:60:26;;655:7884:17;;;;;1805:47:39;6493:60:26;6127:437;6225:40;;-1:-1:-1;;;;;;;;;;;6225:40:26;;;6221:120;;1748:29:39;;;:34;1744:119;;-1:-1:-1;;;;;;;;;;;655:7884:17;;-1:-1:-1;;;;;;655:7884:17;;;;;;;;2407:36:39;655:7884:17;;2407:36:39;655:7884:17;;2458:15:39;:11;;4107:55:45;4065:25;;;;;;;;655:7884:17;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;4107:55:45;:::i;:::-;;655:7884:17;;;;;4107:55:45;:::i;2454:148:39:-;6163:9;;;;;6159:70;;655:7884:17;;6159:70:39;-1:-1:-1;;;6199:19:39;;655:7884:17;;6199:19:39;1744:119;-1:-1:-1;;;1805:47:39;;655:7884:17;;;1805:47:39;;6221:120:26;-1:-1:-1;;;6292:34:26;;655:7884:17;;;6292:34:26;;6131:52;;;;655:7884:17;6131:52:26;;655:7884:17;6131:52:26;;;;;;655:7884:17;6131:52:26;;;:::i;:::-;;;655:7884:17;;;;;6131:52:26;;;;;;;-1:-1:-1;6131:52:26;;4633:251;-1:-1:-1;;;4844:29:26;;655:7884:17;4844:29:26;;4650:120;-1:-1:-1;;;;;;;;;;;655:7884:17;-1:-1:-1;;;;;655:7884:17;4728:42:26;;;-1:-1:-1;4650:120:26;;;655:7884:17;;;;;;;-1:-1:-1;;655:7884:17;;;;;;;;;;-1:-1:-1;;;;;655:7884:17;;:::i;:::-;;;;1416:41;655:7884;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1080:8;655:7884;;;;;;;;;;;;;;;;;;;1200:8;655:7884;;;;;;;;;;;;;;;;;1468:26;655:7884;;;;;;;;;;;;;;-1:-1:-1;;655:7884:17;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;2264:10;;655:7884;;2254:9;655:7884;;;;;;;;2253:22;:43;;;655:7884;2249:67;;3361:103:30;;:::i;:::-;4754:12:17;;4750:40;;655:7884;4829:18;655:7884;;;;;;;;;;;;;;;;;;8131:41;;655:7884;;8131:41;;655:7884;8131:41;;;;;;;655:7884;8131:41;;;655:7884;-1:-1:-1;8198:11:17;655:7884;;;8191:18;;655:7884;8191:18;:::i;:::-;8229:12;655:7884;8223:18;;;;;;8257:19;;;:::i;:::-;8219:106;;4885:4;655:7884;;;-1:-1:-1;;;4878:26:17;;655:7884;;;;;;;;-1:-1:-1;;;;;655:7884:17;4878:26;;;;;;;655:7884;4878:26;;;8219:106;-1:-1:-1;655:7884:17;;;;-1:-1:-1;;;655:7884:17;1745:53:44;;;;;;;-1:-1:-1;;;;;655:7884:17;;;;1745:53:44;;655:7884:17;;;;;;;;;;;;;;;1745:53:44;;655:7884:17;;;;;;5020:48;;1745:53:44;;;655:7884:17;;1745:53:44;:::i;:::-;;;:::i;:::-;655:7884:17;;;;-1:-1:-1;;;5020:48:17;;-1:-1:-1;;;;;655:7884:17;;;;5020:48;;655:7884;5062:4;655:7884;;;;;;;;;;;;;;;;;;;;;5020:48;;;;;;;;;;655:7884;5020:48;;;8219:106;655:7884;;;5082:21;;5078:54;;5183:15;;;5214:23;5179:148;;655:7884;;5349:21;;5345:54;;4885:4;655:7884;-1:-1:-1;;;;;655:7884:17;;5418:43;;;;;655:7884;;-1:-1:-1;;;5418:43:17;;-1:-1:-1;;;;;655:7884:17;;;5418:43;;655:7884;;;;;;;;-1:-1:-1;;655:7884:17;;;;;;-1:-1:-1;;5418:43:17;;;;;;;655:7884;5418:43;;;;;5179:148;-1:-1:-1;;;;;;655:7884:17;;;;;;5471:11;655:7884;;;;;;;5495:15;655:7884;;;;;;;-1:-1:-1;655:7884:17;;;;;;;;;;;;;;;;;;;;;;;;;;;5534:86;;655:7884;;;;5534:86;655:7884;5418:43;5534:86;5418:43;;;;655:7884;5534:86;5418:43;;;;:::i;:::-;655:7884;5418:43;;;;;;;;655:7884;;;;;;;;;5345:54;5112:20;;;655:7884;5379:20;655:7884;;5379:20;5179:148;5281:35;:23;;;;;:::i;:35::-;5179:148;;;5020:48;;;;655:7884;5020:48;;655:7884;5020:48;;;;;;655:7884;5020:48;;;:::i;:::-;;;655:7884;;;;;5020:48;;;;;;;-1:-1:-1;5020:48:17;;4878:26;;;;655:7884;4878:26;;655:7884;4878:26;;;;;;655:7884;4878:26;;;:::i;:::-;;;655:7884;;;;;;4878:26;;655:7884;4878:26;;;;;-1:-1:-1;4878:26:17;;8219:106;8307:7;;655:7884;8219:106;;;8131:41;;;655:7884;8131:41;;655:7884;8131:41;;;;;;655:7884;8131:41;;;:::i;:::-;;;655:7884;;;;;;;8191:18;8131:41;;;;;-1:-1:-1;8131:41:17;;4750:40;4775:15;;;655:7884;4775:15;655:7884;;4775:15;2249:67;2305:11;;;655:7884;2305:11;655:7884;;2305:11;2253:43;-1:-1:-1;655:7884:17;;-1:-1:-1;;;;;655:7884:17;2264:10;2279:17;;2253:43;;655:7884;;;;;;-1:-1:-1;;655:7884:17;;;;;;;;-1:-1:-1;;;;;655:7884:17;;;;;;;;;;;;;;-1:-1:-1;;655:7884:17;;;;;1141:5;655:7884;;;;;;;;-1:-1:-1;;;;;655:7884:17;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;655:7884:17;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;655:7884:17;;;;;;:::o;:::-;;;1328:43:44;;655:7884:17;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;655:7884:17;;;;;-1:-1:-1;655:7884:17;;;;;;;;;-1:-1:-1;;655:7884:17;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;8039:321::-;655:7884;;;;-1:-1:-1;;;8131:41:17;;655:7884;;;8131:41;;;655:7884;;;;;8131:41;;655:7884;;-1:-1:-1;;;;;655:7884:17;8131:41;;;;;;-1:-1:-1;8131:41:17;;;8039:321;8191:18;8117:55;;8198:11;655:7884;8191:18;;:::i;:::-;8229:12;655:7884;8223:18;;;;;;8257:19;;;:::i;:::-;8039:321;:::o;8219:106::-;8307:7;;-1:-1:-1;8039:321:17;:::o;8131:41::-;;655:7884;8131:41;;655:7884;8131:41;;;;;;655:7884;8131:41;;;:::i;:::-;;;655:7884;;;;8191:18;655:7884;;8131:41;;;;;-1:-1:-1;8131:41:17;;655:7884;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;7530:285;7620:23;7530:285;7620:23;:::i;:::-;7677:4;655:7884;;;-1:-1:-1;;;7670:26:17;;655:7884;7670:26;;655:7884;;7670:26;;655:7884;;-1:-1:-1;;;;;655:7884:17;7670:26;;;;;;;655:7884;7670:26;;;7530:285;7719:11;;;7715:38;;1080:8;655:7884;;;;;;1080:8;655:7884;;;;;;;7779:29;;;:::i;7715:38::-;7732:21;;1080:8;7732:21;:::o;7670:26::-;;;;;;;;;;;;;655:7884;7670:26;;;:::i;:::-;;;655:7884;;;;;7670:26;;;;;;-1:-1:-1;7670:26:17;;3470:384:30;1991:1;-1:-1:-1;;;;;;;;;;;655:7884:17;3670:20:30;3666:88;;1991:1;-1:-1:-1;;;;;;;;;;;655:7884:17;3470:384:30:o;3666:88::-;3713:30;;;-1:-1:-1;3713:30:30;;-1:-1:-1;3713:30:30;7082:141:25;655:7884:17;-1:-1:-1;;;;;;;;;;;655:7884:17;;;;7148:18:25;7144:73;;7082:141::o;7144:73::-;7189:17;;;-1:-1:-1;7189:17:25;;-1:-1:-1;7189:17:25;8370:720:44;;-1:-1:-1;8507:421:44;8370:720;8507:421;;;;;;;;;;;;-1:-1:-1;8507:421:44;;8942:15;;-1:-1:-1;;;;;;655:7884:17;;8960:26:44;:31;8942:68;8938:146;;8370:720;:::o;8938:146::-;-1:-1:-1;;;;9033:40:44;;;-1:-1:-1;;;;;655:7884:17;;;;9033:40:44;655:7884:17;;;9033:40:44;8942:68;9009:1;8994:16;;8942:68;;4437:582:45;;4609:8;;-1:-1:-1;655:7884:17;;5690:21:45;:17;;5815:105;;;;;;5686:301;5957:19;;;5710:1;5957:19;;5710:1;5957:19;4605:408;655:7884:17;;4857:22:45;:49;;;4605:408;4853:119;;4985:17;;:::o;4853:119::-;-1:-1:-1;;;4878:1:45;4933:24;;;-1:-1:-1;;;;;655:7884:17;;;;4933:24:45;655:7884:17;;;4933:24:45;4857:49;4883:18;;;:23;4857:49;","linkReferences":{},"immutableReferences":{"10672":[{"start":2979,"length":32},{"start":3187,"length":32}]}},"methodIdentifiers":{"BASIS_POINTS_DIVISOR()":"126082cf","MAX_COOLDOWN_DURATION()":"1e9049cf","PRICE_PRECISION()":"95082d25","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","YTLP_PRECISION()":"275558ff","addLiquidityForAccount(address,address,address,uint256,uint256,uint256)":"17eb2a15","aumAddition()":"196b68cb","aumDeduction()":"b172bb0c","cooldownDuration()":"35269315","getAumInUsdy(bool)":"cef6ef27","getPrice(bool)":"e245b5af","gov()":"12d43a51","initialize(address,address,address,uint256)":"cf756fdf","isHandler(address)":"46ea87af","lastAddedAt(address)":"8b770e11","proxiableUUID()":"52d1902d","removeLiquidityForAccount(address,address,uint256,uint256,address)":"71d597ad","setAumAdjustment(uint256,uint256)":"9116c4ae","setCooldownDuration(uint256)":"966be075","setGov(address)":"cfad57a2","setHandler(address,bool)":"9cb7de4b","upgradeToAndCall(address,bytes)":"4f1ef286","usdy()":"98d506e9","ytLP()":"e348031b","ytVault()":"84a08e63"}}}},"contracts/ytLp/core/YTPriceFeed.sol":{"YTPriceFeed":{"abi":[{"type":"function","name":"BASIS_POINTS_DIVISOR","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_SPREAD_BASIS_POINTS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"PRICE_PRECISION","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"forceUpdatePrice","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getMaxPrice","inputs":[{"name":"_token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMinPrice","inputs":[{"name":"_token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPrice","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_maximise","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPriceInfo","inputs":[{"name":"_token","type":"address","internalType":"address"}],"outputs":[{"name":"currentPrice","type":"uint256","internalType":"uint256"},{"name":"cachedPrice","type":"uint256","internalType":"uint256"},{"name":"maxPrice","type":"uint256","internalType":"uint256"},{"name":"minPrice","type":"uint256","internalType":"uint256"},{"name":"spread","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"gov","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_wusdAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isKeeper","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"lastPrice","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxPriceChangeBps","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"setKeeper","inputs":[{"name":"_keeper","type":"address","internalType":"address"},{"name":"_isActive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxPriceChangeBps","inputs":[{"name":"_maxPriceChangeBps","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSpreadBasisPoints","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_spreadBasisPoints","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSpreadBasisPointsForMultiple","inputs":[{"name":"_tokens","type":"address[]","internalType":"address[]"},{"name":"_spreadBasisPoints","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setWusdPriceSource","inputs":[{"name":"_wusdPriceSource","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"spreadBasisPoints","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"updatePrice","inputs":[{"name":"_token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"wusdAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"wusdPriceSource","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"KeeperSet","inputs":[{"name":"keeper","type":"address","indexed":true,"internalType":"address"},{"name":"isActive","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"PriceUpdate","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"oldPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SpreadUpdate","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"spreadBps","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"Forbidden","inputs":[]},{"type":"error","name":"InvalidAddress","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"MaxChangeTooHigh","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"PriceChangeTooLarge","inputs":[]},{"type":"error","name":"SpreadTooHigh","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Forbidden\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxChangeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PriceChangeTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SpreadTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"keeper\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"}],\"name\":\"KeeperSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"PriceUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"spreadBps\",\"type\":\"uint256\"}],\"name\":\"SpreadUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BASIS_POINTS_DIVISOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_SPREAD_BASIS_POINTS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PRICE_PRECISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"}],\"name\":\"forceUpdatePrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"getMaxPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"getMinPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_maximise\",\"type\":\"bool\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"getPriceInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"currentPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cachedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"spread\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gov\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_wusdAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isKeeper\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"lastPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxPriceChangeBps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_keeper\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isActive\",\"type\":\"bool\"}],\"name\":\"setKeeper\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maxPriceChangeBps\",\"type\":\"uint256\"}],\"name\":\"setMaxPriceChangeBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_spreadBasisPoints\",\"type\":\"uint256\"}],\"name\":\"setSpreadBasisPoints\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_spreadBasisPoints\",\"type\":\"uint256[]\"}],\"name\":\"setSpreadBasisPointsForMultiple\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_wusdPriceSource\",\"type\":\"address\"}],\"name\":\"setWusdPriceSource\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"spreadBasisPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"updatePrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wusdAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wusdPriceSource\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"UUPS\\u53ef\\u5347\\u7ea7\\u5408\\u7ea6\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"forceUpdatePrice(address,uint256)\":{\"params\":{\"_price\":\"\\u65b0\\u4ef7\\u683c\",\"_token\":\"\\u4ee3\\u5e01\\u5730\\u5740\"}},\"getPrice(address,bool)\":{\"params\":{\"_maximise\":\"true=\\u6700\\u5927\\u4ef7\\u683c\\uff08\\u4e0a\\u6d6e\\u4ef7\\u5dee\\uff0c\\u5bf9\\u534f\\u8bae\\u6709\\u5229\\uff09, false=\\u6700\\u5c0f\\u4ef7\\u683c\\uff08\\u4e0b\\u538b\\u4ef7\\u5dee\\uff0c\\u5bf9\\u534f\\u8bae\\u6709\\u5229\\uff09\",\"_token\":\"\\u4ee3\\u5e01\\u5730\\u5740\"},\"returns\":{\"_0\":\"\\u4ef7\\u683c\\uff0830\\u4f4d\\u7cbe\\u5ea6\\uff09 \\u4f7f\\u7528\\u573a\\u666f\\uff1a - \\u6dfb\\u52a0\\u6d41\\u52a8\\u6027\\u65f6AUM\\u8ba1\\u7b97\\uff1a_maximise=true\\uff08\\u9ad8\\u4f30AUM\\uff0c\\u7528\\u6237\\u83b7\\u5f97\\u8f83\\u5c11LP\\uff09 - \\u79fb\\u9664\\u6d41\\u52a8\\u6027\\u65f6AUM\\u8ba1\\u7b97\\uff1a_maximise=false\\uff08\\u4f4e\\u4f30AUM\\uff0c\\u7528\\u6237\\u83b7\\u5f97\\u8f83\\u5c11\\u4ee3\\u5e01\\uff09 - buyUSDY\\u65f6\\uff08\\u7528\\u6237\\u5356\\u4ee3\\u5e01\\uff09\\uff1a_maximise=false\\uff08\\u4f4e\\u4f30\\u7528\\u6237\\u4ee3\\u5e01\\u4ef7\\u503c\\uff09 - sellUSDY\\u65f6\\uff08\\u7528\\u6237\\u4e70\\u4ee3\\u5e01\\uff09\\uff1a_maximise=true\\uff08\\u9ad8\\u4f30\\u9700\\u652f\\u4ed8\\u7684\\u4ee3\\u5e01\\u4ef7\\u503c\\uff09 - swap\\u65f6tokenIn\\uff1a_maximise=false\\uff08\\u4f4e\\u4f30\\u8f93\\u5165\\uff09 - swap\\u65f6tokenOut\\uff1a_maximise=true\\uff08\\u9ad8\\u4f30\\u8f93\\u51fa\\uff09\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"setKeeper(address,bool)\":{\"params\":{\"_isActive\":\"\\u662f\\u5426\\u6fc0\\u6d3b\",\"_keeper\":\"keeper\\u5730\\u5740\"}},\"setMaxPriceChangeBps(uint256)\":{\"params\":{\"_maxPriceChangeBps\":\"\\u6700\\u5927\\u53d8\\u52a8\\uff08\\u57fa\\u70b9\\uff09\"}},\"setSpreadBasisPoints(address,uint256)\":{\"params\":{\"_spreadBasisPoints\":\"\\u4ef7\\u5dee\\uff08\\u57fa\\u70b9\\uff09\\u4f8b\\u5982\\uff1a10 = 0.1%, 100 = 1%\",\"_token\":\"\\u4ee3\\u5e01\\u5730\\u5740\"}},\"setSpreadBasisPointsForMultiple(address[],uint256[])\":{\"params\":{\"_spreadBasisPoints\":\"\\u4ef7\\u5dee\\u6570\\u7ec4\",\"_tokens\":\"\\u4ee3\\u5e01\\u5730\\u5740\\u6570\\u7ec4\"}},\"setWusdPriceSource(address)\":{\"params\":{\"_wusdPriceSource\":\"YTAssetVault\\u5408\\u7ea6\\u5730\\u5740\"}},\"updatePrice(address)\":{\"params\":{\"_token\":\"\\u4ee3\\u5e01\\u5730\\u5740\"},\"returns\":{\"_0\":\"\\u65b0\\u4ef7\\u683c\"}},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"\\u9884\\u7559\\u5b58\\u50a8\\u7a7a\\u95f4\\uff0c\\u7528\\u4e8e\\u672a\\u6765\\u5347\\u7ea7\\u65f6\\u6dfb\\u52a0\\u65b0\\u7684\\u72b6\\u6001\\u53d8\\u91cf 50\\u4e2aslot = 50 * 32 bytes = 1600 bytes\"}},\"title\":\"YTPriceFeed\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"forceUpdatePrice(address,uint256)\":{\"notice\":\"\\u5f3a\\u5236\\u66f4\\u65b0\\u4ef7\\u683c\\uff08\\u7d27\\u6025\\u60c5\\u51b5\\uff09\"},\"getMaxPrice(address)\":{\"notice\":\"\\u83b7\\u53d6\\u6700\\u5927\\u4ef7\\u683c\\uff08\\u4e0a\\u6d6e\\u4ef7\\u5dee\\uff09\"},\"getMinPrice(address)\":{\"notice\":\"\\u83b7\\u53d6\\u6700\\u5c0f\\u4ef7\\u683c\\uff08\\u4e0b\\u538b\\u4ef7\\u5dee\\uff09\"},\"getPrice(address,bool)\":{\"notice\":\"\\u83b7\\u53d6YT\\u4ee3\\u5e01\\u4ef7\\u683c\\uff08\\u5e26\\u6ce2\\u52a8\\u4fdd\\u62a4\\u548c\\u4ef7\\u5dee\\uff09\"},\"getPriceInfo(address)\":{\"notice\":\"\\u83b7\\u53d6\\u4ef7\\u683c\\u8be6\\u7ec6\\u4fe1\\u606f\"},\"initialize(address)\":{\"notice\":\"\\u521d\\u59cb\\u5316\\u5408\\u7ea6\"},\"setKeeper(address,bool)\":{\"notice\":\"\\u8bbe\\u7f6ekeeper\\u6743\\u9650\"},\"setMaxPriceChangeBps(uint256)\":{\"notice\":\"\\u8bbe\\u7f6e\\u6700\\u5927\\u4ef7\\u683c\\u53d8\\u52a8\\u767e\\u5206\\u6bd4\"},\"setSpreadBasisPoints(address,uint256)\":{\"notice\":\"\\u8bbe\\u7f6e\\u4ee3\\u5e01\\u4ef7\\u5dee\"},\"setSpreadBasisPointsForMultiple(address[],uint256[])\":{\"notice\":\"\\u6279\\u91cf\\u8bbe\\u7f6e\\u4ee3\\u5e01\\u4ef7\\u5dee\"},\"setWusdPriceSource(address)\":{\"notice\":\"\\u8bbe\\u7f6eWUSD\\u4ef7\\u683c\\u6765\\u6e90\\uff08YTAssetVault\\u5730\\u5740\\uff09\"},\"updatePrice(address)\":{\"notice\":\"\\u66f4\\u65b0\\u4ef7\\u683c\\u5e76\\u8fd4\\u56de\\uff08\\u7531keeper\\u8c03\\u7528\\uff09\"}},\"notice\":\"\\u4ef7\\u683c\\u8bfb\\u53d6\\u5668\\uff0c\\u76f4\\u63a5\\u4eceYT\\u5408\\u7ea6\\u8bfb\\u53d6\\u4ef7\\u683c\\u53d8\\u91cf\\uff08\\u5e26\\u4fdd\\u62a4\\u673a\\u5236\\u548c\\u4ef7\\u5dee\\uff09\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ytLp/core/YTPriceFeed.sol\":\"YTPriceFeed\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IYTToken.sol\":{\"keccak256\":\"0x878548d078048386430ce746d410f532280526f0c7a91c4d027c98ec4a9970be\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://253337575d8d268cd5ff5a10a5b794b901a697a2984fa9dc2c590513b4a402f6\",\"dweb:/ipfs/QmeBtCbpJeJx2VkCnSH8yq84EvPbSf6sUbHWzRLvMXjU8e\"]},\"contracts/ytLp/core/YTPriceFeed.sol\":{\"keccak256\":\"0xcbf5afda08b4d426b607b9996238f5cef655b6309c2757929cb3acbc967b080a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2e1c8cc47630bd4e6f11e0ed2c52f93e7c39d63e671c3e740c55406500c3643\",\"dweb:/ipfs/QmYkDwvDFn3KUbk9ehdTUuGvvPVbuXX7yuB8kTUvEfZ3pr\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x574a7451e42724f7de29e2855c392a8a5020acd695169466a18459467d719d63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bc189f63b639ee173dd7b6fecc39baf7113bf161776aea22b34c57fdd1872ec\",\"dweb:/ipfs/QmZAf2VtjDLRULqjJkde6LNsxAg12tUqpPqgUQQZbAjgtZ\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60a080604052346029573060805261117d908161002e82396080518181816108d801526109a80152f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c9081630957aed914610c1f57508063126082cf14610c0357806312d43a5114610bdc578063229f7df714610b905780634d34349614610b685780634f1ef2861461092c57806352d1902d146108c65780635d42fb6b1461083d578063697cd71a146108205780636ba42aaa146107e357806376d69760146107ca57806381a612d6146107a757806383daeb47146107645780638edbf436146106c657806395082d251461069f57806396e85ced1461064c5780639b889380146105d2578063a27ea3861461059a578063ad3cb1cc1461053c578063c4d66de814610399578063c62db20614610371578063c9e0c10614610219578063d1b9e85314610196578063e124e6d21461016b5763f5a6ba2e1461012f575f80fd5b34610167576020366003190112610167576001600160a01b03610150610c38565b165f526005602052602060405f2054604051908152f35b5f80fd5b3461016757602036600319011261016757602061018e610189610c38565b610e43565b604051908152f35b34610167576101a436610ca0565b5f549091906001600160a01b0316330361020a5760207f8dd62d4e1f60b96148552898e743aa2b571686baa26f4f1b647565dc3996c1a79160018060a01b031692835f526006825260405f209015159060ff1981541660ff8316179055604051908152a2005b631dd2188d60e31b5f5260045ffd5b346101675760403660031901126101675760043567ffffffffffffffff81116101675761024a903690600401610ccf565b60243567ffffffffffffffff81116101675761026a903690600401610ccf565b5f549092906001600160a01b0316330361020a5782810361033a575f5b81811061029057005b60c861029d828686610e0b565b351161032b57806102b16001928686610e0b565b35828060a01b036102cb6102c684878b610e0b565b610e2f565b165f52600460205260405f20556102e66102c6828589610e0b565b7fdc57d8716d6b33bf807c6d4f1dd2addbf67960c73ada97819316dc745dfa11796020610314848989610e0b565b3592604051938452858060a01b031692a201610287565b639821c0c960e01b5f5260045ffd5b60405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b6044820152606490fd5b34610167575f366003190112610167576001546040516001600160a01b039091168152602090f35b34610167576020366003190112610167576103b2610c38565b5f5160206111285f395f51905f525460ff8160401c16159067ffffffffffffffff811680159081610534575b600114908161052a575b159081610521575b506105125767ffffffffffffffff1981166001175f5160206111285f395f51905f5255816104e6575b505f5160206111285f395f51905f52549160ff8360401c16156104d7576001600160a01b031680156104c8576bffffffffffffffffffffffff60a01b6001541617600155336bffffffffffffffffffffffff60a01b5f5416175f556101f460035561048057005b68ff000000000000000019165f5160206111285f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63e6c4247b60e01b5f5260045ffd5b631afcd79f60e31b5f5260045ffd5b68ffffffffffffffffff191668010000000000000001175f5160206111285f395f51905f525582610419565b63f92ee8a960e01b5f5260045ffd5b905015846103f0565b303b1591506103e8565b8391506103de565b34610167575f36600319011261016757604080519061055b8183610c4e565b600582526020820191640352e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b34610167576020366003190112610167576001600160a01b036105bb610c38565b165f526004602052602060405f2054604051908152f35b34610167576040366003190112610167576105eb610c38565b5f5460243591906001600160a01b0316330361020a5760c8821161032b5760207fdc57d8716d6b33bf807c6d4f1dd2addbf67960c73ada97819316dc745dfa11799160018060a01b031692835f52600482528060405f2055604051908152a2005b3461016757602036600319011261016757610665610c38565b335f52600660205260ff60405f205416158061068b575b61020a5761018e602091610d7d565b505f546001600160a01b031633141561067c565b34610167575f3660031901126101675760206040516c0c9f2c9cd04674edea400000008152f35b34610167576020366003190112610167576106df610c38565b6001546001600160a01b038281169116810361072257505060a0610701610e75565b5f8180805b6040519485526020850152604084015260608301526080820152f35b8161072e60a093610efc565b91805f52600560205260405f2054905f52600460205260405f20549161075e846107588184610fd2565b92611012565b91610706565b34610167576020366003190112610167575f54600435906001600160a01b0316330361020a576107d0811161079857600355005b63165376f560e21b5f5260045ffd5b3461016757602036600319011261016757602061018e6107c5610c38565b610d42565b3461016757602061018e6107dd36610ca0565b90610d00565b34610167576020366003190112610167576001600160a01b03610804610c38565b165f526006602052602060ff60405f2054166040519015158152f35b34610167575f366003190112610167576020600354604051908152f35b3461016757604036600319011261016757610856610c38565b5f5460243591906001600160a01b0316330361020a576001600160a01b03165f818152600560209081526040918290208054908590558251908152908101939093524290830152907f8647dab5101cbe18afb171756e9753802f9d66725bf2346b079b8b1a275e011690606090a2005b34610167575f366003190112610167577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316300361091d5760206040515f5160206111085f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b604036600319011261016757610940610c38565b6024359067ffffffffffffffff821161016757366023830112156101675781600401359061096d82610c84565b9161097b6040519384610c4e565b8083526020830193366024838301011161016757815f926024602093018737840101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115610b46575b5061091d575f546001600160a01b0316330361020a576040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa5f9181610b12575b50610a2b5784634c9c8ce360e01b5f5260045260245ffd5b805f5160206111085f395f51905f52869203610b005750823b15610aee575f5160206111085f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2825115610ad5575f8091610acb945190845af43d15610acd573d91610aaf83610c84565b92610abd6040519485610c4e565b83523d5f602085013e6110a9565b005b6060916110a9565b50505034610adf57005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d602011610b3e575b81610b2e60209383610c4e565b8101031261016757519086610a13565b3d9150610b21565b5f5160206111085f395f51905f52546001600160a01b031614159050846109d3565b34610167575f366003190112610167576002546040516001600160a01b039091168152602090f35b3461016757602036600319011261016757610ba9610c38565b5f546001600160a01b0316330361020a57600280546001600160a01b0319166001600160a01b0392909216919091179055005b34610167575f366003190112610167575f546040516001600160a01b039091168152602090f35b34610167575f3660031901126101675760206040516127108152f35b34610167575f366003190112610167578060c860209252f35b600435906001600160a01b038216820361016757565b90601f8019910116810190811067ffffffffffffffff821117610c7057604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff8111610c7057601f01601f191660200190565b6040906003190112610167576004356001600160a01b0381168103610167579060243580151581036101675790565b9181601f840112156101675782359167ffffffffffffffff8311610167576020808501948460051b01011161016757565b6001549091906001600160a01b03808416911614610d385781610d25610d3593610efc565b90610d308282610f64565b61104a565b90565b5050610d35610e75565b6001546001600160a01b03828116911614610d745780610d64610d3592610efc565b90610d6f8282610f64565b611012565b50610d35610e75565b6001546001600160a01b0382811691168114610d3857805f5260056020527f8647dab5101cbe18afb171756e9753802f9d66725bf2346b079b8b1a275e0116610e0560405f2054610dd7610dd086610efc565b8096610f64565b835f5260056020528460405f2055604051918291864291846040919493926060820195825260208201520152565b0390a290565b9190811015610e1b5760051b0190565b634e487b7160e01b5f52603260045260245ffd5b356001600160a01b03811681036101675790565b6001546001600160a01b03828116911614610d745780610e65610d3592610efc565b90610e708282610f64565b610fd2565b6002546001600160a01b03168015610eea576020600491604051928380926330da7def60e11b82525afa908115610edf575f91610eb0575090565b90506020813d602011610ed7575b81610ecb60209383610c4e565b81010312610167575190565b3d9150610ebe565b6040513d5f823e3d90fd5b506c0c9f2c9cd04674edea4000000090565b60405163adcc40cb60e01b815290602090829060049082906001600160a01b03165afa908115610edf575f91610eb0575090565b91908203918211610f3d57565b634e487b7160e01b5f52601160045260245ffd5b81810292918115918404141715610f3d57565b6001600160a01b03165f90815260056020526040902054908115610fce57610fa761271091838082115f14610fbe57610f9c91610f30565b925b60035490610f51565b0410610faf57565b63a8eb64ed60e01b5f5260045ffd5b90610fc891610f30565b92610f9e565b5050565b6001600160a01b03165f90815260046020526040902054801561100e5761271001908161271011610f3d576127109161100a91610f51565b0490565b5090565b6001600160a01b03165f90815260046020526040902054801561100e5761271003906127108211610f3d576127109161100a91610f51565b6001600160a01b03165f90815260046020526040902054909181156110a457156110895761271001908161271011610f3d576127109161100a91610f51565b61271003906127108211610f3d576127109161100a91610f51565b505090565b906110cd57508051156110be57602081519101fd5b63d6bda27560e01b5f5260045ffd5b815115806110fe575b6110de575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156110d656fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220b2368ccf8306a43956b202d3a91c108f313ad4686c92150fc148a9a7d2cba01964736f6c634300081e0033","sourceMap":"405:10263:18:-:0;;;;;;;1171:4:26;1163:13;;405:10263:18;;;;;;1163:13:26;405:10263:18;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"6080806040526004361015610012575f80fd5b5f3560e01c9081630957aed914610c1f57508063126082cf14610c0357806312d43a5114610bdc578063229f7df714610b905780634d34349614610b685780634f1ef2861461092c57806352d1902d146108c65780635d42fb6b1461083d578063697cd71a146108205780636ba42aaa146107e357806376d69760146107ca57806381a612d6146107a757806383daeb47146107645780638edbf436146106c657806395082d251461069f57806396e85ced1461064c5780639b889380146105d2578063a27ea3861461059a578063ad3cb1cc1461053c578063c4d66de814610399578063c62db20614610371578063c9e0c10614610219578063d1b9e85314610196578063e124e6d21461016b5763f5a6ba2e1461012f575f80fd5b34610167576020366003190112610167576001600160a01b03610150610c38565b165f526005602052602060405f2054604051908152f35b5f80fd5b3461016757602036600319011261016757602061018e610189610c38565b610e43565b604051908152f35b34610167576101a436610ca0565b5f549091906001600160a01b0316330361020a5760207f8dd62d4e1f60b96148552898e743aa2b571686baa26f4f1b647565dc3996c1a79160018060a01b031692835f526006825260405f209015159060ff1981541660ff8316179055604051908152a2005b631dd2188d60e31b5f5260045ffd5b346101675760403660031901126101675760043567ffffffffffffffff81116101675761024a903690600401610ccf565b60243567ffffffffffffffff81116101675761026a903690600401610ccf565b5f549092906001600160a01b0316330361020a5782810361033a575f5b81811061029057005b60c861029d828686610e0b565b351161032b57806102b16001928686610e0b565b35828060a01b036102cb6102c684878b610e0b565b610e2f565b165f52600460205260405f20556102e66102c6828589610e0b565b7fdc57d8716d6b33bf807c6d4f1dd2addbf67960c73ada97819316dc745dfa11796020610314848989610e0b565b3592604051938452858060a01b031692a201610287565b639821c0c960e01b5f5260045ffd5b60405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b6044820152606490fd5b34610167575f366003190112610167576001546040516001600160a01b039091168152602090f35b34610167576020366003190112610167576103b2610c38565b5f5160206111285f395f51905f525460ff8160401c16159067ffffffffffffffff811680159081610534575b600114908161052a575b159081610521575b506105125767ffffffffffffffff1981166001175f5160206111285f395f51905f5255816104e6575b505f5160206111285f395f51905f52549160ff8360401c16156104d7576001600160a01b031680156104c8576bffffffffffffffffffffffff60a01b6001541617600155336bffffffffffffffffffffffff60a01b5f5416175f556101f460035561048057005b68ff000000000000000019165f5160206111285f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63e6c4247b60e01b5f5260045ffd5b631afcd79f60e31b5f5260045ffd5b68ffffffffffffffffff191668010000000000000001175f5160206111285f395f51905f525582610419565b63f92ee8a960e01b5f5260045ffd5b905015846103f0565b303b1591506103e8565b8391506103de565b34610167575f36600319011261016757604080519061055b8183610c4e565b600582526020820191640352e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b34610167576020366003190112610167576001600160a01b036105bb610c38565b165f526004602052602060405f2054604051908152f35b34610167576040366003190112610167576105eb610c38565b5f5460243591906001600160a01b0316330361020a5760c8821161032b5760207fdc57d8716d6b33bf807c6d4f1dd2addbf67960c73ada97819316dc745dfa11799160018060a01b031692835f52600482528060405f2055604051908152a2005b3461016757602036600319011261016757610665610c38565b335f52600660205260ff60405f205416158061068b575b61020a5761018e602091610d7d565b505f546001600160a01b031633141561067c565b34610167575f3660031901126101675760206040516c0c9f2c9cd04674edea400000008152f35b34610167576020366003190112610167576106df610c38565b6001546001600160a01b038281169116810361072257505060a0610701610e75565b5f8180805b6040519485526020850152604084015260608301526080820152f35b8161072e60a093610efc565b91805f52600560205260405f2054905f52600460205260405f20549161075e846107588184610fd2565b92611012565b91610706565b34610167576020366003190112610167575f54600435906001600160a01b0316330361020a576107d0811161079857600355005b63165376f560e21b5f5260045ffd5b3461016757602036600319011261016757602061018e6107c5610c38565b610d42565b3461016757602061018e6107dd36610ca0565b90610d00565b34610167576020366003190112610167576001600160a01b03610804610c38565b165f526006602052602060ff60405f2054166040519015158152f35b34610167575f366003190112610167576020600354604051908152f35b3461016757604036600319011261016757610856610c38565b5f5460243591906001600160a01b0316330361020a576001600160a01b03165f818152600560209081526040918290208054908590558251908152908101939093524290830152907f8647dab5101cbe18afb171756e9753802f9d66725bf2346b079b8b1a275e011690606090a2005b34610167575f366003190112610167577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316300361091d5760206040515f5160206111085f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b604036600319011261016757610940610c38565b6024359067ffffffffffffffff821161016757366023830112156101675781600401359061096d82610c84565b9161097b6040519384610c4e565b8083526020830193366024838301011161016757815f926024602093018737840101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115610b46575b5061091d575f546001600160a01b0316330361020a576040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa5f9181610b12575b50610a2b5784634c9c8ce360e01b5f5260045260245ffd5b805f5160206111085f395f51905f52869203610b005750823b15610aee575f5160206111085f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2825115610ad5575f8091610acb945190845af43d15610acd573d91610aaf83610c84565b92610abd6040519485610c4e565b83523d5f602085013e6110a9565b005b6060916110a9565b50505034610adf57005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d602011610b3e575b81610b2e60209383610c4e565b8101031261016757519086610a13565b3d9150610b21565b5f5160206111085f395f51905f52546001600160a01b031614159050846109d3565b34610167575f366003190112610167576002546040516001600160a01b039091168152602090f35b3461016757602036600319011261016757610ba9610c38565b5f546001600160a01b0316330361020a57600280546001600160a01b0319166001600160a01b0392909216919091179055005b34610167575f366003190112610167575f546040516001600160a01b039091168152602090f35b34610167575f3660031901126101675760206040516127108152f35b34610167575f366003190112610167578060c860209252f35b600435906001600160a01b038216820361016757565b90601f8019910116810190811067ffffffffffffffff821117610c7057604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff8111610c7057601f01601f191660200190565b6040906003190112610167576004356001600160a01b0381168103610167579060243580151581036101675790565b9181601f840112156101675782359167ffffffffffffffff8311610167576020808501948460051b01011161016757565b6001549091906001600160a01b03808416911614610d385781610d25610d3593610efc565b90610d308282610f64565b61104a565b90565b5050610d35610e75565b6001546001600160a01b03828116911614610d745780610d64610d3592610efc565b90610d6f8282610f64565b611012565b50610d35610e75565b6001546001600160a01b0382811691168114610d3857805f5260056020527f8647dab5101cbe18afb171756e9753802f9d66725bf2346b079b8b1a275e0116610e0560405f2054610dd7610dd086610efc565b8096610f64565b835f5260056020528460405f2055604051918291864291846040919493926060820195825260208201520152565b0390a290565b9190811015610e1b5760051b0190565b634e487b7160e01b5f52603260045260245ffd5b356001600160a01b03811681036101675790565b6001546001600160a01b03828116911614610d745780610e65610d3592610efc565b90610e708282610f64565b610fd2565b6002546001600160a01b03168015610eea576020600491604051928380926330da7def60e11b82525afa908115610edf575f91610eb0575090565b90506020813d602011610ed7575b81610ecb60209383610c4e565b81010312610167575190565b3d9150610ebe565b6040513d5f823e3d90fd5b506c0c9f2c9cd04674edea4000000090565b60405163adcc40cb60e01b815290602090829060049082906001600160a01b03165afa908115610edf575f91610eb0575090565b91908203918211610f3d57565b634e487b7160e01b5f52601160045260245ffd5b81810292918115918404141715610f3d57565b6001600160a01b03165f90815260056020526040902054908115610fce57610fa761271091838082115f14610fbe57610f9c91610f30565b925b60035490610f51565b0410610faf57565b63a8eb64ed60e01b5f5260045ffd5b90610fc891610f30565b92610f9e565b5050565b6001600160a01b03165f90815260046020526040902054801561100e5761271001908161271011610f3d576127109161100a91610f51565b0490565b5090565b6001600160a01b03165f90815260046020526040902054801561100e5761271003906127108211610f3d576127109161100a91610f51565b6001600160a01b03165f90815260046020526040902054909181156110a457156110895761271001908161271011610f3d576127109161100a91610f51565b61271003906127108211610f3d576127109161100a91610f51565b505090565b906110cd57508051156110be57602081519101fd5b63d6bda27560e01b5f5260045ffd5b815115806110fe575b6110de575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156110d656fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220b2368ccf8306a43956b202d3a91c108f313ad4686c92150fc148a9a7d2cba01964736f6c634300081e0033","sourceMap":"405:10263:18:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;405:10263:18;;;;-1:-1:-1;;;;;405:10263:18;;:::i;:::-;;;;1209:44;405:10263;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;405:10263:18;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;405:10263:18;1606:10;:17;1602:41;;405:10263;2865:29;405:10263;;;;;;;;;;;2821:8;405:10263;;;;;;;;;;;;;;;;;;;;;;;;;2865:29;405:10263;1602:41;1632:11;;;405:10263;1632:11;405:10263;;1632:11;405:10263;;;;;;-1:-1:-1;;405:10263:18;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;405:10263:18;1606:10;:17;1602:41;;4026:43;;;405:10263;;;4119:18;;;;;;405:10263;4139:3;806;4162:21;;;;;:::i;:::-;405:10263;4162:47;4158:75;;4279:21;;405:10263;4279:21;;;;:::i;:::-;405:10263;;;;;;4265:10;;;;;;:::i;:::-;;:::i;:::-;405:10263;;;;;;;;;;4332:10;;;;;;:::i;:::-;4319:47;405:10263;4344:21;;;;;:::i;:::-;405:10263;;;;;;;;;;;;;4319:47;;405:10263;4104:13;;4158:75;3575:15;;;405:10263;4218:15;405:10263;;4218:15;405:10263;;;-1:-1:-1;;;405:10263:18;;;;;;;;;;;;-1:-1:-1;;;405:10263:18;;;;;;;;;;;;;-1:-1:-1;;405:10263:18;;;;;;;;-1:-1:-1;;;;;405:10263:18;;;;;;;;;;;;;;-1:-1:-1;;405:10263:18;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;405:10263:18;;;;;;4301:16:25;405:10263:18;;;;4724:16:25;;:34;;;;405:10263:18;4803:1:25;4788:16;:50;;;;405:10263:18;4853:13:25;:30;;;;405:10263:18;4849:91:25;;;-1:-1:-1;;405:10263:18;;4803:1:25;405:10263:18;-1:-1:-1;;;;;;;;;;;405:10263:18;;4977:67:25;;405:10263:18;;-1:-1:-1;;;;;;;;;;;405:10263:18;;;;;;;7148:18:25;7144:73;;-1:-1:-1;;;;;405:10263:18;1955:26;;1951:55;;405:10263;;;4803:1:25;405:10263:18;;;4803:1:25;405:10263:18;2058:10;405:10263;;;;;;;;;2098:3;2078:23;405:10263;5064:101:25;;405:10263:18;5064:101:25;405:10263:18;;;-1:-1:-1;;;;;;;;;;;405:10263:18;5140:14:25;405:10263:18;;;4803:1:25;405:10263:18;;5140:14:25;405:10263:18;1951:55;1990:16;;;405:10263;1990:16;405:10263;;1990:16;7144:73:25;7189:17;;;405:10263:18;7189:17:25;405:10263:18;;7189:17:25;4977:67;-1:-1:-1;;405:10263:18;;;-1:-1:-1;;;;;;;;;;;405:10263:18;4977:67:25;;;4849:91;4906:23;;;405:10263:18;4906:23:25;405:10263:18;;4906:23:25;4853:30;4870:13;;;4853:30;;;4788:50;4816:4;4808:25;:30;;-1:-1:-1;4788:50:25;;4724:34;;;-1:-1:-1;4724:34:25;;405:10263:18;;;;;;-1:-1:-1;;405:10263:18;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;405:10263:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;405:10263:18;;;;;;;;;;;;;-1:-1:-1;;405:10263:18;;;;-1:-1:-1;;;;;405:10263:18;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;405:10263:18;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;405:10263:18;1606:10;:17;1602:41;;806:3;3522:44;;3518:72;;405:10263;3661:40;405:10263;;;;;;;;;;;;;;;;;;;;;;;;3661:40;405:10263;;;;;;;-1:-1:-1;;405:10263:18;;;;;;:::i;:::-;1717:10;405:10263;;1708:8;405:10263;;;;;;;;1707:21;:42;;;405:10263;1703:66;;6136:517;405:10263;6136:517;;:::i;1707:42::-;-1:-1:-1;405:10263:18;;-1:-1:-1;;;;;405:10263:18;1717:10;1732:17;;1707:42;;405:10263;;;;;;-1:-1:-1;;405:10263:18;;;;;;;684:8;405:10263;;;;;;;;;-1:-1:-1;;405:10263:18;;;;;;:::i;:::-;;;-1:-1:-1;;;;;405:10263:18;;;;;9032:21;;;;9089:15;;405:10263;9089:15;;:::i;:::-;405:10263;9156:23;;;9028:544;405:10263;;;;;;;;;;;;;;;;;;;;;;9028:544;9317:20;;405:10263;9317:20;;:::i;:::-;405:10263;;;;9365:9;405:10263;;;;;;;;;;;;;;;;9455:40;9520:41;9455:40;;;;;:::i;:::-;9520:41;;:::i;:::-;9028:544;;;405:10263;;;;;;-1:-1:-1;;405:10263:18;;;;;;;;;-1:-1:-1;;;;;405:10263:18;1606:10;:17;1602:41;;3144:4;3123:25;;3119:56;;3198:38;405:10263;;3119:56;3157:18;;;405:10263;3157:18;405:10263;;3157:18;405:10263;;;;;;-1:-1:-1;;405:10263:18;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;-1:-1:-1;;405:10263:18;;;;-1:-1:-1;;;;;405:10263:18;;:::i;:::-;;;;1290:40;405:10263;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;405:10263:18;;;;;990:32;405:10263;;;;;;;;;;;;;-1:-1:-1;;405:10263:18;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;405:10263:18;1606:10;:17;1602:41;;-1:-1:-1;;;;;405:10263:18;;;;;4630:9;405:10263;;;;;;;;;;;;;;;;;;;;;;;;;;;4736:15;405:10263;;;;;4698:54;;405:10263;;4698:54;405:10263;;;;;;;-1:-1:-1;;405:10263:18;;;;5090:6:26;-1:-1:-1;;;;;405:10263:18;5081:4:26;5073:23;5069:145;;405:10263:18;;;-1:-1:-1;;;;;;;;;;;405:10263:18;;;5069:145:26;4844:29;;;405:10263:18;5174:29:26;405:10263:18;;5174:29:26;405:10263:18;;;-1:-1:-1;;405:10263:18;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4667:6:26;405:10263:18;4658:4:26;4650:23;;;:120;;;;405:10263:18;4633:251:26;;;405:10263:18;;-1:-1:-1;;;;;405:10263:18;1606:10;:17;1602:41;;405:10263;;-1:-1:-1;;;6131:52:26;;-1:-1:-1;;;;;405:10263:18;;;;;;;;;6131:52:26;;405:10263:18;;6131:52:26;;;405:10263:18;-1:-1:-1;6127:437:26;;1805:47:39;;;;405:10263:18;6493:60:26;405:10263:18;;;;6493:60:26;6127:437;6225:40;-1:-1:-1;;;;;;;;;;;6225:40:26;;;6221:120;;1748:29:39;;;:34;1744:119;;-1:-1:-1;;;;;;;;;;;405:10263:18;;-1:-1:-1;;;;;;405:10263:18;;;;;2407:36:39;-1:-1:-1;;2407:36:39;405:10263:18;;2458:15:39;:11;;405:10263:18;4065:25:45;;4107:55;4065:25;;;;;;405:10263:18;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;4107:55:45;:::i;:::-;405:10263:18;;;;4107:55:45;:::i;2454:148:39:-;6163:9;;;;6159:70;;405:10263:18;6159:70:39;6199:19;;;405:10263:18;6199:19:39;405:10263:18;;6199:19:39;1744:119;1805:47;;;405:10263:18;1805:47:39;405:10263:18;;;;1805:47:39;6221:120:26;6292:34;;;405:10263:18;6292:34:26;405:10263:18;;;;6292:34:26;6131:52;;;;405:10263:18;6131:52:26;;405:10263:18;6131:52:26;;;;;;405:10263:18;6131:52:26;;;:::i;:::-;;;405:10263:18;;;;;6131:52:26;;;;;;;-1:-1:-1;6131:52:26;;4650:120;-1:-1:-1;;;;;;;;;;;405:10263:18;-1:-1:-1;;;;;405:10263:18;4728:42:26;;;-1:-1:-1;4650:120:26;;;405:10263:18;;;;;;-1:-1:-1;;405:10263:18;;;;923:30;405:10263;;;-1:-1:-1;;;;;405:10263:18;;;;;;;;;;;;;;-1:-1:-1;;405:10263:18;;;;;;:::i;:::-;;;-1:-1:-1;;;;;405:10263:18;1606:10;:17;1602:41;;2569:34;405:10263;;-1:-1:-1;;;;;;405:10263:18;-1:-1:-1;;;;;405:10263:18;;;;;;;;;;;;;;;;;-1:-1:-1;;405:10263:18;;;;;;;;-1:-1:-1;;;;;405:10263:18;;;;;;;;;;;;;;-1:-1:-1;;405:10263:18;;;;;;;745:5;405:10263;;;;;;;;;-1:-1:-1;;405:10263:18;;;;;806:3;405:10263;;;;;;;;-1:-1:-1;;;;;405:10263:18;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;405:10263:18;;;;;-1:-1:-1;405:10263:18;;;;;;;;;-1:-1:-1;;405:10263:18;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;405:10263:18;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5582:411::-;405:10263;;5582:411;;;-1:-1:-1;;;;;405:10263:18;;;;;5678:21;5674:74;;5786:20;;5944:42;5786:20;;:::i;:::-;5884:9;;;;;:::i;:::-;5944:42;:::i;:::-;5582:411;:::o;5674:74::-;5722:15;;;;:::i;10111:378::-;405:10263;;-1:-1:-1;;;;;405:10263:18;;;;;10194:21;10190:139;;10358:20;;10444:38;10358:20;;:::i;:::-;10417:9;;;;;:::i;:::-;10444:38;:::i;10190:139::-;10303:15;;;:::i;6136:517::-;405:10263;;-1:-1:-1;;;;;405:10263:18;;;;;6225:21;;6221:74;;405:10263;-1:-1:-1;405:10263:18;6332:9;405:10263;;6556:56;;405:10263;-1:-1:-1;405:10263:18;;6476:8;6378:20;;;:::i;:::-;6476:8;;;:::i;:::-;405:10263;-1:-1:-1;405:10263:18;6332:9;405:10263;;;;-1:-1:-1;405:10263:18;;;;6596:15;;;;;6556:56;;405:10263;;;;;;;;;;;;;;;;;;6556:56;;;;6136:517;:::o;405:10263::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;405:10263:18;;;;;;;:::o;9656:377::-;405:10263;;-1:-1:-1;;;;;405:10263:18;;;;;9739:21;9735:139;;9903:20;;9989:37;9903:20;;:::i;:::-;9962:9;;;;;:::i;:::-;9989:37;:::i;6994:221::-;7064:15;405:10263;-1:-1:-1;;;;;405:10263:18;7064:29;;7060:95;;7171:37;;405:10263;;;;;;;;;;7171:37;;;;;;;;;405:10263;7171:37;;;7164:44;6994:221;:::o;7171:37::-;;;;;;;;;;;;;405:10263;7171:37;;;:::i;:::-;;;405:10263;;;;;6994:221;:::o;7171:37::-;;;-1:-1:-1;7171:37:18;;;405:10263;;;;;;;;;7060:95;7109:22;684:8;7109:22;:::o;6731:119::-;405:10263;;-1:-1:-1;;;6817:26:18;;405:10263;6817:26;;405:10263;;6817:26;;405:10263;;-1:-1:-1;;;;;405:10263:18;6817:26;;;;;;;-1:-1:-1;6817:26:18;;;6810:33;6731:119;:::o;405:10263::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8211:539::-;-1:-1:-1;;;;;405:10263:18;-1:-1:-1;405:10263:18;;;8318:9;405:10263;;;;;;;8403:13;;8399:50;;8620:28;745:5;8526:66;:20;;;;:66;:20;;;8549;;;:::i;:::-;8526:66;;8631:17;405:10263;8620:28;;:::i;:::-;405:10263;-1:-1:-1;8690:53:18;;8211:539::o;8690:53::-;8722:21;;;-1:-1:-1;8722:21:18;;-1:-1:-1;8722:21:18;8526:66;8572:20;;;;:::i;:::-;8526:66;;;8399:50;8432:7;;:::o;7444:683::-;-1:-1:-1;;;;;405:10263:18;;;;;7606:17;405:10263;;;;;;7717:11;;7713:59;;745:5;405:10263;;;745:5;405:10263;;;745:5;7882:44;;;;:::i;:::-;405:10263;7444:683;:::o;7713:59::-;7744:17;;:::o;7444:683::-;-1:-1:-1;;;;;405:10263:18;;;;;7606:17;405:10263;;;;;;7717:11;;7713:59;;745:5;405:10263;;745:5;405:10263;;;;745:5;8043:44;;;;:::i;7444:683::-;-1:-1:-1;;;;;405:10263:18;;;;;7606:17;405:10263;;;;;;7444:683;;7717:11;;7713:59;;7790:331;;;745:5;405:10263;;;745:5;405:10263;;;745:5;7882:44;;;;:::i;7790:331::-;745:5;405:10263;;745:5;405:10263;;;;745:5;8043:44;;;;:::i;7713:59::-;7744:17;;;:::o;4437:582:45:-;;4609:8;;-1:-1:-1;405:10263:18;;5690:21:45;:17;;5815:105;;;;;;5686:301;5957:19;;;5710:1;5957:19;;5710:1;5957:19;4605:408;405:10263:18;;4857:22:45;:49;;;4605:408;4853:119;;4985:17;;:::o;4853:119::-;-1:-1:-1;;;4878:1:45;4933:24;;;-1:-1:-1;;;;;405:10263:18;;;;4933:24:45;405:10263:18;;;4933:24:45;4857:49;4883:18;;;:23;4857:49;","linkReferences":{},"immutableReferences":{"10672":[{"start":2264,"length":32},{"start":2472,"length":32}]}},"methodIdentifiers":{"BASIS_POINTS_DIVISOR()":"126082cf","MAX_SPREAD_BASIS_POINTS()":"0957aed9","PRICE_PRECISION()":"95082d25","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","forceUpdatePrice(address,uint256)":"5d42fb6b","getMaxPrice(address)":"e124e6d2","getMinPrice(address)":"81a612d6","getPrice(address,bool)":"76d69760","getPriceInfo(address)":"8edbf436","gov()":"12d43a51","initialize(address)":"c4d66de8","isKeeper(address)":"6ba42aaa","lastPrice(address)":"f5a6ba2e","maxPriceChangeBps()":"697cd71a","proxiableUUID()":"52d1902d","setKeeper(address,bool)":"d1b9e853","setMaxPriceChangeBps(uint256)":"83daeb47","setSpreadBasisPoints(address,uint256)":"9b889380","setSpreadBasisPointsForMultiple(address[],uint256[])":"c9e0c106","setWusdPriceSource(address)":"229f7df7","spreadBasisPoints(address)":"a27ea386","updatePrice(address)":"96e85ced","upgradeToAndCall(address,bytes)":"4f1ef286","wusdAddress()":"c62db206","wusdPriceSource()":"4d343496"}}}},"contracts/ytLp/core/YTRewardRouter.sol":{"YTRewardRouter":{"abi":[{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"addLiquidity","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_minUsdy","type":"uint256","internalType":"uint256"},{"name":"_minYtLP","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getAccountValue","inputs":[{"name":"_account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getYtLPPrice","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"gov","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_usdy","type":"address","internalType":"address"},{"name":"_ytLP","type":"address","internalType":"address"},{"name":"_ytPoolManager","type":"address","internalType":"address"},{"name":"_ytVault","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"removeLiquidity","inputs":[{"name":"_tokenOut","type":"address","internalType":"address"},{"name":"_ytLPAmount","type":"uint256","internalType":"uint256"},{"name":"_minOut","type":"uint256","internalType":"uint256"},{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapYT","inputs":[{"name":"_tokenIn","type":"address","internalType":"address"},{"name":"_tokenOut","type":"address","internalType":"address"},{"name":"_amountIn","type":"uint256","internalType":"uint256"},{"name":"_minOut","type":"uint256","internalType":"uint256"},{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"usdy","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"ytLP","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"ytPoolManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"ytVault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Swap","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"tokenIn","type":"address","indexed":false,"internalType":"address"},{"name":"tokenOut","type":"address","indexed":false,"internalType":"address"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AlreadyInitialized","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"EnforcedPause","inputs":[]},{"type":"error","name":"ExpectedPause","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"Forbidden","inputs":[]},{"type":"error","name":"InsufficientOutput","inputs":[]},{"type":"error","name":"InvalidAddress","inputs":[]},{"type":"error","name":"InvalidAmount","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Forbidden\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientOutput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"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\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minUsdy\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minYtLP\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getAccountValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getYtLPPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gov\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_usdy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_ytLP\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_ytPoolManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_ytVault\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_ytLPAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"swapYT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"usdy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ytLP\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ytPoolManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ytVault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"UUPS\\u53ef\\u5347\\u7ea7\\u5408\\u7ea6\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"addLiquidity(address,uint256,uint256,uint256)\":{\"params\":{\"_amount\":\"\\u4ee3\\u5e01\\u6570\\u91cf\",\"_minUsdy\":\"\\u6700\\u5c0fUSDY\\u6570\\u91cf\",\"_minYtLP\":\"\\u6700\\u5c0fytLP\\u6570\\u91cf\",\"_token\":\"YT\\u4ee3\\u5e01\\u6216WUSD\\u5730\\u5740\"},\"returns\":{\"_0\":\"ytLPAmount \\u83b7\\u5f97\\u7684ytLP\\u6570\\u91cf\"}},\"getAccountValue(address)\":{\"params\":{\"_account\":\"\\u8d26\\u6237\\u5730\\u5740\"},\"returns\":{\"_0\":\"\\u8d26\\u6237\\u6301\\u6709\\u7684ytLP\\u4ef7\\u503c\\uff08USDY\\u8ba1\\u4ef7\\uff09\"}},\"getYtLPPrice()\":{\"returns\":{\"_0\":\"ytLP\\u4ef7\\u683c\\uff0818\\u4f4d\\u7cbe\\u5ea6\\uff09\"}},\"initialize(address,address,address,address)\":{\"params\":{\"_usdy\":\"USDY\\u4ee3\\u5e01\\u5730\\u5740\",\"_ytLP\":\"ytLP\\u4ee3\\u5e01\\u5730\\u5740\",\"_ytPoolManager\":\"YTPoolManager\\u5730\\u5740\",\"_ytVault\":\"YTVault\\u5730\\u5740\"}},\"pause()\":{\"details\":\"\\u6682\\u505c\\u540e\\uff0c\\u6240\\u6709\\u8d44\\u91d1\\u6d41\\u52a8\\u64cd\\u4f5c\\u5c06\\u88ab\\u7981\\u6b62\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"removeLiquidity(address,uint256,uint256,address)\":{\"params\":{\"_minOut\":\"\\u6700\\u5c0f\\u8f93\\u51fa\\u6570\\u91cf\",\"_receiver\":\"\\u63a5\\u6536\\u5730\\u5740\",\"_tokenOut\":\"\\u8f93\\u51fa\\u4ee3\\u5e01\\u5730\\u5740\",\"_ytLPAmount\":\"ytLP\\u6570\\u91cf\"},\"returns\":{\"_0\":\"amountOut \\u83b7\\u5f97\\u7684\\u4ee3\\u5e01\\u6570\\u91cf\"}},\"swapYT(address,address,uint256,uint256,address)\":{\"params\":{\"_amountIn\":\"\\u8f93\\u5165\\u6570\\u91cf\",\"_minOut\":\"\\u6700\\u5c0f\\u8f93\\u51fa\\u6570\\u91cf\",\"_receiver\":\"\\u63a5\\u6536\\u5730\\u5740\",\"_tokenIn\":\"\\u8f93\\u5165\\u4ee3\\u5e01\\u5730\\u5740\",\"_tokenOut\":\"\\u8f93\\u51fa\\u4ee3\\u5e01\\u5730\\u5740\"},\"returns\":{\"_0\":\"amountOut \\u83b7\\u5f97\\u7684\\u4ee3\\u5e01\\u6570\\u91cf\"}},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"\\u9884\\u7559\\u5b58\\u50a8\\u7a7a\\u95f4\\uff0c\\u7528\\u4e8e\\u672a\\u6765\\u5347\\u7ea7\\u65f6\\u6dfb\\u52a0\\u65b0\\u7684\\u72b6\\u6001\\u53d8\\u91cf 50\\u4e2aslot = 50 * 32 bytes = 1600 bytes\"}},\"title\":\"YTRewardRouter\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addLiquidity(address,uint256,uint256,uint256)\":{\"notice\":\"\\u6dfb\\u52a0\\u6d41\\u52a8\\u6027\"},\"getAccountValue(address)\":{\"notice\":\"\\u83b7\\u53d6\\u8d26\\u6237\\u4ef7\\u503c\"},\"getYtLPPrice()\":{\"notice\":\"\\u83b7\\u53d6ytLP\\u4ef7\\u683c\"},\"initialize(address,address,address,address)\":{\"notice\":\"\\u521d\\u59cb\\u5316\\u5408\\u7ea6\"},\"pause()\":{\"notice\":\"\\u6682\\u505c\\u5408\\u7ea6\\uff08\\u4ec5gov\\u53ef\\u8c03\\u7528\\uff09\"},\"removeLiquidity(address,uint256,uint256,address)\":{\"notice\":\"\\u79fb\\u9664\\u6d41\\u52a8\\u6027\"},\"swapYT(address,address,uint256,uint256,address)\":{\"notice\":\"YT\\u4ee3\\u5e01\\u4e92\\u6362\"},\"unpause()\":{\"notice\":\"\\u6062\\u590d\\u5408\\u7ea6\\uff08\\u4ec5gov\\u53ef\\u8c03\\u7528\\uff09\"}},\"notice\":\"\\u7528\\u6237\\u4ea4\\u4e92\\u5165\\u53e3\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ytLp/core/YTRewardRouter.sol\":\"YTRewardRouter\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IYTPoolManager.sol\":{\"keccak256\":\"0x41073e177c27df96724e618d5bd1077cd1413ce415770818c0b7a0716677d8a7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e114a1f3bd39b837f7f9a19a06c65a3ce0ab80788912777479d5f540a157ab9\",\"dweb:/ipfs/QmXrSiZ3jjbzNtxtq5mACxrkWVAkA22MZYs4QcZ6Eqt4BC\"]},\"contracts/interfaces/IYTVault.sol\":{\"keccak256\":\"0xd0d67c7560f2c46466a2575b3da8a3253bc955c1023abaebd29e2f7ec1cf0b42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c830f6a2e31c80a1c74570613baf4e653eca1425de20a2869ff38fc77fae3800\",\"dweb:/ipfs/QmbLR7bMSyLqAMMuHMDC8y9B7e4f8tDGpmmS8RyrvSk12z\"]},\"contracts/ytLp/core/YTRewardRouter.sol\":{\"keccak256\":\"0x9b9cf4f97512f372ffe4e05e1d00e64a04efe81aea9786fe2a54c85c039b6be3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fdad45e00f69a00070f0711d53b7a3932d9c219611bc952e9d1ef7ba813a1ac1\",\"dweb:/ipfs/QmR9zCHYdUNYEZUYR7L9vAqEx6po8SwvGGmBo4iBwPdiBr\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x574a7451e42724f7de29e2855c392a8a5020acd695169466a18459467d719d63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bc189f63b639ee173dd7b6fecc39baf7113bf161776aea22b34c57fdd1872ec\",\"dweb:/ipfs/QmZAf2VtjDLRULqjJkde6LNsxAg12tUqpPqgUQQZbAjgtZ\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0xa6bf6b7efe0e6625a9dcd30c5ddf52c4c24fe8372f37c7de9dbf5034746768d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c353ee3705bbf6fadb84c0fb10ef1b736e8ca3ca1867814349d1487ed207beb\",\"dweb:/ipfs/QmcugaPssrzGGE8q4YZKm2ZhnD3kCijjcgdWWg76nWt3FY\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8150ceb4ac947e8a442b2a9c017e01e880b2be2dd958f1fa9bc405f4c5a86508\",\"dweb:/ipfs/QmbcBmFX66AY6Kbhnd5gx7zpkgqnUafo43XnmayAM7zVdB\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60a0806040523460295730608052611028908161002e823960805181818161086701526109370152f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816312d43a5114610d3d575080631ece366a14610c065780631fb73c8b14610b7e5780633f4ba83a14610af75780634f1ef286146108bb57806352d1902d146108555780635ae80951146107245780635c975abb146106f6578063778d733d146106ce5780638456cb591461064557806384a08e631461061d5780638fed0b2c14610537578063925a9aef146103b757806398d506e91461038f578063ad3cb1cc14610331578063e348031b146103095763f8c8765e146100d7575f80fd5b34610305576080366003190112610305576100f0610d5f565b6100f8610d8b565b6044356001600160a01b0381169081900361030557610115610d75565b5f516020610fd35f395f51905f52549360ff8560401c16159467ffffffffffffffff8116801590816102fd575b60011490816102f3575b1590816102ea575b506102db5767ffffffffffffffff1981166001175f516020610fd35f395f51905f5255856102af575b506001600160a01b03169283156102a0576001600160a01b03169081156102a05782156102a0576001600160a01b03169283156102a0576101bc610ee9565b6101c4610ee9565b60015f516020610fb35f395f51905f52556101dd610ee9565b6101e5610ee9565b336001600160601b0360a01b5f5416175f556001600160601b0360a01b60015416176001556001600160601b0360a01b60025416176002556001600160601b0360a01b60035416176003556001600160601b0360a01b600454161760045561024957005b68ff0000000000000000195f516020610fd35f395f51905f5254165f516020610fd35f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63e6c4247b60e01b5f5260045ffd5b68ffffffffffffffffff191668010000000000000001175f516020610fd35f395f51905f52555f61017d565b63f92ee8a960e01b5f5260045ffd5b9050155f610154565b303b15915061014c565b879150610142565b5f80fd5b34610305575f366003190112610305576002546040516001600160a01b039091168152602090f35b34610305575f3660031901126103055760408051906103508183610da1565b600582526020820191640352e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b34610305575f366003190112610305576001546040516001600160a01b039091168152602090f35b346103055760a0366003190112610305576103d0610d5f565b6103d8610d8b565b6084356001600160a01b03811692919060443590849003610305576103fb610df3565b610403610e2b565b8015610528576004545f936001600160a01b0390811693602092909161042d918591163387610e52565b60048054604051634998b10960e11b81529182018690526001600160a01b0392831660248301819052604483019890985290958692606492849291165af192831561051d575f936104e9575b5060643583106104da576020936040519283528483015260408201528160608201527fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e4606260803392a260015f516020610fb35f395f51905f5255604051908152f35b63bb2875c360e01b5f5260045ffd5b9092506020813d602011610515575b8161050560209383610da1565b8101031261030557519184610479565b3d91506104f8565b6040513d5f823e3d90fd5b63162908e360e11b5f5260045ffd5b3461030557608036600319011261030557610550610d5f565b6024359061055c610d75565b91610565610df3565b61056d610e2b565b8015610528576003546040516371d597ad60e01b81523360048201526001600160a01b03938416602482015260448082019390935291356064830152928216608482015291602091839160a49183915f91165af1801561051d575f906105ea575b60209060015f516020610fb35f395f51905f5255604051908152f35b506020813d602011610615575b8161060460209383610da1565b8101031261030557602090516105ce565b3d91506105f7565b34610305575f366003190112610305576004546040516001600160a01b039091168152602090f35b34610305575f366003190112610305575f546001600160a01b031633036106bf5761066e610e2b565b600160ff195f516020610f935f395f51905f525416175f516020610f935f395f51905f52557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b631dd2188d60e31b5f5260045ffd5b34610305575f366003190112610305576003546040516001600160a01b039091168152602090f35b34610305575f36600319011261030557602060ff5f516020610f935f395f51905f5254166040519015158152f35b346103055760203660031901126103055761073d610d5f565b6002546040516370a0823160e01b81526001600160a01b0392831660048201529160209183916024918391165afa801561051d575f90610822575b60035460405163e245b5af60e01b8152600160048201529250602090839060249082906001600160a01b03165afa91821561051d575f926107ee575b508181029181830414901517156107da57602090670de0b6b3a764000060405191048152f35b634e487b7160e01b5f52601160045260245ffd5b9091506020813d60201161081a575b8161080a60209383610da1565b81010312610305575190826107b4565b3d91506107fd565b506020813d60201161084d575b8161083c60209383610da1565b810103126103055760249051610778565b3d915061082f565b34610305575f366003190112610305577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036108ac5760206040515f516020610f735f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b6040366003190112610305576108cf610d5f565b6024359067ffffffffffffffff82116103055736602383011215610305578160040135906108fc82610dd7565b9161090a6040519384610da1565b8083526020830193366024838301011161030557815f926024602093018737840101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115610ad5575b506108ac575f546001600160a01b031633036106bf576040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa5f9181610aa1575b506109ba5784634c9c8ce360e01b5f5260045260245ffd5b805f516020610f735f395f51905f52869203610a8f5750823b15610a7d575f516020610f735f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2825115610a64575f8091610a5a945190845af43d15610a5c573d91610a3e83610dd7565b92610a4c6040519485610da1565b83523d5f602085013e610f14565b005b606091610f14565b50505034610a6e57005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d602011610acd575b81610abd60209383610da1565b81010312610305575190866109a2565b3d9150610ab0565b5f516020610f735f395f51905f52546001600160a01b03161415905084610962565b34610305575f366003190112610305575f546001600160a01b031633036106bf575f516020610f935f395f51905f525460ff811615610b6f5760ff19165f516020610f935f395f51905f52557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b5f5260045ffd5b34610305575f3660031901126103055760035460405163e245b5af60e01b81526001600482015290602090829060249082906001600160a01b03165afa801561051d575f90610bd3575b602090604051908152f35b506020813d602011610bfe575b81610bed60209383610da1565b810103126103055760209051610bc8565b3d9150610be0565b3461030557608036600319011261030557610c1f610d5f565b60243590610c2b610df3565b610c33610e2b565b8115610528576001600160a01b031690610c4f81303385610e52565b60035460405163095ea7b360e01b81526001600160a01b039091166004820152602481018290526020816044815f875af1801561051d57610d00575b5060209060c460018060a01b0360035416935f60405195869485936317eb2a1560e01b855230600486015233602486015260448501526064840152604435608484015260643560a48401525af1801561051d575f906105ea5760209060015f516020610fb35f395f51905f5255604051908152f35b6020813d602011610d35575b81610d1960209383610da1565b8101031261030557519081151582036103055790506020610c8b565b3d9150610d0c565b34610305575f366003190112610305575f546001600160a01b03168152602090f35b600435906001600160a01b038216820361030557565b606435906001600160a01b038216820361030557565b602435906001600160a01b038216820361030557565b90601f8019910116810190811067ffffffffffffffff821117610dc357604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff8111610dc357601f01601f191660200190565b60025f516020610fb35f395f51905f525414610e1c5760025f516020610fb35f395f51905f5255565b633ee5aeb560e01b5f5260045ffd5b60ff5f516020610f935f395f51905f525416610e4357565b63d93c066560e01b5f5260045ffd5b6040516323b872dd60e01b60208083019182526001600160a01b039485166024840152949093166044820152606480820195909552938452925f9190610e99608482610da1565b519082855af11561051d575f513d610ee057506001600160a01b0381163b155b610ec05750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b60011415610eb9565b60ff5f516020610fd35f395f51905f525460401c1615610f0557565b631afcd79f60e31b5f5260045ffd5b90610f385750805115610f2957602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580610f69575b610f49575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15610f4156fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbccd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122063b57b322f0e43d6347edd7f4ac06a691d597b2b2b3bf0fa80c4688d3f8e377d64736f6c634300081e0033","sourceMap":"671:5694:19:-:0;;;;;;;1171:4:26;1163:13;;671:5694:19;;;;;;1163:13:26;671:5694:19;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"6080806040526004361015610012575f80fd5b5f3560e01c90816312d43a5114610d3d575080631ece366a14610c065780631fb73c8b14610b7e5780633f4ba83a14610af75780634f1ef286146108bb57806352d1902d146108555780635ae80951146107245780635c975abb146106f6578063778d733d146106ce5780638456cb591461064557806384a08e631461061d5780638fed0b2c14610537578063925a9aef146103b757806398d506e91461038f578063ad3cb1cc14610331578063e348031b146103095763f8c8765e146100d7575f80fd5b34610305576080366003190112610305576100f0610d5f565b6100f8610d8b565b6044356001600160a01b0381169081900361030557610115610d75565b5f516020610fd35f395f51905f52549360ff8560401c16159467ffffffffffffffff8116801590816102fd575b60011490816102f3575b1590816102ea575b506102db5767ffffffffffffffff1981166001175f516020610fd35f395f51905f5255856102af575b506001600160a01b03169283156102a0576001600160a01b03169081156102a05782156102a0576001600160a01b03169283156102a0576101bc610ee9565b6101c4610ee9565b60015f516020610fb35f395f51905f52556101dd610ee9565b6101e5610ee9565b336001600160601b0360a01b5f5416175f556001600160601b0360a01b60015416176001556001600160601b0360a01b60025416176002556001600160601b0360a01b60035416176003556001600160601b0360a01b600454161760045561024957005b68ff0000000000000000195f516020610fd35f395f51905f5254165f516020610fd35f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63e6c4247b60e01b5f5260045ffd5b68ffffffffffffffffff191668010000000000000001175f516020610fd35f395f51905f52555f61017d565b63f92ee8a960e01b5f5260045ffd5b9050155f610154565b303b15915061014c565b879150610142565b5f80fd5b34610305575f366003190112610305576002546040516001600160a01b039091168152602090f35b34610305575f3660031901126103055760408051906103508183610da1565b600582526020820191640352e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b34610305575f366003190112610305576001546040516001600160a01b039091168152602090f35b346103055760a0366003190112610305576103d0610d5f565b6103d8610d8b565b6084356001600160a01b03811692919060443590849003610305576103fb610df3565b610403610e2b565b8015610528576004545f936001600160a01b0390811693602092909161042d918591163387610e52565b60048054604051634998b10960e11b81529182018690526001600160a01b0392831660248301819052604483019890985290958692606492849291165af192831561051d575f936104e9575b5060643583106104da576020936040519283528483015260408201528160608201527fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e4606260803392a260015f516020610fb35f395f51905f5255604051908152f35b63bb2875c360e01b5f5260045ffd5b9092506020813d602011610515575b8161050560209383610da1565b8101031261030557519184610479565b3d91506104f8565b6040513d5f823e3d90fd5b63162908e360e11b5f5260045ffd5b3461030557608036600319011261030557610550610d5f565b6024359061055c610d75565b91610565610df3565b61056d610e2b565b8015610528576003546040516371d597ad60e01b81523360048201526001600160a01b03938416602482015260448082019390935291356064830152928216608482015291602091839160a49183915f91165af1801561051d575f906105ea575b60209060015f516020610fb35f395f51905f5255604051908152f35b506020813d602011610615575b8161060460209383610da1565b8101031261030557602090516105ce565b3d91506105f7565b34610305575f366003190112610305576004546040516001600160a01b039091168152602090f35b34610305575f366003190112610305575f546001600160a01b031633036106bf5761066e610e2b565b600160ff195f516020610f935f395f51905f525416175f516020610f935f395f51905f52557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b631dd2188d60e31b5f5260045ffd5b34610305575f366003190112610305576003546040516001600160a01b039091168152602090f35b34610305575f36600319011261030557602060ff5f516020610f935f395f51905f5254166040519015158152f35b346103055760203660031901126103055761073d610d5f565b6002546040516370a0823160e01b81526001600160a01b0392831660048201529160209183916024918391165afa801561051d575f90610822575b60035460405163e245b5af60e01b8152600160048201529250602090839060249082906001600160a01b03165afa91821561051d575f926107ee575b508181029181830414901517156107da57602090670de0b6b3a764000060405191048152f35b634e487b7160e01b5f52601160045260245ffd5b9091506020813d60201161081a575b8161080a60209383610da1565b81010312610305575190826107b4565b3d91506107fd565b506020813d60201161084d575b8161083c60209383610da1565b810103126103055760249051610778565b3d915061082f565b34610305575f366003190112610305577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036108ac5760206040515f516020610f735f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b6040366003190112610305576108cf610d5f565b6024359067ffffffffffffffff82116103055736602383011215610305578160040135906108fc82610dd7565b9161090a6040519384610da1565b8083526020830193366024838301011161030557815f926024602093018737840101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115610ad5575b506108ac575f546001600160a01b031633036106bf576040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa5f9181610aa1575b506109ba5784634c9c8ce360e01b5f5260045260245ffd5b805f516020610f735f395f51905f52869203610a8f5750823b15610a7d575f516020610f735f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2825115610a64575f8091610a5a945190845af43d15610a5c573d91610a3e83610dd7565b92610a4c6040519485610da1565b83523d5f602085013e610f14565b005b606091610f14565b50505034610a6e57005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d602011610acd575b81610abd60209383610da1565b81010312610305575190866109a2565b3d9150610ab0565b5f516020610f735f395f51905f52546001600160a01b03161415905084610962565b34610305575f366003190112610305575f546001600160a01b031633036106bf575f516020610f935f395f51905f525460ff811615610b6f5760ff19165f516020610f935f395f51905f52557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b5f5260045ffd5b34610305575f3660031901126103055760035460405163e245b5af60e01b81526001600482015290602090829060249082906001600160a01b03165afa801561051d575f90610bd3575b602090604051908152f35b506020813d602011610bfe575b81610bed60209383610da1565b810103126103055760209051610bc8565b3d9150610be0565b3461030557608036600319011261030557610c1f610d5f565b60243590610c2b610df3565b610c33610e2b565b8115610528576001600160a01b031690610c4f81303385610e52565b60035460405163095ea7b360e01b81526001600160a01b039091166004820152602481018290526020816044815f875af1801561051d57610d00575b5060209060c460018060a01b0360035416935f60405195869485936317eb2a1560e01b855230600486015233602486015260448501526064840152604435608484015260643560a48401525af1801561051d575f906105ea5760209060015f516020610fb35f395f51905f5255604051908152f35b6020813d602011610d35575b81610d1960209383610da1565b8101031261030557519081151582036103055790506020610c8b565b3d9150610d0c565b34610305575f366003190112610305575f546001600160a01b03168152602090f35b600435906001600160a01b038216820361030557565b606435906001600160a01b038216820361030557565b602435906001600160a01b038216820361030557565b90601f8019910116810190811067ffffffffffffffff821117610dc357604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff8111610dc357601f01601f191660200190565b60025f516020610fb35f395f51905f525414610e1c5760025f516020610fb35f395f51905f5255565b633ee5aeb560e01b5f5260045ffd5b60ff5f516020610f935f395f51905f525416610e4357565b63d93c066560e01b5f5260045ffd5b6040516323b872dd60e01b60208083019182526001600160a01b039485166024840152949093166044820152606480820195909552938452925f9190610e99608482610da1565b519082855af11561051d575f513d610ee057506001600160a01b0381163b155b610ec05750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b60011415610eb9565b60ff5f516020610fd35f395f51905f525460401c1615610f0557565b631afcd79f60e31b5f5260045ffd5b90610f385750805115610f2957602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580610f69575b610f49575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15610f4156fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbccd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122063b57b322f0e43d6347edd7f4ac06a691d597b2b2b3bf0fa80c4688d3f8e377d64736f6c634300081e0033","sourceMap":"671:5694:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;671:5694:19;;;;;;:::i;:::-;;;:::i;:::-;;;-1:-1:-1;;;;;671:5694:19;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;671:5694:19;;;;;;;4301:16:25;671:5694:19;;;;4724:16:25;;:34;;;;671:5694:19;4803:1:25;4788:16;:50;;;;671:5694:19;4853:13:25;:30;;;;671:5694:19;4849:91:25;;;-1:-1:-1;;671:5694:19;;4803:1:25;671:5694:19;-1:-1:-1;;;;;;;;;;;671:5694:19;;4977:67:25;;671:5694:19;-1:-1:-1;;;;;;671:5694:19;;1743:19;;1739:48;;-1:-1:-1;;;;;671:5694:19;;1801:19;;1797:48;;1859:28;;1855:57;;-1:-1:-1;;;;;671:5694:19;;1926:22;;1922:51;;6891:76:25;;:::i;:::-;;;:::i;:::-;4803:1;-1:-1:-1;;;;;;;;;;;1991:1:30;6891:76:25;;:::i;:::-;;;:::i;:::-;2102:10:19;-1:-1:-1;;;;;671:5694:19;;;;;;;;-1:-1:-1;;;;;671:5694:19;;4803:1:25;671:5694:19;;;4803:1:25;671:5694:19;-1:-1:-1;;;;;671:5694:19;;2154:12;671:5694;;;2154:12;671:5694;-1:-1:-1;;;;;671:5694:19;;2176:30;671:5694;;;2176:30;671:5694;-1:-1:-1;;;;;671:5694:19;;;;;;;;5064:101:25;;671:5694:19;5064:101:25;671:5694:19;;-1:-1:-1;;;;;;;;;;;671:5694:19;;-1:-1:-1;;;;;;;;;;;671:5694:19;5140:14:25;671:5694:19;;;4803:1:25;671:5694:19;;5140:14:25;671:5694:19;1922:51;1771:16;;;671:5694;1957:16;671:5694;;1957:16;4977:67:25;-1:-1:-1;;671:5694:19;;;-1:-1:-1;;;;;;;;;;;671:5694:19;4977:67:25;;;4849:91;4906:23;;;671:5694:19;4906:23:25;671:5694:19;;4906:23:25;4853:30;4870:13;;;4853:30;;;4788:50;4816:4;4808:25;:30;;-1:-1:-1;4788:50:25;;4724:34;;;-1:-1:-1;4724:34:25;;671:5694:19;;;;;;;;;;-1:-1:-1;;671:5694:19;;;;1017:19;671:5694;;;-1:-1:-1;;;;;671:5694:19;;;;;;;;;;;;;;-1:-1:-1;;671:5694:19;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;671:5694:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;671:5694:19;;;;;;;;;;;;;-1:-1:-1;;671:5694:19;;;;;;;;-1:-1:-1;;;;;671:5694:19;;;;;;;;;;;;;;-1:-1:-1;;671:5694:19;;;;;;:::i;:::-;;;:::i;:::-;;;-1:-1:-1;;;;;671:5694:19;;;;;;;;;;;;;3361:103:30;;:::i;:::-;1944:72:29;;:::i;:::-;5083:14:19;;5079:42;;671:5694;;;;-1:-1:-1;;;;;671:5694:19;;;;;;;;5239:9;;671:5694;;;5158:10;671:5694;5239:9;:::i;:::-;671:5694;;;;;-1:-1:-1;;;5288:54:19;;;;;671:5694;;;-1:-1:-1;;;;;671:5694:19;;;;;;;;;;;;;;;;;;;;;;;;;;5288:54;;;;;;;671:5694;5288:54;;;671:5694;;;;5365:19;;5361:52;;671:5694;;;;;;;;;;;;;;;;;;;;5437:56;671:5694;5158:10;5437:56;;671:5694;-1:-1:-1;;;;;;;;;;;1991:1:30;671:5694:19;;;;;;5361:52;5393:20;;;671:5694;5393:20;671:5694;;5393:20;5288:54;;;;671:5694;5288:54;;671:5694;5288:54;;;;;;671:5694;5288:54;;;:::i;:::-;;;671:5694;;;;;5288:54;;;;;;;-1:-1:-1;5288:54:19;;;671:5694;;;;;;;;;5079:42;3264:15;;;671:5694;5106:15;671:5694;;5106:15;671:5694;;;;;;-1:-1:-1;;671:5694:19;;;;;;:::i;:::-;;;;;;:::i;:::-;3361:103:30;;;:::i;:::-;1944:72:29;;:::i;:::-;4212:16:19;;4208:44;;4353:13;671:5694;;;-1:-1:-1;;;4338:178:19;;4289:10;671:5694;4338:178;;671:5694;-1:-1:-1;;;;;671:5694:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4338:178;;671:5694;;;;;4338:178;;;;;;671:5694;4338:178;;;671:5694;;1991:1:30;671:5694:19;-1:-1:-1;;;;;;;;;;;1991:1:30;671:5694:19;;;;;;4338:178;;671:5694;4338:178;;671:5694;4338:178;;;;;;671:5694;4338:178;;;:::i;:::-;;;671:5694;;;;;;;4338:178;;;;;-1:-1:-1;4338:178:19;;671:5694;;;;;;-1:-1:-1;;671:5694:19;;;;;;;;-1:-1:-1;;;;;671:5694:19;;;;;;;;;;;;;;-1:-1:-1;;671:5694:19;;;;;;-1:-1:-1;;;;;671:5694:19;1306:10;:17;1302:41;;1944:72:29;;:::i;:::-;3300:4;671:5694:19;;-1:-1:-1;;;;;;;;;;;671:5694:19;;;-1:-1:-1;;;;;;;;;;;671:5694:19;3319:20:29;671:5694:19;;;1306:10;671:5694;;3319:20:29;671:5694:19;1302:41;1332:11;;;671:5694;1332:11;671:5694;;1332:11;671:5694;;;;;;-1:-1:-1;;671:5694:19;;;;1042:28;671:5694;;;-1:-1:-1;;;;;671:5694:19;;;;;;;;;;;;;;-1:-1:-1;;671:5694:19;;;;;;-1:-1:-1;;;;;;;;;;;671:5694:19;;;;;;;;;;;;;;;;-1:-1:-1;;671:5694:19;;;;;;:::i;:::-;6027:4;671:5694;;;-1:-1:-1;;;6020:32:19;;-1:-1:-1;;;;;671:5694:19;;;;6020:32;;671:5694;;;;;;6020:32;;671:5694;;;6020:32;;;;;;671:5694;6020:32;;;671:5694;6097:13;671:5694;;;-1:-1:-1;;;6082:44:19;;671:5694;;6082:44;;671:5694;;-1:-1:-1;671:5694:19;;;;6020:32;;671:5694;;-1:-1:-1;;;;;671:5694:19;6082:44;;;;;;;671:5694;6082:44;;;671:5694;;;;;;;;;;;;;;;;;;6170:8;671:5694;;;;;;;;;;;;;;;;6020:32;671:5694;;6082:44;;;;671:5694;6082:44;;671:5694;6082:44;;;;;;671:5694;6082:44;;;:::i;:::-;;;671:5694;;;;;6082:44;;;;;;;-1:-1:-1;6082:44:19;;6020:32;;671:5694;6020:32;;671:5694;6020:32;;;;;;671:5694;6020:32;;;:::i;:::-;;;671:5694;;;;6020:32;671:5694;;6020:32;;;;;-1:-1:-1;6020:32:19;;671:5694;;;;;;-1:-1:-1;;671:5694:19;;;;5090:6:26;-1:-1:-1;;;;;671:5694:19;5081:4:26;5073:23;5069:145;;671:5694:19;;;-1:-1:-1;;;;;;;;;;;671:5694:19;;;5069:145:26;4844:29;;;671:5694:19;5174:29:26;671:5694:19;;5174:29:26;671:5694:19;;;-1:-1:-1;;671:5694:19;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4667:6:26;671:5694:19;4658:4:26;4650:23;;;:120;;;;671:5694:19;4633:251:26;;;671:5694:19;;-1:-1:-1;;;;;671:5694:19;1306:10;:17;1302:41;;671:5694;;-1:-1:-1;;;6131:52:26;;-1:-1:-1;;;;;671:5694:19;;;;;;;;;6131:52:26;;671:5694:19;;6131:52:26;;;671:5694:19;-1:-1:-1;6127:437:26;;1805:47:39;;;;671:5694:19;6493:60:26;671:5694:19;;;;6493:60:26;6127:437;6225:40;-1:-1:-1;;;;;;;;;;;6225:40:26;;;6221:120;;1748:29:39;;;:34;1744:119;;-1:-1:-1;;;;;;;;;;;671:5694:19;;-1:-1:-1;;;;;;671:5694:19;;;;;2407:36:39;-1:-1:-1;;2407:36:39;671:5694:19;;2458:15:39;:11;;671:5694:19;4065:25:45;;4107:55;4065:25;;;;;;671:5694:19;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;4107:55:45;:::i;:::-;671:5694:19;;;;4107:55:45;:::i;2454:148:39:-;6163:9;;;;6159:70;;671:5694:19;6159:70:39;6199:19;;;671:5694:19;6199:19:39;671:5694:19;;6199:19:39;1744:119;1805:47;;;671:5694:19;1805:47:39;671:5694:19;;;;1805:47:39;6221:120:26;6292:34;;;671:5694:19;6292:34:26;671:5694:19;;;;6292:34:26;6131:52;;;;671:5694:19;6131:52:26;;671:5694:19;6131:52:26;;;;;;671:5694:19;6131:52:26;;;:::i;:::-;;;671:5694:19;;;;;6131:52:26;;;;;;;-1:-1:-1;6131:52:26;;4650:120;-1:-1:-1;;;;;;;;;;;671:5694:19;-1:-1:-1;;;;;671:5694:19;4728:42:26;;;-1:-1:-1;4650:120:26;;;671:5694:19;;;;;;-1:-1:-1;;671:5694:19;;;;;;-1:-1:-1;;;;;671:5694:19;1306:10;:17;1302:41;;-1:-1:-1;;;;;;;;;;;671:5694:19;;;;2971:9:29;2967:62;;671:5694:19;;;-1:-1:-1;;;;;;;;;;;671:5694:19;3627:22:29;671:5694:19;;;1306:10;671:5694;;3627:22:29;671:5694:19;2967:62:29;3003:15;;;671:5694:19;3003:15:29;671:5694:19;;3003:15:29;671:5694:19;;;;;;-1:-1:-1;;671:5694:19;;;;5724:13;671:5694;;;-1:-1:-1;;;5709:44:19;;671:5694;;5709:44;;671:5694;;;;;;5709:44;;671:5694;;-1:-1:-1;;;;;671:5694:19;5709:44;;;;;;671:5694;5709:44;;;671:5694;;;;;;;;;5709:44;;671:5694;5709:44;;671:5694;5709:44;;;;;;671:5694;5709:44;;;:::i;:::-;;;671:5694;;;;;;;5709:44;;;;;-1:-1:-1;5709:44:19;;671:5694;;;;;;-1:-1:-1;;671:5694:19;;;;;;:::i;:::-;;;3361:103:30;;;:::i;:::-;1944:72:29;;:::i;:::-;3243:12:19;;3239:40;;-1:-1:-1;;;;;671:5694:19;;3401:7;3394:4;;3316:10;671:5694;3401:7;:::i;:::-;3442:13;671:5694;;;-1:-1:-1;;;3419:46:19;;-1:-1:-1;;;;;671:5694:19;;;;3419:46;;671:5694;;;;;;;;;;;-1:-1:-1;3419:46:19;;;;;;;;;671:5694;;;;3505:195;671:5694;;;;;3442:13;671:5694;;;;;;;;;;;;;;3505:195;;3394:4;671:5694;3505:195;;671:5694;3316:10;671:5694;;;;;;;;;;;;;;;;;;;;;;;;3505:195;;;;;;671:5694;3505:195;;;671:5694;1991:1:30;671:5694:19;-1:-1:-1;;;;;;;;;;;1991:1:30;671:5694:19;;;;;;3419:46;671:5694;3419:46;;671:5694;3419:46;;;;;;671:5694;3419:46;;;:::i;:::-;;;671:5694;;;;;;;;;;;;;3419:46;-1:-1:-1;671:5694:19;3419:46;;;;;-1:-1:-1;3419:46:19;;671:5694;;;;;;-1:-1:-1;;671:5694:19;;;;;;-1:-1:-1;;;;;671:5694:19;;;;;;;;;;-1:-1:-1;;;;;671:5694:19;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;671:5694:19;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;671:5694:19;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;671:5694:19;;;;;-1:-1:-1;671:5694:19;;;;;;;;;-1:-1:-1;;671:5694:19;;;;:::o;3470:384:30:-;1991:1;-1:-1:-1;;;;;;;;;;;671:5694:19;3670:20:30;3666:88;;1991:1;-1:-1:-1;;;;;;;;;;;1991:1:30;3470:384::o;3666:88::-;3713:30;;;-1:-1:-1;3713:30:30;;-1:-1:-1;3713:30:30;2709:128:29;671:5694:19;-1:-1:-1;;;;;;;;;;;671:5694:19;;2770:61:29;;2709:128::o;2770:61::-;2805:15;;;-1:-1:-1;2805:15:29;;-1:-1:-1;2805:15:29;1618:188:44;671:5694:19;;-1:-1:-1;;;1745:53:44;;;;;;;-1:-1:-1;;;;;671:5694:19;;;1745:53:44;;;671:5694:19;;;;;;;;;;;;;;;;;1745:53:44;;;1618:188;-1:-1:-1;;1745:53:44;;;671:5694:19;1745:53:44;:::i;:::-;8507:421;;;;;;;;;-1:-1:-1;8507:421:44;;8942:15;;-1:-1:-1;;;;;;671:5694:19;;8960:26:44;:31;8942:68;8938:146;;1618:188;:::o;8938:146::-;-1:-1:-1;;;;9033:40:44;;;-1:-1:-1;;;;;671:5694:19;;;;9033:40:44;671:5694:19;1745:53:44;;9033:40;8942:68;9009:1;8994:16;;8942:68;;7082:141:25;671:5694:19;-1:-1:-1;;;;;;;;;;;671:5694:19;;;;7148:18:25;7144:73;;7082:141::o;7144:73::-;7189:17;;;-1:-1:-1;7189:17:25;;-1:-1:-1;7189:17:25;4437:582:45;;4609:8;;-1:-1:-1;671:5694:19;;5690:21:45;:17;;5815:105;;;;;;5686:301;5957:19;;;5710:1;5957:19;;5710:1;5957:19;4605:408;671:5694:19;;4857:22:45;:49;;;4605:408;4853:119;;4985:17;;:::o;4853:119::-;-1:-1:-1;;;4878:1:45;4933:24;;;-1:-1:-1;;;;;671:5694:19;;;;4933:24:45;671:5694:19;;;4933:24:45;4857:49;4883:18;;;:23;4857:49;","linkReferences":{},"immutableReferences":{"10672":[{"start":2151,"length":32},{"start":2359,"length":32}]}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","addLiquidity(address,uint256,uint256,uint256)":"1ece366a","getAccountValue(address)":"5ae80951","getYtLPPrice()":"1fb73c8b","gov()":"12d43a51","initialize(address,address,address,address)":"f8c8765e","pause()":"8456cb59","paused()":"5c975abb","proxiableUUID()":"52d1902d","removeLiquidity(address,uint256,uint256,address)":"8fed0b2c","swapYT(address,address,uint256,uint256,address)":"925a9aef","unpause()":"3f4ba83a","upgradeToAndCall(address,bytes)":"4f1ef286","usdy()":"98d506e9","ytLP()":"e348031b","ytPoolManager()":"778d733d","ytVault()":"84a08e63"}}}},"contracts/ytLp/core/YTVault.sol":{"YTVault":{"abi":[{"type":"function","name":"BASIS_POINTS_DIVISOR","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"PRICE_PRECISION","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"USDY_DECIMALS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"allWhitelistedTokens","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"buyUSDY","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"clearWhitelistedToken","inputs":[{"name":"_token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"emergencyMode","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getAllPoolTokens","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getFeeBasisPoints","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_usdyDelta","type":"uint256","internalType":"uint256"},{"name":"_feeBasisPoints","type":"uint256","internalType":"uint256"},{"name":"_taxBasisPoints","type":"uint256","internalType":"uint256"},{"name":"_increment","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMaxPrice","inputs":[{"name":"_token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMinPrice","inputs":[{"name":"_token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPoolValue","inputs":[{"name":"_maximise","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPrice","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_maximise","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRedemptionFeeBasisPoints","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_usdyAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getSwapFeeBasisPoints","inputs":[{"name":"_tokenIn","type":"address","internalType":"address"},{"name":"_tokenOut","type":"address","internalType":"address"},{"name":"_usdyAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTargetUsdyAmount","inputs":[{"name":"_token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"gov","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"hasDynamicFees","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_usdy","type":"address","internalType":"address"},{"name":"_priceFeed","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isSwapEnabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isSwapper","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxSwapAmount","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxSwapSlippageBps","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxUsdyAmounts","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"poolAmounts","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"priceFeed","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"sellUSDY","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"setDynamicFees","inputs":[{"name":"_hasDynamicFees","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setEmergencyMode","inputs":[{"name":"_emergencyMode","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setGov","inputs":[{"name":"_gov","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxSwapAmount","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxSwapSlippageBps","inputs":[{"name":"_slippageBps","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPoolManager","inputs":[{"name":"_manager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSwapEnabled","inputs":[{"name":"_isSwapEnabled","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSwapFees","inputs":[{"name":"_swapFee","type":"uint256","internalType":"uint256"},{"name":"_stableSwapFee","type":"uint256","internalType":"uint256"},{"name":"_taxBasisPoints","type":"uint256","internalType":"uint256"},{"name":"_stableTaxBasisPoints","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSwapper","inputs":[{"name":"_swapper","type":"address","internalType":"address"},{"name":"_isActive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setWhitelistedToken","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_decimals","type":"uint256","internalType":"uint256"},{"name":"_weight","type":"uint256","internalType":"uint256"},{"name":"_maxUsdyAmount","type":"uint256","internalType":"uint256"},{"name":"_isStable","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stableSwapFeeBasisPoints","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stableTaxBasisPoints","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stableTokens","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"swap","inputs":[{"name":"_tokenIn","type":"address","internalType":"address"},{"name":"_tokenOut","type":"address","internalType":"address"},{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"swapFeeBasisPoints","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"taxBasisPoints","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"tokenBalances","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"tokenDecimals","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"tokenWeights","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalTokenWeights","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"usdy","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"usdyAmounts","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"whitelistedTokens","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"withdrawToken","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_receiver","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ytPoolManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"AddLiquidity","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"usdyAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"EmergencyModeSet","inputs":[{"name":"enabled","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RemoveLiquidity","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"usdyAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Swap","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"tokenIn","type":"address","indexed":true,"internalType":"address"},{"name":"tokenOut","type":"address","indexed":true,"internalType":"address"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"feeBasisPoints","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SwapEnabledSet","inputs":[{"name":"enabled","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AmountExceedsLimit","inputs":[]},{"type":"error","name":"DailyLimitExceeded","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"EmergencyMode","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"Forbidden","inputs":[]},{"type":"error","name":"InsufficientPool","inputs":[]},{"type":"error","name":"InsufficientUSDYAmount","inputs":[]},{"type":"error","name":"InvalidAddress","inputs":[]},{"type":"error","name":"InvalidAmount","inputs":[]},{"type":"error","name":"InvalidFee","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidPoolAmount","inputs":[]},{"type":"error","name":"MaxUSDYExceeded","inputs":[]},{"type":"error","name":"NotInEmergency","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotSwapper","inputs":[]},{"type":"error","name":"OnlyPoolManager","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"SameToken","inputs":[]},{"type":"error","name":"SlippageTooHigh","inputs":[]},{"type":"error","name":"SwapDisabled","inputs":[]},{"type":"error","name":"TokenNotWhitelisted","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmountExceedsLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DailyLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmergencyMode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Forbidden\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientPool\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientUSDYAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPoolAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxUSDYExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInEmergency\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSwapper\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyPoolManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlippageTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"usdyAmount\",\"type\":\"uint256\"}],\"name\":\"AddLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"EmergencyModeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"usdyAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"RemoveLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feeBasisPoints\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"SwapEnabledSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BASIS_POINTS_DIVISOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PRICE_PRECISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USDY_DECIMALS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allWhitelistedTokens\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"buyUSDY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"clearWhitelistedToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"emergencyMode\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllPoolTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usdyDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_feeBasisPoints\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_taxBasisPoints\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_increment\",\"type\":\"bool\"}],\"name\":\"getFeeBasisPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"getMaxPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"getMinPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_maximise\",\"type\":\"bool\"}],\"name\":\"getPoolValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_maximise\",\"type\":\"bool\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usdyAmount\",\"type\":\"uint256\"}],\"name\":\"getRedemptionFeeBasisPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usdyAmount\",\"type\":\"uint256\"}],\"name\":\"getSwapFeeBasisPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"getTargetUsdyAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gov\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hasDynamicFees\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_usdy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_priceFeed\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSwapEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isSwapper\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxSwapAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxSwapSlippageBps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxUsdyAmounts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"poolAmounts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"priceFeed\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"sellUSDY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_hasDynamicFees\",\"type\":\"bool\"}],\"name\":\"setDynamicFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_emergencyMode\",\"type\":\"bool\"}],\"name\":\"setEmergencyMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gov\",\"type\":\"address\"}],\"name\":\"setGov\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"setMaxSwapAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_slippageBps\",\"type\":\"uint256\"}],\"name\":\"setMaxSwapSlippageBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_manager\",\"type\":\"address\"}],\"name\":\"setPoolManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_isSwapEnabled\",\"type\":\"bool\"}],\"name\":\"setSwapEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_swapFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stableSwapFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_taxBasisPoints\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stableTaxBasisPoints\",\"type\":\"uint256\"}],\"name\":\"setSwapFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_swapper\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isActive\",\"type\":\"bool\"}],\"name\":\"setSwapper\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxUsdyAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_isStable\",\"type\":\"bool\"}],\"name\":\"setWhitelistedToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stableSwapFeeBasisPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stableTaxBasisPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"stableTokens\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tokenOut\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapFeeBasisPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"taxBasisPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenDecimals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenWeights\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalTokenWeights\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"usdy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"usdyAmounts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelistedTokens\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ytPoolManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"UUPS\\u53ef\\u5347\\u7ea7\\u5408\\u7ea6\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"buyUSDY(address,address)\":{\"params\":{\"_receiver\":\"USDY\\u63a5\\u6536\\u5730\\u5740\",\"_token\":\"YT\\u4ee3\\u5e01\\u5730\\u5740\"},\"returns\":{\"_0\":\"usdyAmountAfterFees \\u5b9e\\u9645\\u83b7\\u5f97\\u7684USDY\\u6570\\u91cf\"}},\"getPoolValue(bool)\":{\"params\":{\"_maximise\":\"true=\\u4f7f\\u7528\\u6700\\u5927\\u4ef7\\u683c(\\u5bf9\\u534f\\u8bae\\u6709\\u5229), false=\\u4f7f\\u7528\\u6700\\u5c0f\\u4ef7\\u683c(\\u5bf9\\u7528\\u6237\\u6709\\u5229)\"},\"returns\":{\"_0\":\"\\u6c60\\u5b50\\u603b\\u4ef7\\u503c\\uff08USDY\\u8ba1\\u4ef7\\uff09\"}},\"getPrice(address,bool)\":{\"params\":{\"_maximise\":\"true=\\u6700\\u5927\\u4ef7\\u683c, false=\\u6700\\u5c0f\\u4ef7\\u683c\",\"_token\":\"\\u4ee3\\u5e01\\u5730\\u5740\"},\"returns\":{\"_0\":\"\\u4ef7\\u683c\\uff0830\\u4f4d\\u7cbe\\u5ea6\\uff09\"}},\"getRedemptionFeeBasisPoints(address,uint256)\":{\"params\":{\"_token\":\"\\u4ee3\\u5e01\\u5730\\u5740\",\"_usdyAmount\":\"USDY\\u6570\\u91cf\"},\"returns\":{\"_0\":\"\\u624b\\u7eed\\u8d39\\u7387\\uff08basis points\\uff09\"}},\"getSwapFeeBasisPoints(address,address,uint256)\":{\"params\":{\"_tokenIn\":\"\\u8f93\\u5165\\u4ee3\\u5e01\",\"_tokenOut\":\"\\u8f93\\u51fa\\u4ee3\\u5e01\",\"_usdyAmount\":\"USDY\\u6570\\u91cf\"},\"returns\":{\"_0\":\"\\u624b\\u7eed\\u8d39\\u7387\\uff08basis points\\uff09\"}},\"initialize(address,address)\":{\"params\":{\"_priceFeed\":\"\\u4ef7\\u683c\\u9884\\u8a00\\u673a\\u5730\\u5740\",\"_usdy\":\"USDY\\u4ee3\\u5e01\\u5730\\u5740\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"sellUSDY(address,address)\":{\"params\":{\"_receiver\":\"YT\\u4ee3\\u5e01\\u63a5\\u6536\\u5730\\u5740\",\"_token\":\"YT\\u4ee3\\u5e01\\u5730\\u5740\"},\"returns\":{\"_0\":\"amountOutAfterFees \\u5b9e\\u9645\\u83b7\\u5f97\\u7684YT\\u4ee3\\u5e01\\u6570\\u91cf\"}},\"swap(address,address,address)\":{\"params\":{\"_receiver\":\"\\u63a5\\u6536\\u5730\\u5740\",\"_tokenIn\":\"\\u8f93\\u5165\\u4ee3\\u5e01\\u5730\\u5740\",\"_tokenOut\":\"\\u8f93\\u51fa\\u4ee3\\u5e01\\u5730\\u5740\"},\"returns\":{\"_0\":\"amountOutAfterFees \\u5b9e\\u9645\\u83b7\\u5f97\\u7684\\u8f93\\u51fa\\u4ee3\\u5e01\\u6570\\u91cf\"}},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"\\u9884\\u7559\\u5b58\\u50a8\\u7a7a\\u95f4\\uff0c\\u7528\\u4e8e\\u672a\\u6765\\u5347\\u7ea7\\u65f6\\u6dfb\\u52a0\\u65b0\\u7684\\u72b6\\u6001\\u53d8\\u91cf 50\\u4e2aslot = 50 * 32 bytes = 1600 bytes\"}},\"title\":\"YTVault\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"buyUSDY(address,address)\":{\"notice\":\"\\u7528YT\\u4ee3\\u5e01\\u8d2d\\u4e70USDY\\uff08\\u6dfb\\u52a0\\u6d41\\u52a8\\u6027\\u65f6\\u8c03\\u7528\\uff09\"},\"getMaxPrice(address)\":{\"notice\":\"\\u83b7\\u53d6\\u6700\\u5927\\u4ef7\\u683c\"},\"getMinPrice(address)\":{\"notice\":\"\\u83b7\\u53d6\\u6700\\u5c0f\\u4ef7\\u683c\"},\"getPoolValue(bool)\":{\"notice\":\"\\u83b7\\u53d6\\u6c60\\u5b50\\u603b\\u4ef7\\u503c\"},\"getPrice(address,bool)\":{\"notice\":\"\\u83b7\\u53d6\\u4ee3\\u5e01\\u4ef7\\u683c\\uff08\\u5e26\\u4ef7\\u5dee\\uff09\"},\"getRedemptionFeeBasisPoints(address,uint256)\":{\"notice\":\"\\u83b7\\u53d6\\u8d4e\\u56de\\u624b\\u7eed\\u8d39\\u7387\\uff08sellUSDY\\u65f6\\u4f7f\\u7528\\uff09\"},\"getSwapFeeBasisPoints(address,address,uint256)\":{\"notice\":\"\\u83b7\\u53d6swap\\u624b\\u7eed\\u8d39\\u7387\\uff08\\u516c\\u5f00\\u65b9\\u6cd5\\uff0c\\u4f9b\\u524d\\u7aef\\u8c03\\u7528\\uff09\"},\"initialize(address,address)\":{\"notice\":\"\\u521d\\u59cb\\u5316\\u5408\\u7ea6\"},\"sellUSDY(address,address)\":{\"notice\":\"\\u7528USDY\\u5356\\u51fa\\u6362\\u53d6YT\\u4ee3\\u5e01\\uff08\\u79fb\\u9664\\u6d41\\u52a8\\u6027\\u65f6\\u8c03\\u7528\\uff09\"},\"swap(address,address,address)\":{\"notice\":\"YT\\u4ee3\\u5e01\\u4e92\\u6362\"}},\"notice\":\"\\u6838\\u5fc3\\u8d44\\u91d1\\u6c60\\uff0c\\u5904\\u7406YT\\u4ee3\\u5e01\\u7684\\u5b58\\u50a8\\u3001\\u4ea4\\u6362\\u548c\\u52a8\\u6001\\u624b\\u7eed\\u8d39\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ytLp/core/YTVault.sol\":\"YTVault\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"contracts/interfaces/IUSDY.sol\":{\"keccak256\":\"0xaade47070265f223011892bc2430ecb819edb10b1a46e41ea2c69f3d8cc84816\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a7501875c15baa98120e7b5607953b1874e2a0e80ac521e97d2bc834d590b6ef\",\"dweb:/ipfs/QmYJ8CkJV3XgPjGUBx6EKV4mgEUqRHeZGna193MrThpkjc\"]},\"contracts/interfaces/IYTPriceFeed.sol\":{\"keccak256\":\"0xf6ef53e156a8b9ca9d7dbdd3e48846285649e57cfaee4762293fae944d48779e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5d361a60315543c8137ab2ddb31676bf017f49739760eb7d97637886ba134a9d\",\"dweb:/ipfs/QmQYPz1FmCWwk1WCt5J46eSoSST4mHV4RiRwNfqV8CLMCT\"]},\"contracts/ytLp/core/YTVault.sol\":{\"keccak256\":\"0x944d1226bffd964b9ab0fd3eeb696c8f2178597fa7403c435cda7adac9d19cc4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37ad9ed9b3b3d1980a4b86092fb216c33dfed30679f41f75eb84dbefea16d422\",\"dweb:/ipfs/QmaBUmJjqyoXEng9QJdA1LrzkeEsF2QZ5uRUNDvDwqvoGq\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x574a7451e42724f7de29e2855c392a8a5020acd695169466a18459467d719d63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bc189f63b639ee173dd7b6fecc39baf7113bf161776aea22b34c57fdd1872ec\",\"dweb:/ipfs/QmZAf2VtjDLRULqjJkde6LNsxAg12tUqpPqgUQQZbAjgtZ\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8150ceb4ac947e8a442b2a9c017e01e880b2be2dd958f1fa9bc405f4c5a86508\",\"dweb:/ipfs/QmbcBmFX66AY6Kbhnd5gx7zpkgqnUafo43XnmayAM7zVdB\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60a080604052346029573060805261274e908161002e8239608051818181610f1d01526110260152f35b5f80fdfe60806040526004361015610011575f80fd5b5f5f3560e01c806301e3366714611c975780630905f56014611c7257806310eb56c214611c55578063126082cf14611c3957806312d43a5114611c125780631d517d6514611b575780632efc7660146119345780632f1983d4146118f6578063351a964d146118d35780633a0ede36146117855780633d3325831461150c5780633dd9bd82146114e85780633f2617cb1461147f57806342b60b0314611440578063485cc955146112145780634f1ef28614610faa578063523fba7f14610f7157806352d1902d14610f0a57806352f55eed14610ed1578063741bef1a14610ea857806376cd370e14610de057806376d6976014610db3578063778d733d14610d8a5780637a210a2b14610d6c5780637aef671514610d0d578063802f927014610cd85780638038cbd314610c7057806381a612d614610c4c5780638ee573ac14610c13578063933162121461089557806395082d251461086e57806398d506e9146108455780639f392eb314610822578063a22f239214610804578063a589d319146107bd578063ab2f3ad414610784578063ad3cb1cc14610728578063b64230ba146106e9578063b7c3565d146106cb578063bab3e9e6146105fb578063be32b3f81461058b578063c7e074c31461056e578063cfad57a214610503578063cffc734c146104e7578063d3af922d146104ae578063da13381614610494578063daf9c21014610455578063dc8f5fac14610437578063df73a26714610419578063e01af92c146103af578063e124e6d214610383578063e17d43081461034a578063e468baf014610306578063e7881011146102cd5763e89d59de14610277575f80fd5b346102ca5760203660031901126102ca578054600435906001600160a01b031633036102bb576107d081116102ac5760155580f35b63428637bb60e11b8252600482fd5b631dd2188d60e31b8252600482fd5b80fd5b50346102ca5760203660031901126102ca576020906040906001600160a01b036102f5611cf0565b168152601683522054604051908152f35b50346102ca5760203660031901126102ca57600435906006548210156102ca57602061033183611e01565b905460405160039290921b1c6001600160a01b03168152f35b50346102ca5760203660031901126102ca576020906040906001600160a01b03610372611cf0565b168152600f83522054604051908152f35b50346102ca5760203660031901126102ca5760206103a76103a2611cf0565b612319565b604051908152f35b50346102ca5760203660031901126102ca576103c9611d56565b81546001600160a01b031633036102bb5760207f5a9e84f78f7957cb4ed7478eb0fcad35ee4ecbe2e0f298420b28a3955392573f91151560ff196005541660ff821617600555604051908152a180f35b50346102ca57806003193601126102ca576020601154604051908152f35b50346102ca57806003193601126102ca576020600b54604051908152f35b50346102ca5760203660031901126102ca5760209060ff906040906001600160a01b03610480611cf0565b168152600784522054166040519015158152f35b50346102ca5760206103a76104a836611d1c565b91612447565b50346102ca5760203660031901126102ca576020906040906001600160a01b036104d6611cf0565b168152600e83522054604051908152f35b50346102ca57806003193601126102ca57602060405160128152f35b50346102ca5760203660031901126102ca5761051d611cf0565b8154906001600160a01b038216330361055f576001600160a01b0316908115610550576001600160a01b03191617815580f35b63e6c4247b60e01b8352600483fd5b631dd2188d60e31b8352600483fd5b50346102ca5760206103a761058236611d74565b93929092612068565b50346102ca5760203660031901126102ca576105a5611d56565b81546001600160a01b031633036102bb5760207f63382423ad002e5a7fcc41286858cb0a9ac9251517adf5d154e219544c40f44591151560055461ff008260081b169061ff00191617600555604051908152a180f35b50346102ca5760203660031901126102ca57610615611d56565b60065460035483929083906001600160a01b03165b83861061063c57602085604051908152f35b9091929361064986611e01565b905460039190911b1c6001600160a01b03168084526007602052604084205460ff16156106c1576001916106ae84836106b4948852600c60205268327cb2734119d3b7a9601e1b6106a860408a20546106a28c8561235f565b90611e4e565b046123b3565b90611e7f565b955b01949392919061062a565b50946001906106b6565b50346102ca57806003193601126102ca576020601554604051908152f35b50346102ca5760203660031901126102ca5760209060ff906040906001600160a01b03610714611cf0565b168152600484522054166040519015158152f35b50346102ca57806003193601126102ca57604080516107478282611daf565b6005815260208101640352e302e360dc1b81528251938492602084525180928160208601528585015e828201840152601f01601f19168101030190f35b50346102ca5760203660031901126102ca576020906040906001600160a01b036107ac611cf0565b168152600a83522054604051908152f35b50346102ca5760403660031901126102ca576107d7611cf0565b81546001600160a01b031633036102bb576001600160a01b03168152601660205260408120602435905580f35b50346102ca57806003193601126102ca576020601054604051908152f35b50346102ca57806003193601126102ca57602060ff601454166040519015158152f35b50346102ca57806003193601126102ca576003546040516001600160a01b039091168152602090f35b50346102ca57806003193601126102ca57602060405168327cb2734119d3b7a9601e1b8152f35b50346102ca5760603660031901126102ca576108af611cf0565b6108b7611d06565b916044356001600160a01b0381168103610c0f57338252600460205260ff6040832054161580610bfa575b610beb576108ee6121dc565b60055460ff8160081c16610bdc5760ff1615610bcd576001600160a01b0383168083526007602052604083205490919060ff1615610bbe576001600160a01b0385168084526007602052604084205490939060ff1615610baf57838314610ba05761095885612214565b918215610b915783825260166020526040822054610b6e575b61097a866122a5565b958061098589612319565b936109b768327cb2734119d3b7a9601e1b6109a08b89611e4e565b6003546001600160a01b03169586929091046123b3565b9268327cb2734119d3b7a9601e1b840284810468327cb2734119d3b7a9601e1b1485151715610b28576109f4916109ef888e93611e61565b6123b3565b94610a00848c85612447565b958661271003906127108211610b5a5761271091610a1d91611e4e565b04998a15610b4b57898352600c6020528a604084205410610b3c5790610a46610a4b9289611e4e565b611e61565b898111610ae2575b505087610a9393610a8884610a8260209d9686610a738c610a8e996124e8565b610a7d878a6125a2565b61253a565b856125e8565b886120d6565b612165565b604051918252848683015260408201527fd6d34547c69c5ee3d2667625c188acf1006abb93e0ee7cf03925c67cf776041360603392a460015f5160206126d95f395f51905f5255604051908152f35b610aec8a82611e2d565b6127108102908082046127101490151715610b285790610b0b91611e61565b60155410610b195780610a53565b63428637bb60e11b8152600490fd5b634e487b7160e01b83526011600452602483fd5b63785eab3760e01b8352600483fd5b63162908e360e11b8352600483fd5b634e487b7160e01b84526011600452602484fd5b838252601660205260408220548311156109715763172bd6a160e31b8252600482fd5b63162908e360e11b8252600482fd5b63100dac0560e11b8152600490fd5b6307c241ad60e51b8152600490fd5b6307c241ad60e51b8352600483fd5b630527cf7960e11b8252600482fd5b63185079b960e01b8352600483fd5b630f1442d560e11b8252600482fd5b506001546001600160a01b03163314156108e2565b5080fd5b50346102ca5760203660031901126102ca576020906040906001600160a01b03610c3b611cf0565b168152600983522054604051908152f35b50346102ca5760203660031901126102ca5760206103a7610c6b611cf0565b6122a5565b50346102ca5760803660031901126102ca57805460243590600435906001600160a01b0316330361055f57606481118015610cce575b610cbf5760105560115560443560125560643560135580f35b6358d620b360e01b8352600483fd5b5060328211610ca6565b50346102ca5760403660031901126102ca5760206103a7610cf7611cf0565b60035460243591906001600160a01b0316612447565b50346102ca5760203660031901126102ca57610d27611cf0565b81546001600160a01b031633036102bb576001600160a01b03168015610d5d576001600160601b0360a01b600154161760015580f35b63e6c4247b60e01b8252600482fd5b50346102ca57806003193601126102ca576020601254604051908152f35b50346102ca57806003193601126102ca576001546040516001600160a01b039091168152602090f35b50346102ca5760403660031901126102ca5760206103a7610dd2611cf0565b610dda611d65565b9061235f565b50346102ca57806003193601126102ca5760405180602060065491828152018091600685527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f90855b818110610e895750505082610e3f910383611daf565b604051928392602084019060208552518091526040840192915b818110610e67575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610e59565b82546001600160a01b0316845260209093019260019283019201610e29565b50346102ca57806003193601126102ca576002546040516001600160a01b039091168152602090f35b50346102ca5760203660031901126102ca576020906040906001600160a01b03610ef9611cf0565b168152600c83522054604051908152f35b50346102ca57806003193601126102ca577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610f625760206040515f5160206126b95f395f51905f528152f35b63703e46dd60e11b8152600490fd5b50346102ca5760203660031901126102ca576020906040906001600160a01b03610f99611cf0565b168152600d83522054604051908152f35b5060403660031901126102ca57610fbf611cf0565b6024359067ffffffffffffffff821161121057366023830112156112105781600401359083610fed83611de5565b93610ffb6040519586611daf565b8385526020850193366024828401011161121057806024602093018637850101526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163081149081156111ee575b506111df5783546001600160a01b031633036111d0576040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa869181611198575b506110aa57634c9c8ce360e01b86526004859052602486fd5b93845f5160206126b95f395f51905f528796036111865750823b15611174575f5160206126b95f395f51905f5280546001600160a01b031916821790558491907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8380a28051156111595761114d9382915190845af43d15611151573d9161113183611de5565b9261113f6040519485611daf565b83523d85602085013e61265a565b5080f35b60609161265a565b50505050346111655780f35b63b398979f60e01b8152600490fd5b634c9c8ce360e01b8552600452602484fd5b632a87526960e21b8652600452602485fd5b9091506020813d6020116111c8575b816111b460209383611daf565b810103126111c45751905f611091565b8680fd5b3d91506111a7565b631dd2188d60e31b8452600484fd5b63703e46dd60e11b8452600484fd5b5f5160206126b95f395f51905f52546001600160a01b0316141590505f611051565b8280fd5b50346102ca5760403660031901126102ca5761122e611cf0565b611236611d06565b5f5160206126f95f395f51905f52549160ff8360401c16159267ffffffffffffffff811680159081611438575b600114908161142e575b159081611425575b506114165767ffffffffffffffff1981166001175f5160206126f95f395f51905f5255836113ea575b506001600160a01b031690811580156113d9575b6113ca576112be61262f565b6112c661262f565b60015f5160206126d95f395f51905f52556112df61262f565b336001600160601b0360a01b855416178455816001600160601b0360a01b600354161760035560018060a01b03166001600160601b0360a01b6002541617600255600161ffff196005541617600555601e601055600460115560326012556014601355600160ff1960145416176014556103e86015558252600860205260408220600160ff198254161790556113725780f35b68ff0000000000000000195f5160206126f95f395f51905f5254165f5160206126f95f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b63e6c4247b60e01b8452600484fd5b506001600160a01b038116156112b2565b68ffffffffffffffffff191668010000000000000001175f5160206126f95f395f51905f52555f61129e565b63f92ee8a960e01b8552600485fd5b9050155f611275565b303b15915061126d565b859150611263565b50346102ca5760203660031901126102ca5760209060ff906040906001600160a01b0361146b611cf0565b168152600884522054166040519015158152f35b50346102ca5760403660031901126102ca57611499611cf0565b6114a1611d65565b82549091906001600160a01b0316330361055f576001600160a01b0316801561055057906114e59183526004602052604083209060ff801983541691151516179055565b80f35b50346102ca5760203660031901126102ca5760206103a7611507611cf0565b611e8c565b50346102ca5760403660031901126102ca57611526611cf0565b9061152f611d06565b6001549092906001600160a01b031633036117765761154c6121dc565b6005549060ff8260081c16610bdc576001600160a01b0381168084526007602052604084205490929060ff16156117675760ff16156117585760035461159a906001600160a01b0316612214565b908115611749576115aa81612319565b9368327cb2734119d3b7a9601e1b830283810468327cb2734119d3b7a9601e1b0361173557856115d991611e61565b6003546001600160a01b0316906115f390849083906123b3565b8015610b4b57611604818584612447565b61271003906127108211610b5a576127109161161f91611e4e565b04958615610b4b57858352600c60205286604084205410610b3c57611669918468327cb2734119d3b7a9601e1b6106a8611659948b611e4e565b61166387856125a2565b836125e8565b6003546001600160a01b0316803b15610c0f57604051632770a7eb60e21b8152306004820152602481018590529082908290604490829084905af1801561172a57611715575b50506040856116e67f34ef8e86237e7385b43618862e895c6ce827b2b7d6107ad415d54336c1dd2dd693610a8e8860209a896120d6565b81519384528684018690526001600160a01b031692a360015f5160206126d95f395f51905f5255604051908152f35b611720828092611daf565b6102ca57806116af565b6040513d84823e3d90fd5b634e487b7160e01b82526011600452602482fd5b63162908e360e11b8452600484fd5b630527cf7960e11b8352600483fd5b6307c241ad60e51b8452600484fd5b63f655705d60e01b8252600482fd5b50346102ca5761179436611d74565b855493959490936001600160a01b031633036118c4576001600160a01b03169182156118b557828552600760205260ff6040862054161561183d575b6114e594956117f7826117f2600b54878b52600a60205260408b205490611e2d565b611e7f565b600b5583875260096020526040872055828652600a6020526040862055818552600f602052604085205583526008602052604083209060ff801983541691151516179055565b60065495680100000000000000008710156118a1576118668760016114e5989901600655611e01565b81546001600160a01b0360039290921b91821b19169086901b179055838752600760205260408720805460ff191660011790559594506117d0565b634e487b7160e01b86526041600452602486fd5b63e6c4247b60e01b8552600485fd5b631dd2188d60e31b8552600485fd5b50346102ca57806003193601126102ca57602060ff600554166040519015158152f35b50346102ca5760203660031901126102ca57611910611d56565b81546001600160a01b031633036102bb5760ff801960145416911515161760145580f35b34611b08576040366003190112611b085761194d611cf0565b611955611d06565b6001549091906001600160a01b03163303611b48576119726121dc565b60055460ff8160081c16611b39576001600160a01b0382165f8181526007602052604090205490919060ff1615611b2a5760ff1615611b1b576119b482612214565b8015611b0c57826119c4816122a5565b6119f568327cb2734119d3b7a9601e1b6119de8386611e4e565b6003546001600160a01b03169485929091046123b3565b918215611b0c578568327cb2734119d3b7a9601e1b6106a8611a3a94611a35612710611a2e611a28611a469a8989612447565b8b611e4e565b0489611e2d565b611e4e565b84610a7d8483976124e8565b6003546001600160a01b0316803b15611b08576040516340c10f1960e01b81526001600160a01b038616600482015260248101859052905f908290604490829084905af18015611afd576020957fd2491a9b4fe81a7cd4511e8b7b7743951b061dad5bed7da8a7795b080ee08c7e92604092611aed575b5081519384528684018690526001600160a01b031692a360015f5160206126d95f395f51905f5255604051908152f35b5f611af791611daf565b5f611abd565b6040513d5f823e3d90fd5b5f80fd5b63162908e360e11b5f5260045ffd5b630527cf7960e11b5f5260045ffd5b6307c241ad60e51b5f5260045ffd5b63185079b960e01b5f5260045ffd5b63f655705d60e01b5f5260045ffd5b34611b08576020366003190112611b0857611b70611cf0565b5f546001600160a01b03163303611c03576001600160a01b03165f8181526007602052604090205460ff1615611b2a57611bb9600b54825f52600a60205260405f205490611e2d565b600b555f908152600760209081526040808320805460ff19908116909155600883528184208054909116905560098252808320839055600a8252808320839055600f909152812055005b631dd2188d60e31b5f5260045ffd5b34611b08575f366003190112611b08575f546040516001600160a01b039091168152602090f35b34611b08575f366003190112611b085760206040516127108152f35b34611b08575f366003190112611b08576020601354604051908152f35b34611b08575f366003190112611b0857602060ff60055460081c166040519015158152f35b34611b0857611ca536611d1c565b5f54909291906001600160a01b03163303611c035760ff60055460081c1615611ce157611cdf92610a8e916001600160a01b0384166120d6565b005b633b1cf39760e21b5f5260045ffd5b600435906001600160a01b0382168203611b0857565b602435906001600160a01b0382168203611b0857565b6060906003190112611b08576004356001600160a01b0381168103611b0857906024356001600160a01b0381168103611b08579060443590565b600435908115158203611b0857565b602435908115158203611b0857565b60a0906003190112611b08576004356001600160a01b0381168103611b0857906024359060443590606435906084358015158103611b085790565b90601f8019910116810190811067ffffffffffffffff821117611dd157604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff8111611dd157601f01601f191660200190565b600654811015611e195760065f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b91908203918211611e3a57565b634e487b7160e01b5f52601160045260245ffd5b81810292918115918404141715611e3a57565b8115611e6b570490565b634e487b7160e01b5f52601260045260245ffd5b91908201809211611e3a57565b6003546040516318160ddd60e01b81529190602090839060049082906001600160a01b03165afa918215611afd575f92611efe575b508115611ef8576001600160a01b03165f908152600a6020526040902054611ef591611eec91611e4e565b600b5490611e61565b90565b50505f90565b9091506020813d602011611f2a575b81611f1a60209383611daf565b81010312611b085751905f611ec1565b3d9150611f0d565b60ff60145416156120125760018060a01b0381165f52600e602052611f65611f5f60405f20549384611e7f565b91611e8c565b91821561200a578280821115611ffa57611f7e91611e2d565b905b8280821115611fea57611f9291611e2d565b905b808210611fc457611ef594611fb06106ae9493610a4693611e7f565b60011c9083821115611e4e57839150611e4e565b610a469150611fd39394611e4e565b81811115611fe15750505f90565b611ef591611e2d565b90611ff491611e2d565b90611f94565b9061200491611e2d565b90611f80565b505050905090565b5050905090565b60ff6014541615612012576001600160a01b0381165f908152600e6020526040902054916120478184611e7f565b508281111561205b5750611f655f91611e8c565b611f5f611f659184611e2d565b939091929360ff601454161561200a576001600160a01b0381165f908152600e60205260409020549261209b8185611e7f565b92156120ac575b50611f6590611e8c565b909150828111156120c45750611f655f5b91906120a2565b6120d1611f659184611e2d565b6120bd565b60405163a9059cbb60e01b60208083019182526001600160a01b0394909416602483015260448083019590955293815290925f91612115606482611daf565b519082855af115611afd575f513d61215c57506001600160a01b0381163b155b61213c5750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b60011415612135565b6040516370a0823160e01b8152306004820152906001600160a01b0316602082602481845afa918215611afd575f926121a8575b505f52600d60205260405f2055565b9091506020813d6020116121d4575b816121c460209383611daf565b81010312611b085751905f612199565b3d91506121b7565b60025f5160206126d95f395f51905f5254146122055760025f5160206126d95f395f51905f5255565b633ee5aeb560e01b5f5260045ffd5b6001600160a01b03165f818152600d60209081526040918290205491516370a0823160e01b8152306004820152929083602481845afa908115611afd575f9161226f575b611ef593505f52600d6020528060405f2055611e2d565b90506020833d60201161229d575b8161228a60209383611daf565b81010312611b0857611ef5925190612258565b3d915061227d565b6002546040516303b6b4bb60e51b81526001600160a01b0392831660048201525f60248201529160209183916044918391165afa908115611afd575f916122ea575090565b90506020813d602011612311575b8161230560209383611daf565b81010312611b08575190565b3d91506122f8565b6002546040516303b6b4bb60e51b81526001600160a01b039283166004820152600160248201529160209183916044918391165afa908115611afd575f916122ea575090565b6002546040516303b6b4bb60e51b81526001600160a01b039283166004820152921515602484015260209183916044918391165afa908115611afd575f916122ea575090565b604d8111611e3a57600a0a90565b60035490916001600160a01b03918216911680820361243557506012925b6001600160a01b0316908103612424575060125b80831461241e5780831161240857612403611ef5936106a292611e2d565b6123a5565b61240361241891611ef594611e2d565b90611e61565b50905090565b5f52600960205260405f20546123e5565b5f52600960205260405f2054926123d1565b9160018060a01b0383165f52600860205260ff60405f205416806124c7575b80156124be57601154905b156124b557601354915b60ff60145416156124ad5761249683838361249c9798611f32565b94612019565b808211156124a8575090565b905090565b509250505090565b6012549161247b565b60105490612471565b506001600160a01b0382165f9081526008602052604090205460ff16612466565b60018060a01b031690815f52600c60205261250860405f20918254611e7f565b9055805f52600c60205260405f2054905f52600d60205260405f20541061252b57565b634c937ab560e01b5f5260045ffd5b6001600160a01b03165f818152600e6020526040902054909161255c91611e7f565b815f52600e60205260405f2055805f52600f60205260405f20549081612580575050565b5f52600e60205260405f20541161259357565b6352b2cc0960e11b5f5260045ffd5b6001600160a01b03165f818152600c602052604090205482116125d9575f52600c6020526125d560405f20918254611e2d565b9055565b63785eab3760e01b5f5260045ffd5b6001600160a01b03165f818152600e602052604090205490918082106126205761261191611e2d565b905f52600e60205260405f2055565b6355dcccf360e01b5f5260045ffd5b60ff5f5160206126f95f395f51905f525460401c161561264b57565b631afcd79f60e31b5f5260045ffd5b9061267e575080511561266f57602081519101fd5b63d6bda27560e01b5f5260045ffd5b815115806126af575b61268f575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561268756fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212205df20d36ba403b2a38cebbdccda43a3948c6e7ce4f12404a3f74655ef680b9ef64736f6c634300081e0033","sourceMap":"633:21847:20:-:0;;;;;;;1171:4:26;1163:13;;633:21847:20;;;;;;1163:13:26;633:21847:20;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"60806040526004361015610011575f80fd5b5f5f3560e01c806301e3366714611c975780630905f56014611c7257806310eb56c214611c55578063126082cf14611c3957806312d43a5114611c125780631d517d6514611b575780632efc7660146119345780632f1983d4146118f6578063351a964d146118d35780633a0ede36146117855780633d3325831461150c5780633dd9bd82146114e85780633f2617cb1461147f57806342b60b0314611440578063485cc955146112145780634f1ef28614610faa578063523fba7f14610f7157806352d1902d14610f0a57806352f55eed14610ed1578063741bef1a14610ea857806376cd370e14610de057806376d6976014610db3578063778d733d14610d8a5780637a210a2b14610d6c5780637aef671514610d0d578063802f927014610cd85780638038cbd314610c7057806381a612d614610c4c5780638ee573ac14610c13578063933162121461089557806395082d251461086e57806398d506e9146108455780639f392eb314610822578063a22f239214610804578063a589d319146107bd578063ab2f3ad414610784578063ad3cb1cc14610728578063b64230ba146106e9578063b7c3565d146106cb578063bab3e9e6146105fb578063be32b3f81461058b578063c7e074c31461056e578063cfad57a214610503578063cffc734c146104e7578063d3af922d146104ae578063da13381614610494578063daf9c21014610455578063dc8f5fac14610437578063df73a26714610419578063e01af92c146103af578063e124e6d214610383578063e17d43081461034a578063e468baf014610306578063e7881011146102cd5763e89d59de14610277575f80fd5b346102ca5760203660031901126102ca578054600435906001600160a01b031633036102bb576107d081116102ac5760155580f35b63428637bb60e11b8252600482fd5b631dd2188d60e31b8252600482fd5b80fd5b50346102ca5760203660031901126102ca576020906040906001600160a01b036102f5611cf0565b168152601683522054604051908152f35b50346102ca5760203660031901126102ca57600435906006548210156102ca57602061033183611e01565b905460405160039290921b1c6001600160a01b03168152f35b50346102ca5760203660031901126102ca576020906040906001600160a01b03610372611cf0565b168152600f83522054604051908152f35b50346102ca5760203660031901126102ca5760206103a76103a2611cf0565b612319565b604051908152f35b50346102ca5760203660031901126102ca576103c9611d56565b81546001600160a01b031633036102bb5760207f5a9e84f78f7957cb4ed7478eb0fcad35ee4ecbe2e0f298420b28a3955392573f91151560ff196005541660ff821617600555604051908152a180f35b50346102ca57806003193601126102ca576020601154604051908152f35b50346102ca57806003193601126102ca576020600b54604051908152f35b50346102ca5760203660031901126102ca5760209060ff906040906001600160a01b03610480611cf0565b168152600784522054166040519015158152f35b50346102ca5760206103a76104a836611d1c565b91612447565b50346102ca5760203660031901126102ca576020906040906001600160a01b036104d6611cf0565b168152600e83522054604051908152f35b50346102ca57806003193601126102ca57602060405160128152f35b50346102ca5760203660031901126102ca5761051d611cf0565b8154906001600160a01b038216330361055f576001600160a01b0316908115610550576001600160a01b03191617815580f35b63e6c4247b60e01b8352600483fd5b631dd2188d60e31b8352600483fd5b50346102ca5760206103a761058236611d74565b93929092612068565b50346102ca5760203660031901126102ca576105a5611d56565b81546001600160a01b031633036102bb5760207f63382423ad002e5a7fcc41286858cb0a9ac9251517adf5d154e219544c40f44591151560055461ff008260081b169061ff00191617600555604051908152a180f35b50346102ca5760203660031901126102ca57610615611d56565b60065460035483929083906001600160a01b03165b83861061063c57602085604051908152f35b9091929361064986611e01565b905460039190911b1c6001600160a01b03168084526007602052604084205460ff16156106c1576001916106ae84836106b4948852600c60205268327cb2734119d3b7a9601e1b6106a860408a20546106a28c8561235f565b90611e4e565b046123b3565b90611e7f565b955b01949392919061062a565b50946001906106b6565b50346102ca57806003193601126102ca576020601554604051908152f35b50346102ca5760203660031901126102ca5760209060ff906040906001600160a01b03610714611cf0565b168152600484522054166040519015158152f35b50346102ca57806003193601126102ca57604080516107478282611daf565b6005815260208101640352e302e360dc1b81528251938492602084525180928160208601528585015e828201840152601f01601f19168101030190f35b50346102ca5760203660031901126102ca576020906040906001600160a01b036107ac611cf0565b168152600a83522054604051908152f35b50346102ca5760403660031901126102ca576107d7611cf0565b81546001600160a01b031633036102bb576001600160a01b03168152601660205260408120602435905580f35b50346102ca57806003193601126102ca576020601054604051908152f35b50346102ca57806003193601126102ca57602060ff601454166040519015158152f35b50346102ca57806003193601126102ca576003546040516001600160a01b039091168152602090f35b50346102ca57806003193601126102ca57602060405168327cb2734119d3b7a9601e1b8152f35b50346102ca5760603660031901126102ca576108af611cf0565b6108b7611d06565b916044356001600160a01b0381168103610c0f57338252600460205260ff6040832054161580610bfa575b610beb576108ee6121dc565b60055460ff8160081c16610bdc5760ff1615610bcd576001600160a01b0383168083526007602052604083205490919060ff1615610bbe576001600160a01b0385168084526007602052604084205490939060ff1615610baf57838314610ba05761095885612214565b918215610b915783825260166020526040822054610b6e575b61097a866122a5565b958061098589612319565b936109b768327cb2734119d3b7a9601e1b6109a08b89611e4e565b6003546001600160a01b03169586929091046123b3565b9268327cb2734119d3b7a9601e1b840284810468327cb2734119d3b7a9601e1b1485151715610b28576109f4916109ef888e93611e61565b6123b3565b94610a00848c85612447565b958661271003906127108211610b5a5761271091610a1d91611e4e565b04998a15610b4b57898352600c6020528a604084205410610b3c5790610a46610a4b9289611e4e565b611e61565b898111610ae2575b505087610a9393610a8884610a8260209d9686610a738c610a8e996124e8565b610a7d878a6125a2565b61253a565b856125e8565b886120d6565b612165565b604051918252848683015260408201527fd6d34547c69c5ee3d2667625c188acf1006abb93e0ee7cf03925c67cf776041360603392a460015f5160206126d95f395f51905f5255604051908152f35b610aec8a82611e2d565b6127108102908082046127101490151715610b285790610b0b91611e61565b60155410610b195780610a53565b63428637bb60e11b8152600490fd5b634e487b7160e01b83526011600452602483fd5b63785eab3760e01b8352600483fd5b63162908e360e11b8352600483fd5b634e487b7160e01b84526011600452602484fd5b838252601660205260408220548311156109715763172bd6a160e31b8252600482fd5b63162908e360e11b8252600482fd5b63100dac0560e11b8152600490fd5b6307c241ad60e51b8152600490fd5b6307c241ad60e51b8352600483fd5b630527cf7960e11b8252600482fd5b63185079b960e01b8352600483fd5b630f1442d560e11b8252600482fd5b506001546001600160a01b03163314156108e2565b5080fd5b50346102ca5760203660031901126102ca576020906040906001600160a01b03610c3b611cf0565b168152600983522054604051908152f35b50346102ca5760203660031901126102ca5760206103a7610c6b611cf0565b6122a5565b50346102ca5760803660031901126102ca57805460243590600435906001600160a01b0316330361055f57606481118015610cce575b610cbf5760105560115560443560125560643560135580f35b6358d620b360e01b8352600483fd5b5060328211610ca6565b50346102ca5760403660031901126102ca5760206103a7610cf7611cf0565b60035460243591906001600160a01b0316612447565b50346102ca5760203660031901126102ca57610d27611cf0565b81546001600160a01b031633036102bb576001600160a01b03168015610d5d576001600160601b0360a01b600154161760015580f35b63e6c4247b60e01b8252600482fd5b50346102ca57806003193601126102ca576020601254604051908152f35b50346102ca57806003193601126102ca576001546040516001600160a01b039091168152602090f35b50346102ca5760403660031901126102ca5760206103a7610dd2611cf0565b610dda611d65565b9061235f565b50346102ca57806003193601126102ca5760405180602060065491828152018091600685527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f90855b818110610e895750505082610e3f910383611daf565b604051928392602084019060208552518091526040840192915b818110610e67575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610e59565b82546001600160a01b0316845260209093019260019283019201610e29565b50346102ca57806003193601126102ca576002546040516001600160a01b039091168152602090f35b50346102ca5760203660031901126102ca576020906040906001600160a01b03610ef9611cf0565b168152600c83522054604051908152f35b50346102ca57806003193601126102ca577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610f625760206040515f5160206126b95f395f51905f528152f35b63703e46dd60e11b8152600490fd5b50346102ca5760203660031901126102ca576020906040906001600160a01b03610f99611cf0565b168152600d83522054604051908152f35b5060403660031901126102ca57610fbf611cf0565b6024359067ffffffffffffffff821161121057366023830112156112105781600401359083610fed83611de5565b93610ffb6040519586611daf565b8385526020850193366024828401011161121057806024602093018637850101526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163081149081156111ee575b506111df5783546001600160a01b031633036111d0576040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa869181611198575b506110aa57634c9c8ce360e01b86526004859052602486fd5b93845f5160206126b95f395f51905f528796036111865750823b15611174575f5160206126b95f395f51905f5280546001600160a01b031916821790558491907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8380a28051156111595761114d9382915190845af43d15611151573d9161113183611de5565b9261113f6040519485611daf565b83523d85602085013e61265a565b5080f35b60609161265a565b50505050346111655780f35b63b398979f60e01b8152600490fd5b634c9c8ce360e01b8552600452602484fd5b632a87526960e21b8652600452602485fd5b9091506020813d6020116111c8575b816111b460209383611daf565b810103126111c45751905f611091565b8680fd5b3d91506111a7565b631dd2188d60e31b8452600484fd5b63703e46dd60e11b8452600484fd5b5f5160206126b95f395f51905f52546001600160a01b0316141590505f611051565b8280fd5b50346102ca5760403660031901126102ca5761122e611cf0565b611236611d06565b5f5160206126f95f395f51905f52549160ff8360401c16159267ffffffffffffffff811680159081611438575b600114908161142e575b159081611425575b506114165767ffffffffffffffff1981166001175f5160206126f95f395f51905f5255836113ea575b506001600160a01b031690811580156113d9575b6113ca576112be61262f565b6112c661262f565b60015f5160206126d95f395f51905f52556112df61262f565b336001600160601b0360a01b855416178455816001600160601b0360a01b600354161760035560018060a01b03166001600160601b0360a01b6002541617600255600161ffff196005541617600555601e601055600460115560326012556014601355600160ff1960145416176014556103e86015558252600860205260408220600160ff198254161790556113725780f35b68ff0000000000000000195f5160206126f95f395f51905f5254165f5160206126f95f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b63e6c4247b60e01b8452600484fd5b506001600160a01b038116156112b2565b68ffffffffffffffffff191668010000000000000001175f5160206126f95f395f51905f52555f61129e565b63f92ee8a960e01b8552600485fd5b9050155f611275565b303b15915061126d565b859150611263565b50346102ca5760203660031901126102ca5760209060ff906040906001600160a01b0361146b611cf0565b168152600884522054166040519015158152f35b50346102ca5760403660031901126102ca57611499611cf0565b6114a1611d65565b82549091906001600160a01b0316330361055f576001600160a01b0316801561055057906114e59183526004602052604083209060ff801983541691151516179055565b80f35b50346102ca5760203660031901126102ca5760206103a7611507611cf0565b611e8c565b50346102ca5760403660031901126102ca57611526611cf0565b9061152f611d06565b6001549092906001600160a01b031633036117765761154c6121dc565b6005549060ff8260081c16610bdc576001600160a01b0381168084526007602052604084205490929060ff16156117675760ff16156117585760035461159a906001600160a01b0316612214565b908115611749576115aa81612319565b9368327cb2734119d3b7a9601e1b830283810468327cb2734119d3b7a9601e1b0361173557856115d991611e61565b6003546001600160a01b0316906115f390849083906123b3565b8015610b4b57611604818584612447565b61271003906127108211610b5a576127109161161f91611e4e565b04958615610b4b57858352600c60205286604084205410610b3c57611669918468327cb2734119d3b7a9601e1b6106a8611659948b611e4e565b61166387856125a2565b836125e8565b6003546001600160a01b0316803b15610c0f57604051632770a7eb60e21b8152306004820152602481018590529082908290604490829084905af1801561172a57611715575b50506040856116e67f34ef8e86237e7385b43618862e895c6ce827b2b7d6107ad415d54336c1dd2dd693610a8e8860209a896120d6565b81519384528684018690526001600160a01b031692a360015f5160206126d95f395f51905f5255604051908152f35b611720828092611daf565b6102ca57806116af565b6040513d84823e3d90fd5b634e487b7160e01b82526011600452602482fd5b63162908e360e11b8452600484fd5b630527cf7960e11b8352600483fd5b6307c241ad60e51b8452600484fd5b63f655705d60e01b8252600482fd5b50346102ca5761179436611d74565b855493959490936001600160a01b031633036118c4576001600160a01b03169182156118b557828552600760205260ff6040862054161561183d575b6114e594956117f7826117f2600b54878b52600a60205260408b205490611e2d565b611e7f565b600b5583875260096020526040872055828652600a6020526040862055818552600f602052604085205583526008602052604083209060ff801983541691151516179055565b60065495680100000000000000008710156118a1576118668760016114e5989901600655611e01565b81546001600160a01b0360039290921b91821b19169086901b179055838752600760205260408720805460ff191660011790559594506117d0565b634e487b7160e01b86526041600452602486fd5b63e6c4247b60e01b8552600485fd5b631dd2188d60e31b8552600485fd5b50346102ca57806003193601126102ca57602060ff600554166040519015158152f35b50346102ca5760203660031901126102ca57611910611d56565b81546001600160a01b031633036102bb5760ff801960145416911515161760145580f35b34611b08576040366003190112611b085761194d611cf0565b611955611d06565b6001549091906001600160a01b03163303611b48576119726121dc565b60055460ff8160081c16611b39576001600160a01b0382165f8181526007602052604090205490919060ff1615611b2a5760ff1615611b1b576119b482612214565b8015611b0c57826119c4816122a5565b6119f568327cb2734119d3b7a9601e1b6119de8386611e4e565b6003546001600160a01b03169485929091046123b3565b918215611b0c578568327cb2734119d3b7a9601e1b6106a8611a3a94611a35612710611a2e611a28611a469a8989612447565b8b611e4e565b0489611e2d565b611e4e565b84610a7d8483976124e8565b6003546001600160a01b0316803b15611b08576040516340c10f1960e01b81526001600160a01b038616600482015260248101859052905f908290604490829084905af18015611afd576020957fd2491a9b4fe81a7cd4511e8b7b7743951b061dad5bed7da8a7795b080ee08c7e92604092611aed575b5081519384528684018690526001600160a01b031692a360015f5160206126d95f395f51905f5255604051908152f35b5f611af791611daf565b5f611abd565b6040513d5f823e3d90fd5b5f80fd5b63162908e360e11b5f5260045ffd5b630527cf7960e11b5f5260045ffd5b6307c241ad60e51b5f5260045ffd5b63185079b960e01b5f5260045ffd5b63f655705d60e01b5f5260045ffd5b34611b08576020366003190112611b0857611b70611cf0565b5f546001600160a01b03163303611c03576001600160a01b03165f8181526007602052604090205460ff1615611b2a57611bb9600b54825f52600a60205260405f205490611e2d565b600b555f908152600760209081526040808320805460ff19908116909155600883528184208054909116905560098252808320839055600a8252808320839055600f909152812055005b631dd2188d60e31b5f5260045ffd5b34611b08575f366003190112611b08575f546040516001600160a01b039091168152602090f35b34611b08575f366003190112611b085760206040516127108152f35b34611b08575f366003190112611b08576020601354604051908152f35b34611b08575f366003190112611b0857602060ff60055460081c166040519015158152f35b34611b0857611ca536611d1c565b5f54909291906001600160a01b03163303611c035760ff60055460081c1615611ce157611cdf92610a8e916001600160a01b0384166120d6565b005b633b1cf39760e21b5f5260045ffd5b600435906001600160a01b0382168203611b0857565b602435906001600160a01b0382168203611b0857565b6060906003190112611b08576004356001600160a01b0381168103611b0857906024356001600160a01b0381168103611b08579060443590565b600435908115158203611b0857565b602435908115158203611b0857565b60a0906003190112611b08576004356001600160a01b0381168103611b0857906024359060443590606435906084358015158103611b085790565b90601f8019910116810190811067ffffffffffffffff821117611dd157604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff8111611dd157601f01601f191660200190565b600654811015611e195760065f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b91908203918211611e3a57565b634e487b7160e01b5f52601160045260245ffd5b81810292918115918404141715611e3a57565b8115611e6b570490565b634e487b7160e01b5f52601260045260245ffd5b91908201809211611e3a57565b6003546040516318160ddd60e01b81529190602090839060049082906001600160a01b03165afa918215611afd575f92611efe575b508115611ef8576001600160a01b03165f908152600a6020526040902054611ef591611eec91611e4e565b600b5490611e61565b90565b50505f90565b9091506020813d602011611f2a575b81611f1a60209383611daf565b81010312611b085751905f611ec1565b3d9150611f0d565b60ff60145416156120125760018060a01b0381165f52600e602052611f65611f5f60405f20549384611e7f565b91611e8c565b91821561200a578280821115611ffa57611f7e91611e2d565b905b8280821115611fea57611f9291611e2d565b905b808210611fc457611ef594611fb06106ae9493610a4693611e7f565b60011c9083821115611e4e57839150611e4e565b610a469150611fd39394611e4e565b81811115611fe15750505f90565b611ef591611e2d565b90611ff491611e2d565b90611f94565b9061200491611e2d565b90611f80565b505050905090565b5050905090565b60ff6014541615612012576001600160a01b0381165f908152600e6020526040902054916120478184611e7f565b508281111561205b5750611f655f91611e8c565b611f5f611f659184611e2d565b939091929360ff601454161561200a576001600160a01b0381165f908152600e60205260409020549261209b8185611e7f565b92156120ac575b50611f6590611e8c565b909150828111156120c45750611f655f5b91906120a2565b6120d1611f659184611e2d565b6120bd565b60405163a9059cbb60e01b60208083019182526001600160a01b0394909416602483015260448083019590955293815290925f91612115606482611daf565b519082855af115611afd575f513d61215c57506001600160a01b0381163b155b61213c5750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b60011415612135565b6040516370a0823160e01b8152306004820152906001600160a01b0316602082602481845afa918215611afd575f926121a8575b505f52600d60205260405f2055565b9091506020813d6020116121d4575b816121c460209383611daf565b81010312611b085751905f612199565b3d91506121b7565b60025f5160206126d95f395f51905f5254146122055760025f5160206126d95f395f51905f5255565b633ee5aeb560e01b5f5260045ffd5b6001600160a01b03165f818152600d60209081526040918290205491516370a0823160e01b8152306004820152929083602481845afa908115611afd575f9161226f575b611ef593505f52600d6020528060405f2055611e2d565b90506020833d60201161229d575b8161228a60209383611daf565b81010312611b0857611ef5925190612258565b3d915061227d565b6002546040516303b6b4bb60e51b81526001600160a01b0392831660048201525f60248201529160209183916044918391165afa908115611afd575f916122ea575090565b90506020813d602011612311575b8161230560209383611daf565b81010312611b08575190565b3d91506122f8565b6002546040516303b6b4bb60e51b81526001600160a01b039283166004820152600160248201529160209183916044918391165afa908115611afd575f916122ea575090565b6002546040516303b6b4bb60e51b81526001600160a01b039283166004820152921515602484015260209183916044918391165afa908115611afd575f916122ea575090565b604d8111611e3a57600a0a90565b60035490916001600160a01b03918216911680820361243557506012925b6001600160a01b0316908103612424575060125b80831461241e5780831161240857612403611ef5936106a292611e2d565b6123a5565b61240361241891611ef594611e2d565b90611e61565b50905090565b5f52600960205260405f20546123e5565b5f52600960205260405f2054926123d1565b9160018060a01b0383165f52600860205260ff60405f205416806124c7575b80156124be57601154905b156124b557601354915b60ff60145416156124ad5761249683838361249c9798611f32565b94612019565b808211156124a8575090565b905090565b509250505090565b6012549161247b565b60105490612471565b506001600160a01b0382165f9081526008602052604090205460ff16612466565b60018060a01b031690815f52600c60205261250860405f20918254611e7f565b9055805f52600c60205260405f2054905f52600d60205260405f20541061252b57565b634c937ab560e01b5f5260045ffd5b6001600160a01b03165f818152600e6020526040902054909161255c91611e7f565b815f52600e60205260405f2055805f52600f60205260405f20549081612580575050565b5f52600e60205260405f20541161259357565b6352b2cc0960e11b5f5260045ffd5b6001600160a01b03165f818152600c602052604090205482116125d9575f52600c6020526125d560405f20918254611e2d565b9055565b63785eab3760e01b5f5260045ffd5b6001600160a01b03165f818152600e602052604090205490918082106126205761261191611e2d565b905f52600e60205260405f2055565b6355dcccf360e01b5f5260045ffd5b60ff5f5160206126f95f395f51905f525460401c161561264b57565b631afcd79f60e31b5f5260045ffd5b9061267e575080511561266f57602081519101fd5b63d6bda27560e01b5f5260045ffd5b815115806126af575b61268f575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561268756fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212205df20d36ba403b2a38cebbdccda43a3948c6e7ce4f12404a3f74655ef680b9ef64736f6c634300081e0033","sourceMap":"633:21847:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;633:21847:20;;;;;;;;;-1:-1:-1;;;;;633:21847:20;3384:10;:17;3380:41;;7816:4;7801:19;;7797:49;;7869:33;633:21847;;;7797:49;-1:-1:-1;;;7829:17:20;;633:21847;21469:17;7829;3380:41;-1:-1:-1;;;3410:11:20;;633:21847;3410:11;;633:21847;;;;;;;;;;-1:-1:-1;;633:21847:20;;;;;;;;-1:-1:-1;;;;;633:21847:20;;:::i;:::-;;;;2700:48;633:21847;;;;;;;;;;;;;;;;;-1:-1:-1;;633:21847:20;;;;;;;1724:37;633:21847;1724:37;;;;;633:21847;1724:37;;;:::i;:::-;633:21847;;;;;;;;;;-1:-1:-1;;;;;633:21847:20;;;;;;;;;;;-1:-1:-1;;633:21847:20;;;;;;;;-1:-1:-1;;;;;633:21847:20;;:::i;:::-;;;;2304:49;633:21847;;;;;;;;;;;;;;;;;-1:-1:-1;;633:21847:20;;;;;14715:23;633:21847;;:::i;:::-;14715:23;:::i;:::-;633:21847;;;;;;;;;;;;;-1:-1:-1;;633:21847:20;;;;;;:::i;:::-;;;-1:-1:-1;;;;;633:21847:20;3384:10;:17;3380:41;;633:21847;7414:30;633:21847;;;;;7369:30;633:21847;;;;;;7369:30;633:21847;;;;;;7414:30;633:21847;;;;;;;;;;;;;;;;2426:39;633:21847;;;;;;;;;;;;;;;;;;;;;1999:32;633:21847;;;;;;;;;;;;;;-1:-1:-1;;633:21847:20;;;;;;;;;;-1:-1:-1;;;;;633:21847:20;;:::i;:::-;;;;1767:49;633:21847;;;;;;;;;;;;;;;;;;;17130:56;633:21847;;;:::i;:::-;17130:56;;:::i;633:21847::-;;;;;;;-1:-1:-1;;633:21847:20;;;;;;;;-1:-1:-1;;;;;633:21847:20;;:::i;:::-;;;;2252:46;633:21847;;;;;;;;;;;;;;;;;;;;;;;;;;1425:2;633:21847;;;;;;;;;;-1:-1:-1;;633:21847:20;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;633:21847:20;;3384:10;:17;3380:41;;-1:-1:-1;;;;;633:21847:20;;5026:18;;5022:47;;-1:-1:-1;;;;;;633:21847:20;;;;;;5022:47;-1:-1:-1;;;5053:16:20;;633:21847;5694:16;5053;3380:41;-1:-1:-1;;;3410:11:20;;633:21847;3410:11;;633:21847;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;633:21847:20;;;;;;:::i;:::-;;;-1:-1:-1;;;;;633:21847:20;3384:10;:17;3380:41;;633:21847;7248:32;633:21847;;;7203:30;633:21847;;;;;;;;;;;7203:30;633:21847;;;;;;7248:32;633:21847;;;;;;;;;-1:-1:-1;;633:21847:20;;;;;;:::i;:::-;15399:20;633:21847;15775:4;633:21847;15343:22;;;;;-1:-1:-1;;;;;633:21847:20;15395:31;;;;;;633:21847;;;;;;;;15428:3;15463:23;;;;;;;:::i;:::-;633:21847;;15775:4;633:21847;;;;;-1:-1:-1;;;;;633:21847:20;;;;15505:17;633:21847;;;;;;;;15504:25;15500:39;;633:21847;;15742:38;633:21847;;15794:19;633:21847;;;15583:11;633:21847;;-1:-1:-1;;;15688:14:20;633:21847;;;;15631:27;;;;:::i;:::-;15688:14;;:::i;:::-;633:21847;15742:38;:::i;:::-;15794:19;;:::i;:::-;15428:3;15380:13;633:21847;15380:13;;;;;;;15500:39;15531:8;;633:21847;15531:8;;;633:21847;;;;;;;;;;;;;;2610:33;633:21847;;;;;;;;;;;;;;-1:-1:-1;;633:21847:20;;;;;;;;;;-1:-1:-1;;;;;633:21847:20;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;633:21847:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;633:21847:20;;;;;;;;;;;;;;-1:-1:-1;;633:21847:20;;;;;;;;-1:-1:-1;;;;;633:21847:20;;:::i;:::-;;;;1946:47;633:21847;;;;;;;;;;;;;;;;;-1:-1:-1;;633:21847:20;;;;;;:::i;:::-;;;-1:-1:-1;;;;;633:21847:20;3384:10;:17;3380:41;;-1:-1:-1;;;;;633:21847:20;;;8005:13;633:21847;;;;;;;;;;;;;;;;;;;;;;;;;2387:33;633:21847;;;;;;;;;;;;;;;;;;;;;;2547:26;633:21847;;;;;;;;;;;;;;;;;;;;;;;1526:19;633:21847;;;-1:-1:-1;;;;;633:21847:20;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;633:21847:20;;;;;;;;;;-1:-1:-1;;633:21847:20;;;;;;:::i;:::-;;;:::i;:::-;;;;-1:-1:-1;;;;;633:21847:20;;;;;;3619:10;633:21847;;;;;;;;;;;3608:22;:53;;;633:21847;3604:78;;3361:103:30;;:::i;:::-;3750:13:20;633:21847;;;;;;3746:41;;633:21847;;12297:14;12293:41;;-1:-1:-1;;;;;633:21847:20;;;;;12349:17;633:21847;;;;;;;;;;;12348:28;12344:62;;-1:-1:-1;;;;;633:21847:20;;;;;12349:17;633:21847;;;;;;;;;;;12420:29;12416:63;;12493:21;;;12489:45;;12572:21;;;:::i;:::-;12607:13;;;12603:41;;633:21847;;;12703:13;633:21847;;;;;;12699:125;;633:21847;12860:26;;;:::i;:::-;12915;;;;;:::i;:::-;12981:18;13040:46;-1:-1:-1;;;12981:18:20;;;;:::i;:::-;13081:4;633:21847;-1:-1:-1;;;;;633:21847:20;;;;13040:46;;633:21847;13040:46;:::i;:::-;633:21847;-1:-1:-1;;;633:21847:20;;;;;-1:-1:-1;;;633:21847:20;;;;;;;13186:46;13125:39;;;;;;:::i;:::-;13186:46;:::i;:::-;13276:55;;;;;;:::i;:::-;633:21847;;1374:5;633:21847;;1374:5;633:21847;;;;1374:5;13370:51;;;;:::i;:::-;633:21847;13467:23;;;13463:51;;633:21847;;;13528:11;633:21847;;;;;;;13528:43;13524:74;;21206:20;;:32;:20;;;:::i;:::-;:32;:::i;:::-;21291:24;;;21287:210;;633:21847;13766:8;;;14057:9;13766:8;13936:10;13766:8;13884:10;633:21847;13766:8;;;;;14008:18;13766:8;;:::i;:::-;13816:18;;;;:::i;:::-;13884:10;:::i;:::-;13936;;:::i;:::-;14008:18;;:::i;:::-;14057:9;:::i;:::-;633:21847;;;;;;;;;;;;;;14091:83;633:21847;3619:10;14091:83;;12936:4;-1:-1:-1;;;;;;;;;;;633:21847:20;;;;;;;21287:210;21351:24;;;;:::i;:::-;1374:5;633:21847;;;;;;1374:5;633:21847;;;;;;;21350:63;;;;:::i;:::-;21442:18;633:21847;-1:-1:-1;21427:59:20;;21287:210;;;21427:59;-1:-1:-1;;;21469:17:20;;633:21847;;21469:17;633:21847;-1:-1:-1;;;633:21847:20;;;;;;;;13524:74;-1:-1:-1;;;13580:18:20;;633:21847;11098:18;13580;13463:51;-1:-1:-1;;;13499:15:20;;633:21847;8666:15;13499;633:21847;-1:-1:-1;;;633:21847:20;;;;;;;;12699:125;633:21847;;;12703:13;633:21847;;;;;;12750:34;;12746:67;12699:125;12746:67;-1:-1:-1;;;12793:20:20;;633:21847;12793:20;;12603:41;-1:-1:-1;;;12629:15:20;;633:21847;8666:15;12629;12489:45;-1:-1:-1;;;12523:11:20;;633:21847;;12523:11;12416:63;-1:-1:-1;;;12458:21:20;;633:21847;;12458:21;12344:62;-1:-1:-1;;;12385:21:20;;633:21847;6257:21;12385;12293:41;-1:-1:-1;;;12320:14:20;;633:21847;8553:14;12320;3746:41;-1:-1:-1;;;3772:15:20;;633:21847;3772:15;;3604:78;-1:-1:-1;;;3670:12:20;;633:21847;3670:12;;3608:53;-1:-1:-1;633:21847:20;;-1:-1:-1;;;;;633:21847:20;3619:10;3634:27;;3608:53;;633:21847;;;;;;;;;;;-1:-1:-1;;633:21847:20;;;;;;;;-1:-1:-1;;;;;633:21847:20;;:::i;:::-;;;;1892:48;633:21847;;;;;;;;;;;;;;;;;-1:-1:-1;;633:21847:20;;;;;14891:24;633:21847;;:::i;:::-;14891:24;:::i;633:21847::-;;;;;;;-1:-1:-1;;633:21847:20;;;;;;;;;;;;-1:-1:-1;;;;;633:21847:20;3384:10;:17;3380:41;;633:21847;6746:14;;:37;;;;633:21847;6742:62;;6814:29;633:21847;6853:41;633:21847;;;6904:32;633:21847;;;6946:44;633:21847;;;6742:62;-1:-1:-1;;;6792:12:20;;633:21847;6792:12;;6746:37;6764:19;6781:2;6764:19;;6746:37;;633:21847;;;;;;;-1:-1:-1;;633:21847:20;;;;;17542:49;633:21847;;:::i;:::-;17565:4;633:21847;;;;;-1:-1:-1;;;;;633:21847:20;17542:49;:::i;633:21847::-;;;;;;;-1:-1:-1;;633:21847:20;;;;;;:::i;:::-;;;-1:-1:-1;;;;;633:21847:20;3384:10;:17;3380:41;;-1:-1:-1;;;;;633:21847:20;5179:22;;5175:51;;-1:-1:-1;;;;;633:21847:20;;5236:24;633:21847;;;5236:24;633:21847;;;5175:51;-1:-1:-1;;;5210:16:20;;633:21847;5694:16;5210;633:21847;;;;;;;;;;;;;;2471:29;633:21847;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;633:21847:20;;;;;;;;;;;;;;;-1:-1:-1;;633:21847:20;;;;;14534:28;633:21847;;:::i;:::-;;;:::i;:::-;14534:28;;:::i;633:21847::-;;;;;;;;;;;;;;;;;15018:20;633:21847;;;;;;;;15018:20;633:21847;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;633:21847:20;;;;;-1:-1:-1;633:21847:20;;;;;;;;;;;;;;;;-1:-1:-1;;;;;633:21847:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1496:24;633:21847;;;-1:-1:-1;;;;;633:21847:20;;;;;;;;;;;;;;;-1:-1:-1;;633:21847:20;;;;;;;;-1:-1:-1;;;;;633:21847:20;;:::i;:::-;;;;2062:46;633:21847;;;;;;;;;;;;;;;;;;;;;;;5090:6:26;-1:-1:-1;;;;;633:21847:20;5081:4:26;5073:23;5069:145;;633:21847:20;;;-1:-1:-1;;;;;;;;;;;633:21847:20;;;5069:145:26;-1:-1:-1;;;5174:29:26;;633:21847:20;;5174:29:26;633:21847:20;;;;;;;-1:-1:-1;;633:21847:20;;;;;;;;-1:-1:-1;;;;;633:21847:20;;:::i;:::-;;;;2114:48;633:21847;;;;;;;;;;;-1:-1:-1;633:21847:20;;-1:-1:-1;;633:21847:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4667:6:26;633:21847:20;4658:4:26;4650:23;;;:120;;;;633:21847:20;4633:251:26;;;633:21847:20;;-1:-1:-1;;;;;633:21847:20;3384:10;:17;3380:41;;633:21847;;-1:-1:-1;;;6131:52:26;;-1:-1:-1;;;;;633:21847:20;;;;;;;;;6131:52:26;;;;;;;633:21847:20;-1:-1:-1;6127:437:26;;-1:-1:-1;;;6493:60:26;;633:21847:20;;;;;1805:47:39;6493:60:26;6127:437;6225:40;;-1:-1:-1;;;;;;;;;;;6225:40:26;;;6221:120;;1748:29:39;;;:34;1744:119;;-1:-1:-1;;;;;;;;;;;633:21847:20;;-1:-1:-1;;;;;;633:21847:20;;;;;;;;2407:36:39;633:21847:20;;2407:36:39;633:21847:20;;2458:15:39;:11;;4107:55:45;4065:25;;;;;;;;633:21847:20;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;4107:55:45;:::i;:::-;;633:21847:20;;;;;4107:55:45;:::i;2454:148:39:-;6163:9;;;;;6159:70;;633:21847:20;;6159:70:39;-1:-1:-1;;;6199:19:39;;633:21847:20;;6199:19:39;1744:119;-1:-1:-1;;;1805:47:39;;633:21847:20;;;1805:47:39;;6221:120:26;-1:-1:-1;;;6292:34:26;;633:21847:20;;;6292:34:26;;6131:52;;;;633:21847:20;6131:52:26;;633:21847:20;6131:52:26;;;;;;633:21847:20;6131:52:26;;;:::i;:::-;;;633:21847:20;;;;;6131:52:26;;;;633:21847:20;;;;6131:52:26;;;-1:-1:-1;6131:52:26;;3380:41:20;-1:-1:-1;;;3410:11:20;;633:21847;3410:11;;4633:251:26;-1:-1:-1;;;4844:29:26;;633:21847:20;4844:29:26;;4650:120;-1:-1:-1;;;;;;;;;;;633:21847:20;-1:-1:-1;;;;;633:21847:20;4728:42:26;;;-1:-1:-1;4650:120:26;;;633:21847:20;;;;;;;;;;;-1:-1:-1;;633:21847:20;;;;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;633:21847:20;;;;;;;4301:16:25;633:21847:20;;;;4724:16:25;;:34;;;;633:21847:20;4803:1:25;4788:16;:50;;;;633:21847:20;4853:13:25;:30;;;;633:21847:20;4849:91:25;;;-1:-1:-1;;633:21847:20;;4803:1:25;633:21847:20;-1:-1:-1;;;;;;;;;;;633:21847:20;;4977:67:25;;633:21847:20;-1:-1:-1;;;;;;633:21847:20;;4036:19;;:47;;;;633:21847;4032:76;;6891::25;;:::i;:::-;;;:::i;:::-;4803:1;-1:-1:-1;;;;;;;;;;;633:21847:20;6891:76:25;;:::i;:::-;4210:10:20;-1:-1:-1;;;;;633:21847:20;;;;;;;;;-1:-1:-1;;;;;633:21847:20;;4230:12;633:21847;;;4230:12;633:21847;;;;;;;-1:-1:-1;;;;;633:21847:20;;4252:22;633:21847;;;4252:22;633:21847;4803:1:25;633:21847:20;;4323:20;633:21847;;;4323:20;633:21847;4405:2;4384:23;633:21847;;4417:28;633:21847;4472:2;4455:19;633:21847;4507:2;4484:25;633:21847;4803:1:25;633:21847:20;;4507:2;633:21847;;;4507:2;633:21847;4571:4;4550:25;633:21847;;;;;;;;;4803:1:25;633:21847:20;;;;;;;;5064:101:25;;633:21847:20;;5064:101:25;633:21847:20;;-1:-1:-1;;;;;;;;;;;633:21847:20;;-1:-1:-1;;;;;;;;;;;633:21847:20;5140:14:25;633:21847:20;;;4803:1:25;633:21847:20;;5140:14:25;633:21847:20;;4032:76;-1:-1:-1;;;4092:16:20;;633:21847;5694:16;4092;4036:47;-1:-1:-1;;;;;;633:21847:20;;4059:24;4036:47;;4977:67:25;-1:-1:-1;;633:21847:20;;;-1:-1:-1;;;;;;;;;;;633:21847:20;4977:67:25;;;4849:91;-1:-1:-1;;;4906:23:25;;633:21847:20;4906:23:25;;4853:30;4870:13;;;4853:30;;;4788:50;4816:4;4808:25;:30;;-1:-1:-1;4788:50:25;;4724:34;;;-1:-1:-1;4724:34:25;;633:21847:20;;;;;;;-1:-1:-1;;633:21847:20;;;;;;;;;;-1:-1:-1;;;;;633:21847:20;;:::i;:::-;;;;1822:44;633:21847;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;633:21847:20;;;;;;:::i;:::-;;;:::i;:::-;;;;;;-1:-1:-1;;;;;633:21847:20;3384:10;:17;3380:41;;-1:-1:-1;;;;;633:21847:20;5362:22;;5358:51;;633:21847;5419:31;633:21847;;;;;;;;;;;;;;;;;;;;;;;;5419:31;633:21847;;;;;;;;;-1:-1:-1;;633:21847:20;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;633:21847:20;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;633:21847:20;3490:10;:27;3486:57;;3361:103:30;;:::i;:::-;3750:13:20;633:21847;;;;;;;3746:41;;-1:-1:-1;;;;;633:21847:20;;;;;10196:17;633:21847;;;;;;;;;;;10195:26;10191:60;;633:21847;;10265:14;10261:41;;10354:4;633:21847;10342:17;;-1:-1:-1;;;;;633:21847:20;10342:17;:::i;:::-;10373:15;;;10369:43;;10447:23;;;:::i;:::-;633:21847;-1:-1:-1;;;633:21847:20;;;;;-1:-1:-1;;;633:21847:20;;;10561:36;;;;:::i;:::-;10354:4;633:21847;-1:-1:-1;;;;;633:21847:20;;10626:50;;633:21847;;;;10626:50;:::i;:::-;10690:21;;10686:49;;10827:54;;;;;:::i;:::-;1374:5;633:21847;;1374:5;633:21847;;;;1374:5;10911:58;;;;:::i;:::-;633:21847;11006:14;;;11002:42;;633:21847;;;11058:11;633:21847;;;;;;;11058:31;11054:62;;11520:13;11251:17;;-1:-1:-1;;;11251:17:20;11312:47;11251:17;;;:::i;11312:47::-;11472:9;;;;:::i;:::-;11520:13;;:::i;:::-;10354:4;633:21847;-1:-1:-1;;;;;633:21847:20;11575:43;;;;;633:21847;;-1:-1:-1;;;11575:43:20;;11600:4;633:21847;11575:43;;633:21847;;;;;;;;;;;;;;;;;;11575:43;;;;;;;;633:21847;11700:9;;633:21847;11700:9;11740:6;11771:57;11700:9;;;633:21847;11700:9;;;:::i;11740:6::-;633:21847;;;;;;;;;;;-1:-1:-1;;;;;633:21847:20;;11771:57;3504:13;-1:-1:-1;;;;;;;;;;;633:21847:20;;;;;;;11575:43;;;;;;:::i;:::-;633:21847;;11575:43;;;;633:21847;;;;;;;;;;-1:-1:-1;;;633:21847:20;;;;;;;;10369:43;-1:-1:-1;;;10397:15:20;;633:21847;8666:15;10397;10261:41;-1:-1:-1;;;10288:14:20;;633:21847;8553:14;10288;10191:60;-1:-1:-1;;;10230:21:20;;633:21847;6257:21;10230;3486:57;-1:-1:-1;;;3526:17:20;;633:21847;3526:17;;633:21847;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;633:21847:20;3384:10;:17;3380:41;;-1:-1:-1;;;;;633:21847:20;;5665:20;;5661:49;;633:21847;;;5734:17;633:21847;;;;;;;;5733:26;5729:136;;633:21847;6095:32;633:21847;;5903:50;633:21847;5903:40;:17;633:21847;;;;5923:12;633:21847;;;;;;5903:40;;:::i;:::-;:50;:::i;:::-;:17;633:21847;;;;5963:13;633:21847;;;;;;;;;5923:12;633:21847;;;;;;;;;6046:14;633:21847;;;;;;;;6095:12;633:21847;;;;;;;;;;;;;;;;;;;;5729:136;5775:20;633:21847;;;;;;;;;;;6095:32;633:21847;;;5775:20;633:21847;;:::i;:::-;;;-1:-1:-1;;;;;633:21847:20;;;;;;;;;;;;;;;;;;;;5734:17;633:21847;;;;;;;-1:-1:-1;;633:21847:20;;;;;5729:136;633:21847;-1:-1:-1;5729:136:20;;633:21847;-1:-1:-1;;;633:21847:20;;;;;;;;5661:49;-1:-1:-1;;;5694:16:20;;633:21847;5694:16;;3380:41;-1:-1:-1;;;3410:11:20;;633:21847;3410:11;;633:21847;;;;;;;;;;;;;;;1634:25;633:21847;;;;;;;;;;;;;;;;;-1:-1:-1;;633:21847:20;;;;;;:::i;:::-;;;-1:-1:-1;;;;;633:21847:20;3384:10;:17;3380:41;;633:21847;;;7080:32;633:21847;;;;;;;7080:32;633:21847;;;;;;;;;-1:-1:-1;;633:21847:20;;;;;;:::i;:::-;;;:::i;:::-;;;;;;-1:-1:-1;;;;;633:21847:20;3490:10;:27;3486:57;;3361:103:30;;:::i;:::-;3750:13:20;633:21847;;;;;;3746:41;;-1:-1:-1;;;;;633:21847:20;;;;;;8461:17;633:21847;;;;;;;;;;;8460:26;8456:60;;633:21847;;8530:14;8526:41;;8608:19;;;:::i;:::-;8641:16;;8637:44;;8716:24;;;;:::i;:::-;8831:44;-1:-1:-1;;;8771:19:20;;;;:::i;:::-;8870:4;633:21847;-1:-1:-1;;;;;633:21847:20;;;;8831:44;;633:21847;8831:44;:::i;:::-;8889:15;;;8885:43;;8972:48;-1:-1:-1;;;9209:23:20;9282:53;8972:48;9137:23;1374:5;9050:28;8972:48;9536:19;8972:48;;;;:::i;:::-;9050:28;;:::i;:::-;633:21847;9137:23;;:::i;:::-;9209;:::i;9282:53::-;9486:11;;;;;;:::i;9536:19::-;8870:4;633:21847;-1:-1:-1;;;;;633:21847:20;9575:48;;;;;633:21847;;-1:-1:-1;;;9575:48:20;;-1:-1:-1;;;;;633:21847:20;;;9575:48;;633:21847;;;;;;;;-1:-1:-1;;633:21847:20;;;;;;-1:-1:-1;;9575:48:20;;;;;;633:21847;9575:48;9647:65;9575:48;633:21847;9575:48;;;633:21847;-1:-1:-1;633:21847:20;;;;;;;;;;;-1:-1:-1;;;;;633:21847:20;;9647:65;3504:13;-1:-1:-1;;;;;;;;;;;633:21847:20;;;;;;;9575:48;633:21847;9575:48;;;:::i;:::-;633:21847;9575:48;;;633:21847;;;;;;;;;9575:48;633:21847;;;8885:43;8666:15;;;633:21847;8913:15;633:21847;;8913:15;8526:41;8553:14;;;633:21847;8553:14;633:21847;;8553:14;8456:60;6257:21;;;633:21847;8495:21;633:21847;;8495:21;3746:41;3772:15;;;633:21847;3772:15;633:21847;;3772:15;3486:57;3526:17;;;633:21847;3526:17;633:21847;;3526:17;633:21847;;;;;;-1:-1:-1;;633:21847:20;;;;;;:::i;:::-;;;-1:-1:-1;;;;;633:21847:20;3384:10;:17;3380:41;;-1:-1:-1;;;;;633:21847:20;;;;;6223:17;633:21847;;;;;;;;6222:26;6218:60;;6308:40;:17;633:21847;;;;6328:12;633:21847;;;;;;6308:40;;:::i;:::-;:17;633:21847;;;;;6223:17;633:21847;;;;;;;;;;-1:-1:-1;;633:21847:20;;;;;;6407:12;633:21847;;;;;;;;;;;;6444:13;633:21847;;;;;;;;6328:12;633:21847;;;;;;;;6519:14;633:21847;;;;;;;3380:41;3410:11;;;633:21847;3410:11;633:21847;;3410:11;633:21847;;;;;;-1:-1:-1;;633:21847:20;;;;;;;;-1:-1:-1;;;;;633:21847:20;;;;;;;;;;;;;;-1:-1:-1;;633:21847:20;;;;;;;1374:5;633:21847;;;;;;;;;-1:-1:-1;;633:21847:20;;;;;2506:35;633:21847;;;;;;;;;;;;;-1:-1:-1;;633:21847:20;;;;;;1665:25;633:21847;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;633:21847:20;3384:10;:17;3380:41;;633:21847;7568:13;633:21847;;;;7567:14;7563:43;;7693:6;;7655:7;;-1:-1:-1;;;;;633:21847:20;;7655:7;:::i;7693:6::-;633:21847;7563:43;7590:16;;;633:21847;7590:16;633:21847;;7590:16;633:21847;;;;-1:-1:-1;;;;;633:21847:20;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;633:21847:20;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;633:21847:20;;;;;;;;;-1:-1:-1;;;;;633:21847:20;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;633:21847:20;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;633:21847:20;;;;;-1:-1:-1;633:21847:20;;;;;;;;;-1:-1:-1;;633:21847:20;;;;:::o;:::-;5775:20;633:21847;;;;;;5775:20;-1:-1:-1;633:21847:20;;-1:-1:-1;633:21847:20;;;-1:-1:-1;633:21847:20;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;15867:273::-;15976:4;633:21847;;;-1:-1:-1;;;15969:26:20;;633:21847;15867:273;15969:26;;633:21847;;15969:26;;633:21847;;-1:-1:-1;;;;;633:21847:20;15969:26;;;;;;;633:21847;15969:26;;;15867:273;16009:11;;;16005:30;;-1:-1:-1;;;;;633:21847:20;;;;;16061:12;15969:26;633:21847;;;;;16098:35;;:15;;;:::i;:::-;16116:17;633:21847;16098:35;;:::i;:::-;15867:273;:::o;16005:30::-;16024:8;;633:21847;16024:8;:::o;15969:26::-;;;;;;;;;;;;;;633:21847;15969:26;;;:::i;:::-;;;633:21847;;;;;15969:26;;;;;;;-1:-1:-1;15969:26:20;;18489:1511;633:21847;18710:14;633:21847;;18709:15;18705:48;;633:21847;;;;;;;;;18795:11;633:21847;;19036:27;18845:26;633:21847;;;;18845:26;;;:::i;:::-;19036:27;;:::i;:::-;19077:17;;;19073:50;;19163:28;;;;;;;19207;;;:::i;:::-;19163:116;;19308:25;;;;;;;19349;;;:::i;:::-;19308:107;;19482:22;;;19478:199;;19969:24;19762:22;;19908:44;19762:22;;19908:29;19762:22;;:::i;:::-;18270:4;633:21847;19803:26;;;;19799:83;19908:29;19799:83;19845:26;;-1:-1:-1;19908:29:20;:::i;19478:199::-;19540:29;;;:44;:29;;;:::i;:44::-;19605:27;;;;;;:61;;633:21847;19598:68;:::o;19605:61::-;19639:27;;;:::i;19308:107::-;19390:25;;;;:::i;:::-;19308:107;;;19163:116;19251:28;;;;:::i;:::-;19163:116;;;19073:50;19098:22;;;;;;:::o;18705:48::-;18728:22;;;;;:::o;18489:1511::-;633:21847;18710:14;633:21847;;18709:15;18705:48;;-1:-1:-1;;;;;633:21847:20;;;;;;18795:11;633:21847;;;;;;;18845:26;;633:21847;18845:26;:::i;:::-;-1:-1:-1;18925:26:20;;;;;;:59;19036:27;633:21847;18925:59;19036:27;:::i;18925:59::-;18958:26;19036:27;18958:26;;;:::i;18489:1511::-;;;;;;633:21847;18710:14;633:21847;;18709:15;18705:48;;-1:-1:-1;;;;;633:21847:20;;;;;;18795:11;633:21847;;;;;;;18845:26;;633:21847;18845:26;:::i;:::-;18885:11;;18881:114;;18489:1511;19036:27;;;;:::i;18881:114::-;18925:59;;-1:-1:-1;18925:26:20;;;;;;:59;19036:27;633:21847;18925:59;18881:114;;;;18925:59;18958:26;19036:27;18958:26;;;:::i;:::-;18925:59;;1219:160:44;633:21847:20;;-1:-1:-1;;;1328:43:44;;;;;;;-1:-1:-1;;;;;633:21847:20;;;;1328:43:44;;;633:21847:20;;;;;;;;;1328:43:44;;;1219:160;;-1:-1:-1;;1328:43:44;633:21847:20;;1328:43:44;:::i;:::-;8507:421;;;;;;;;;-1:-1:-1;8507:421:44;;8942:15;;-1:-1:-1;;;;;;633:21847:20;;8960:26:44;:31;8942:68;8938:146;;1219:160;:::o;8938:146::-;-1:-1:-1;;;;9033:40:44;;;-1:-1:-1;;;;;633:21847:20;;;;9033:40:44;633:21847:20;1328:43:44;;9033:40;8942:68;9009:1;8994:16;;8942:68;;20301:133:20;633:21847;;-1:-1:-1;;;20388:39:20;;20421:4;20388:39;;;633:21847;;-1:-1:-1;;;;;633:21847:20;;;20388:39;633:21847;;20388:39;;;;;;;-1:-1:-1;20388:39:20;;;20301:133;633:21847;-1:-1:-1;633:21847:20;20364:13;633:21847;;;-1:-1:-1;633:21847:20;;20301:133::o;20388:39::-;;;;633:21847;20388:39;;633:21847;20388:39;;;;;;633:21847;20388:39;;;:::i;:::-;;;633:21847;;;;;20388:39;;;;;;;-1:-1:-1;20388:39:20;;3470:384:30;1991:1;-1:-1:-1;;;;;;;;;;;633:21847:20;3670:20:30;3666:88;;1991:1;-1:-1:-1;;;;;;;;;;;633:21847:20;3470:384:30:o;3666:88::-;3713:30;;;-1:-1:-1;3713:30:30;;-1:-1:-1;3713:30:30;20010:281:20;-1:-1:-1;;;;;633:21847:20;-1:-1:-1;633:21847:20;;;20105:13;633:21847;;;;;;;;;;;;-1:-1:-1;;;20158:39:20;;20191:4;20158:39;;;633:21847;;;;20158:39;633:21847;;20158:39;;;;;;;-1:-1:-1;20158:39:20;;;20010:281;20259:25;633:21847;;-1:-1:-1;633:21847:20;20105:13;633:21847;;;;-1:-1:-1;633:21847:20;;20259:25;:::i;20158:39::-;;;633:21847;20158:39;;633:21847;20158:39;;;;;;633:21847;20158:39;;;:::i;:::-;;;633:21847;;;;20259:25;633:21847;;20158:39;;;;;;-1:-1:-1;20158:39:20;;21513:157;21625:9;633:21847;;;-1:-1:-1;;;21612:51:20;;-1:-1:-1;;;;;633:21847:20;;;21612:51;;;633:21847;-1:-1:-1;633:21847:20;;;;;;;;;21612:51;;633:21847;;;21612:51;;;;;;;633:21847;21612:51;;;21605:58;21513:157;:::o;21612:51::-;;;633:21847;21612:51;;633:21847;21612:51;;;;;;633:21847;21612:51;;;:::i;:::-;;;633:21847;;;;;21513:157;:::o;21612:51::-;;;-1:-1:-1;21612:51:20;;21513:157;21625:9;633:21847;;;-1:-1:-1;;;21612:51:20;;-1:-1:-1;;;;;633:21847:20;;;21612:51;;;633:21847;;;;;;;;;;;21612:51;;633:21847;;;21612:51;;;;;;;-1:-1:-1;21612:51:20;;;21605:58;21513:157;:::o;:::-;21625:9;633:21847;;;-1:-1:-1;;;21612:51:20;;-1:-1:-1;;;;;633:21847:20;;;21612:51;;;633:21847;;;;;;;;;;;;21612:51;;633:21847;;;21612:51;;;;;;;-1:-1:-1;21612:51:20;;;21605:58;21513:157;:::o;633:21847::-;;;;;;;;;:::o;21680:621::-;21871:4;633:21847;21680:621;;-1:-1:-1;;;;;633:21847:20;;;;;21857:18;;;;;:62;1425:2;21857:62;;-1:-1:-1;;;;;633:21847:20;;21950:16;;;;:58;1425:2;21950:58;22031:26;;;22027:71;;22120:25;;;22116:108;;22267:25;22249:45;22267:25;22260:33;22267:25;;:::i;:::-;22260:33;:::i;22116:108::-;22186:25;22179:33;22186:25;22168:45;22186:25;;:::i;22179:33::-;22168:45;;:::i;22027:71::-;22073:14;;;;:::o;21950:58::-;633:21847;;21985:13;633:21847;;;;;;21950:58;;21857:62;633:21847;;21894:13;633:21847;;;;;;21857:62;;;17608:875;;633:21847;;;;;;;;;17872:12;633:21847;;;;;;;;17872:49;;;17608:875;17949:60;;;;17964:24;633:21847;17949:60;;18036:52;;;18051:20;633:21847;18036:52;;633:21847;18112:14;633:21847;;18111:15;18107:60;;18212:63;;;;18312:65;18212:63;;;:::i;:::-;18312:65;;:::i;:::-;18403:35;;;;;;:73;17608:875;:::o;18403:73::-;;;17608:875;:::o;18107:60::-;18142:14;;;;;;:::o;18036:52::-;18074:14;633:21847;18036:52;;;17949:60;17991:18;633:21847;17949:60;;;17872:49;-1:-1:-1;;;;;;633:21847:20;;;;;;17872:12;633:21847;;;;;;;;17872:49;;20444:154;633:21847;;;;;;;;-1:-1:-1;633:21847:20;20524:11;633:21847;;20524:30;633:21847;-1:-1:-1;633:21847:20;;;;20524:30;:::i;:::-;633:21847;;;-1:-1:-1;633:21847:20;20524:11;633:21847;;;-1:-1:-1;633:21847:20;;;-1:-1:-1;633:21847:20;20899:13;633:21847;;;-1:-1:-1;633:21847:20;;-1:-1:-1;20873:75:20;;20444:154::o;20873:75::-;20929:19;;;-1:-1:-1;20929:19:20;;-1:-1:-1;20929:19:20;16150:317;-1:-1:-1;;;;;633:21847:20;-1:-1:-1;633:21847:20;;;16252:11;633:21847;;;;;;;;16252:29;;;:::i;:::-;633:21847;-1:-1:-1;633:21847:20;16252:11;633:21847;;;-1:-1:-1;633:21847:20;;;-1:-1:-1;633:21847:20;16315:14;633:21847;;;-1:-1:-1;633:21847:20;;16351:18;;16347:114;;16150:317;;:::o;16347:114::-;-1:-1:-1;633:21847:20;16252:11;633:21847;;;-1:-1:-1;633:21847:20;;16389:35;16385:65;;16150:317::o;16385:65::-;16433:17;;;-1:-1:-1;16433:17:20;;-1:-1:-1;16433:17:20;20608:187;-1:-1:-1;;;;;633:21847:20;-1:-1:-1;633:21847:20;;;20692:11;633:21847;;;;;;20692:29;-1:-1:-1;20688:60:20;;-1:-1:-1;633:21847:20;20692:11;633:21847;;20758:30;633:21847;-1:-1:-1;633:21847:20;;;;20758:30;:::i;:::-;633:21847;;20608:187::o;20688:60::-;11098:18;;;-1:-1:-1;20730:18:20;;-1:-1:-1;20730:18:20;16477:231;-1:-1:-1;;;;;633:21847:20;-1:-1:-1;633:21847:20;;;16573:11;633:21847;;;;;;;;16606:15;;;16602:52;;16686:15;;;:::i;:::-;633:21847;-1:-1:-1;633:21847:20;16573:11;633:21847;;;-1:-1:-1;633:21847:20;;16477:231::o;16602:52::-;16630:24;;;-1:-1:-1;16630:24:20;;-1:-1:-1;16630:24:20;7082:141:25;633:21847:20;-1:-1:-1;;;;;;;;;;;633:21847:20;;;;7148:18:25;7144:73;;7082:141::o;7144:73::-;7189:17;;;-1:-1:-1;7189:17:25;;-1:-1:-1;7189:17:25;4437:582:45;;4609:8;;-1:-1:-1;633:21847:20;;5690:21:45;:17;;5815:105;;;;;;5686:301;5957:19;;;5710:1;5957:19;;5710:1;5957:19;4605:408;633:21847:20;;4857:22:45;:49;;;4605:408;4853:119;;4985:17;;:::o;4853:119::-;-1:-1:-1;;;4878:1:45;4933:24;;;-1:-1:-1;;;;;633:21847:20;;;;4933:24:45;633:21847:20;;;4933:24:45;4857:49;4883:18;;;:23;4857:49;","linkReferences":{},"immutableReferences":{"10672":[{"start":3869,"length":32},{"start":4134,"length":32}]}},"methodIdentifiers":{"BASIS_POINTS_DIVISOR()":"126082cf","PRICE_PRECISION()":"95082d25","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","USDY_DECIMALS()":"cffc734c","allWhitelistedTokens(uint256)":"e468baf0","buyUSDY(address,address)":"2efc7660","clearWhitelistedToken(address)":"1d517d65","emergencyMode()":"0905f560","getAllPoolTokens()":"76cd370e","getFeeBasisPoints(address,uint256,uint256,uint256,bool)":"c7e074c3","getMaxPrice(address)":"e124e6d2","getMinPrice(address)":"81a612d6","getPoolValue(bool)":"bab3e9e6","getPrice(address,bool)":"76d69760","getRedemptionFeeBasisPoints(address,uint256)":"802f9270","getSwapFeeBasisPoints(address,address,uint256)":"da133816","getTargetUsdyAmount(address)":"3dd9bd82","gov()":"12d43a51","hasDynamicFees()":"9f392eb3","initialize(address,address)":"485cc955","isSwapEnabled()":"351a964d","isSwapper(address)":"b64230ba","maxSwapAmount(address)":"e7881011","maxSwapSlippageBps()":"b7c3565d","maxUsdyAmounts(address)":"e17d4308","poolAmounts(address)":"52f55eed","priceFeed()":"741bef1a","proxiableUUID()":"52d1902d","sellUSDY(address,address)":"3d332583","setDynamicFees(bool)":"2f1983d4","setEmergencyMode(bool)":"be32b3f8","setGov(address)":"cfad57a2","setMaxSwapAmount(address,uint256)":"a589d319","setMaxSwapSlippageBps(uint256)":"e89d59de","setPoolManager(address)":"7aef6715","setSwapEnabled(bool)":"e01af92c","setSwapFees(uint256,uint256,uint256,uint256)":"8038cbd3","setSwapper(address,bool)":"3f2617cb","setWhitelistedToken(address,uint256,uint256,uint256,bool)":"3a0ede36","stableSwapFeeBasisPoints()":"df73a267","stableTaxBasisPoints()":"10eb56c2","stableTokens(address)":"42b60b03","swap(address,address,address)":"93316212","swapFeeBasisPoints()":"a22f2392","taxBasisPoints()":"7a210a2b","tokenBalances(address)":"523fba7f","tokenDecimals(address)":"8ee573ac","tokenWeights(address)":"ab2f3ad4","totalTokenWeights()":"dc8f5fac","upgradeToAndCall(address,bytes)":"4f1ef286","usdy()":"98d506e9","usdyAmounts(address)":"d3af922d","whitelistedTokens(address)":"daf9c210","withdrawToken(address,address,uint256)":"01e33667","ytPoolManager()":"778d733d"}}}},"contracts/ytLp/tokens/USDY.sol":{"USDY":{"abi":[{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"addVault","inputs":[{"name":"_vault","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mint","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"removeVault","inputs":[{"name":"_vault","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"vaults","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"VaultAdded","inputs":[{"name":"vault","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"VaultRemoved","inputs":[{"name":"vault","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"Forbidden","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidVault","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Forbidden\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":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\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"}],\"name\":\"VaultAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"}],\"name\":\"VaultRemoved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vault\",\"type\":\"address\"}],\"name\":\"addVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"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\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"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\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vault\",\"type\":\"address\"}],\"name\":\"removeVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"vaults\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"\\u53ea\\u6709\\u6388\\u6743\\u7684Vault\\u53ef\\u4ee5\\u94f8\\u9020\\u548c\\u9500\\u6bc1\\uff0cUUPS\\u53ef\\u5347\\u7ea7\\u5408\\u7ea6\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"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.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"addVault(address)\":{\"params\":{\"_vault\":\"Vault\\u5408\\u7ea6\\u5730\\u5740\"}},\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"burn(address,uint256)\":{\"params\":{\"_account\":\"\\u9500\\u6bc1\\u5730\\u5740\",\"_amount\":\"\\u9500\\u6bc1\\u6570\\u91cf\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"mint(address,uint256)\":{\"params\":{\"_account\":\"\\u63a5\\u6536\\u5730\\u5740\",\"_amount\":\"\\u94f8\\u9020\\u6570\\u91cf\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"removeVault(address)\":{\"params\":{\"_vault\":\"Vault\\u5408\\u7ea6\\u5730\\u5740\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"\\u9884\\u7559\\u5b58\\u50a8\\u7a7a\\u95f4\\uff0c\\u7528\\u4e8e\\u672a\\u6765\\u5347\\u7ea7\\u65f6\\u6dfb\\u52a0\\u65b0\\u7684\\u72b6\\u6001\\u53d8\\u91cf 50\\u4e2aslot = 50 * 32 bytes = 1600 bytes\"}},\"title\":\"USDY Token\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addVault(address)\":{\"notice\":\"\\u6dfb\\u52a0\\u6388\\u6743\\u7684Vault\\u5730\\u5740\"},\"burn(address,uint256)\":{\"notice\":\"\\u9500\\u6bc1USDY\\u4ee3\\u5e01\"},\"initialize()\":{\"notice\":\"\\u521d\\u59cb\\u5316\\u5408\\u7ea6\"},\"mint(address,uint256)\":{\"notice\":\"\\u94f8\\u9020USDY\\u4ee3\\u5e01\"},\"removeVault(address)\":{\"notice\":\"\\u79fb\\u9664\\u6388\\u6743\\u7684Vault\\u5730\\u5740\"}},\"notice\":\"\\u7edf\\u4e00\\u8ba1\\u4ef7\\u4ee3\\u5e01\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ytLp/tokens/USDY.sol\":\"USDY\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"contracts/ytLp/tokens/USDY.sol\":{\"keccak256\":\"0x318c8a532975004dfeaefb24e089f942688e94fbb0f39b0bc4395bfc0e3d08fd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://879488816891ac0172ce3eb10f560cbc625a6a3307bd93fa9fa35d48db38a704\",\"dweb:/ipfs/QmXvEX5v5SYxhnJitMY1tGocSCxWByEv4hxtnepGFqpkXi\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x574a7451e42724f7de29e2855c392a8a5020acd695169466a18459467d719d63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bc189f63b639ee173dd7b6fecc39baf7113bf161776aea22b34c57fdd1872ec\",\"dweb:/ipfs/QmZAf2VtjDLRULqjJkde6LNsxAg12tUqpPqgUQQZbAjgtZ\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xfcd09c2aa8cc3f93e12545454359f901965db312bc03833daf84de0c03e05022\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07701188648d2ab83dab1037808298585264559bddf243bd8929037adcb984b0\",\"dweb:/ipfs/QmavmG5REdHCAWsZ8Cag26BCxAq27DRKGxr3uBg5ZYxQ51\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60a080604052346029573060805261141b908161002e82396080518181816109e10152610ab10152f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806306fdde0314610f59578063095ea7b314610eda57806318160ddd14610eb157806323b872dd14610dd9578063256b5a0214610d5e578063313ce56714610d4357806340c10f1914610c665780634f1ef28614610a3557806352d1902d146109cf57806370a082311461098b578063715018a6146109245780638129fc1c146104b15780638da5cb5b1461047d57806395d89b411461038f5780639dc29fac1461028b578063a622ee7c1461024f578063a9059cbb1461021e578063ad3cb1cc146101db578063ceb68c2314610176578063dd62ed3e1461012f5763f2fde38b14610100575f80fd5b3461012b57602036600319011261012b5761012961011c611040565b610124611249565b61111a565b005b5f80fd5b3461012b57604036600319011261012b57610148611040565b610159610153611056565b916110aa565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461012b57602036600319011261012b5761018f611040565b610197611249565b6001600160a01b03165f818152602081905260408120805460ff191690557fe71f3a50e5ad81964f352c411f1d45e35438ecd1acecef59ac81d9fbbf6cbc0a9080a2005b3461012b575f36600319011261012b5761021a6040516101fc60408261106c565b60058152640352e302e360dc1b602082015260405191829182611016565b0390f35b3461012b57604036600319011261012b5761024461023a611040565b602435903361118b565b602060405160018152f35b3461012b57602036600319011261012b576001600160a01b03610270611040565b165f525f602052602060ff60405f2054166040519015158152f35b3461012b57604036600319011261012b576102a4611040565b60243590335f525f60205260ff60405f20541615610380576001600160a01b0316801561036d57805f525f5160206113265f395f51905f5260205260405f2054828110610354576020835f947fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f5160206113265f395f51905f528452036040862055805f5160206113865f395f51905f5254035f5160206113865f395f51905f5255604051908152a3005b9063391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b631dd2188d60e31b5f5260045ffd5b3461012b575f36600319011261012b576040515f5f5160206113465f395f51905f52546103bb816110e2565b808452906001811690811561045957506001146103ef575b61021a836103e38185038261106c565b60405191829182611016565b5f5160206113465f395f51905f525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b80821061043f575090915081016020016103e36103d3565b919260018160209254838588010152019101909291610427565b60ff191660208086019190915291151560051b840190910191506103e390506103d3565b3461012b575f36600319011261012b575f5160206113665f395f51905f52546040516001600160a01b039091168152602090f35b3461012b575f36600319011261012b575f5160206113c65f395f51905f525460ff8160401c16159067ffffffffffffffff81168015908161091c575b6001149081610912575b159081610909575b506108fa5767ffffffffffffffff1981166001175f5160206113c65f395f51905f5255816108ce575b50604090815191610539818461106c565b60068352651655081554d160d21b6020840152805191610559828461106c565b60048352635553445960e01b602084015261057261127c565b61057a61127c565b835167ffffffffffffffff81116107c5576105a25f5160206113065f395f51905f52546110e2565b601f811161085f575b50602094601f82116001146107e4579481929394955f926107d9575b50508160011b915f199060031b1c1916175f5160206113065f395f51905f52555b825167ffffffffffffffff81116107c5576106105f5160206113465f395f51905f52546110e2565b601f8111610756575b506020601f82116001146106db57819293945f926106d0575b50508160011b915f199060031b1c1916175f5160206113465f395f51905f52555b61065b61127c565b61066361127c565b61066c3361111a565b61067461127c565b61067a57005b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29168ff0000000000000000195f5160206113c65f395f51905f5254165f5160206113c65f395f51905f52555160018152a1005b015190508480610632565b601f198216905f5160206113465f395f51905f525f52805f20915f5b81811061073e57509583600195969710610726575b505050811b015f5160206113465f395f51905f5255610653565b01515f1960f88460031b161c1916905584808061070c565b9192602060018192868b0151815501940192016106f7565b5f5160206113465f395f51905f525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c810191602084106107bb575b601f0160051c01905b8181106107b05750610619565b5f81556001016107a3565b909150819061079a565b634e487b7160e01b5f52604160045260245ffd5b0151905085806105c7565b601f198216955f5160206113065f395f51905f525f52805f20915f5b8881106108475750836001959697981061082f575b505050811b015f5160206113065f395f51905f52556105e8565b01515f1960f88460031b161c19169055858080610815565b91926020600181928685015181550194019201610800565b5f5160206113065f395f51905f525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c810191602084106108c4575b601f0160051c01905b8181106108b957506105ab565b5f81556001016108ac565b90915081906108a3565b68ffffffffffffffffff191668010000000000000001175f5160206113c65f395f51905f525581610528565b63f92ee8a960e01b5f5260045ffd5b905015836104ff565b303b1591506104f7565b8391506104ed565b3461012b575f36600319011261012b5761093c611249565b5f5160206113665f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461012b57602036600319011261012b576001600160a01b036109ac611040565b165f525f5160206113265f395f51905f52602052602060405f2054604051908152f35b3461012b575f36600319011261012b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610a265760206040515f5160206113a65f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b604036600319011261012b57610a49611040565b6024359067ffffffffffffffff821161012b573660238301121561012b57816004013590610a768261108e565b91610a84604051938461106c565b8083526020830193366024838301011161012b57815f926024602093018737840101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115610c44575b50610a2657610ae9611249565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa5f9181610c10575b50610b2b5784634c9c8ce360e01b5f5260045260245ffd5b805f5160206113a65f395f51905f52869203610bfe5750823b15610bec575f5160206113a65f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2825115610bd3575f8091610129945190845af43d15610bcb573d91610baf8361108e565b92610bbd604051948561106c565b83523d5f602085013e6112a7565b6060916112a7565b50505034610bdd57005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d602011610c3c575b81610c2c6020938361106c565b8101031261012b57519086610b13565b3d9150610c1f565b5f5160206113a65f395f51905f52546001600160a01b03161415905084610adc565b3461012b57604036600319011261012b57610c7f611040565b60243590335f525f60205260ff60405f20541615610380576001600160a01b0316908115610d30575f5160206113865f395f51905f525490808201809211610d1c5760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef915f935f5160206113865f395f51905f52558484525f5160206113265f395f51905f52825260408420818154019055604051908152a3005b634e487b7160e01b5f52601160045260245ffd5b63ec442f0560e01b5f525f60045260245ffd5b3461012b575f36600319011261012b57602060405160128152f35b3461012b57602036600319011261012b57610d77611040565b610d7f611249565b6001600160a01b03168015610dca57805f525f60205260405f20600160ff198254161790557f7b7ef7a864d96a85497a1ed846adb39940dd6ccef678ff6ac8d55505e09b8cc45f80a2005b630681d31960e51b5f5260045ffd5b3461012b57606036600319011261012b57610df2611040565b610dfa611056565b60443590610e07836110aa565b335f9081526020919091526040902054925f198410610e2b575b610244935061118b565b828410610e96576001600160a01b03811615610e83573315610e705761024493610e54826110aa565b60018060a01b0333165f526020528360405f2091039055610e21565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b8284637dc7a0d960e11b5f523360045260245260445260645ffd5b3461012b575f36600319011261012b5760205f5160206113865f395f51905f5254604051908152f35b3461012b57604036600319011261012b57610ef3611040565b602435903315610e83576001600160a01b0316908115610e7057610f16336110aa565b825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b3461012b575f36600319011261012b576040515f5f5160206113065f395f51905f5254610f85816110e2565b80845290600181169081156104595750600114610fac5761021a836103e38185038261106c565b5f5160206113065f395f51905f525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b808210610ffc575090915081016020016103e36103d3565b919260018160209254838588010152019101909291610fe4565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361012b57565b602435906001600160a01b038216820361012b57565b90601f8019910116810190811067ffffffffffffffff8211176107c557604052565b67ffffffffffffffff81116107c557601f01601f191660200190565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b90600182811c92168015611110575b60208310146110fc57565b634e487b7160e01b5f52602260045260245ffd5b91607f16916110f1565b6001600160a01b03168015611178575f5160206113665f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b6001600160a01b031690811561036d576001600160a01b0316918215610d3057815f525f5160206113265f395f51905f5260205260405f205481811061123057817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f5160206113265f395f51905f5284520360405f2055845f525f5160206113265f395f51905f52825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b5f5160206113665f395f51905f52546001600160a01b0316330361126957565b63118cdaa760e01b5f523360045260245ffd5b60ff5f5160206113c65f395f51905f525460401c161561129857565b631afcd79f60e31b5f5260045ffd5b906112cb57508051156112bc57602081519101fd5b63d6bda27560e01b5f5260045ffd5b815115806112fc575b6112dc575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156112d456fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122033f996f330e4cec56b9730ccea65d5a8d9a761f7322d245a398dc67924c8884764736f6c634300081e0033","sourceMap":"498:2001:21:-:0;;;;;;;1171:4:26;1163:13;;498:2001:21;;;;;;1163:13:26;498:2001:21;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"60806040526004361015610011575f80fd5b5f3560e01c806306fdde0314610f59578063095ea7b314610eda57806318160ddd14610eb157806323b872dd14610dd9578063256b5a0214610d5e578063313ce56714610d4357806340c10f1914610c665780634f1ef28614610a3557806352d1902d146109cf57806370a082311461098b578063715018a6146109245780638129fc1c146104b15780638da5cb5b1461047d57806395d89b411461038f5780639dc29fac1461028b578063a622ee7c1461024f578063a9059cbb1461021e578063ad3cb1cc146101db578063ceb68c2314610176578063dd62ed3e1461012f5763f2fde38b14610100575f80fd5b3461012b57602036600319011261012b5761012961011c611040565b610124611249565b61111a565b005b5f80fd5b3461012b57604036600319011261012b57610148611040565b610159610153611056565b916110aa565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461012b57602036600319011261012b5761018f611040565b610197611249565b6001600160a01b03165f818152602081905260408120805460ff191690557fe71f3a50e5ad81964f352c411f1d45e35438ecd1acecef59ac81d9fbbf6cbc0a9080a2005b3461012b575f36600319011261012b5761021a6040516101fc60408261106c565b60058152640352e302e360dc1b602082015260405191829182611016565b0390f35b3461012b57604036600319011261012b5761024461023a611040565b602435903361118b565b602060405160018152f35b3461012b57602036600319011261012b576001600160a01b03610270611040565b165f525f602052602060ff60405f2054166040519015158152f35b3461012b57604036600319011261012b576102a4611040565b60243590335f525f60205260ff60405f20541615610380576001600160a01b0316801561036d57805f525f5160206113265f395f51905f5260205260405f2054828110610354576020835f947fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f5160206113265f395f51905f528452036040862055805f5160206113865f395f51905f5254035f5160206113865f395f51905f5255604051908152a3005b9063391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b631dd2188d60e31b5f5260045ffd5b3461012b575f36600319011261012b576040515f5f5160206113465f395f51905f52546103bb816110e2565b808452906001811690811561045957506001146103ef575b61021a836103e38185038261106c565b60405191829182611016565b5f5160206113465f395f51905f525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b80821061043f575090915081016020016103e36103d3565b919260018160209254838588010152019101909291610427565b60ff191660208086019190915291151560051b840190910191506103e390506103d3565b3461012b575f36600319011261012b575f5160206113665f395f51905f52546040516001600160a01b039091168152602090f35b3461012b575f36600319011261012b575f5160206113c65f395f51905f525460ff8160401c16159067ffffffffffffffff81168015908161091c575b6001149081610912575b159081610909575b506108fa5767ffffffffffffffff1981166001175f5160206113c65f395f51905f5255816108ce575b50604090815191610539818461106c565b60068352651655081554d160d21b6020840152805191610559828461106c565b60048352635553445960e01b602084015261057261127c565b61057a61127c565b835167ffffffffffffffff81116107c5576105a25f5160206113065f395f51905f52546110e2565b601f811161085f575b50602094601f82116001146107e4579481929394955f926107d9575b50508160011b915f199060031b1c1916175f5160206113065f395f51905f52555b825167ffffffffffffffff81116107c5576106105f5160206113465f395f51905f52546110e2565b601f8111610756575b506020601f82116001146106db57819293945f926106d0575b50508160011b915f199060031b1c1916175f5160206113465f395f51905f52555b61065b61127c565b61066361127c565b61066c3361111a565b61067461127c565b61067a57005b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29168ff0000000000000000195f5160206113c65f395f51905f5254165f5160206113c65f395f51905f52555160018152a1005b015190508480610632565b601f198216905f5160206113465f395f51905f525f52805f20915f5b81811061073e57509583600195969710610726575b505050811b015f5160206113465f395f51905f5255610653565b01515f1960f88460031b161c1916905584808061070c565b9192602060018192868b0151815501940192016106f7565b5f5160206113465f395f51905f525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c810191602084106107bb575b601f0160051c01905b8181106107b05750610619565b5f81556001016107a3565b909150819061079a565b634e487b7160e01b5f52604160045260245ffd5b0151905085806105c7565b601f198216955f5160206113065f395f51905f525f52805f20915f5b8881106108475750836001959697981061082f575b505050811b015f5160206113065f395f51905f52556105e8565b01515f1960f88460031b161c19169055858080610815565b91926020600181928685015181550194019201610800565b5f5160206113065f395f51905f525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c810191602084106108c4575b601f0160051c01905b8181106108b957506105ab565b5f81556001016108ac565b90915081906108a3565b68ffffffffffffffffff191668010000000000000001175f5160206113c65f395f51905f525581610528565b63f92ee8a960e01b5f5260045ffd5b905015836104ff565b303b1591506104f7565b8391506104ed565b3461012b575f36600319011261012b5761093c611249565b5f5160206113665f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461012b57602036600319011261012b576001600160a01b036109ac611040565b165f525f5160206113265f395f51905f52602052602060405f2054604051908152f35b3461012b575f36600319011261012b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610a265760206040515f5160206113a65f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b604036600319011261012b57610a49611040565b6024359067ffffffffffffffff821161012b573660238301121561012b57816004013590610a768261108e565b91610a84604051938461106c565b8083526020830193366024838301011161012b57815f926024602093018737840101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115610c44575b50610a2657610ae9611249565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa5f9181610c10575b50610b2b5784634c9c8ce360e01b5f5260045260245ffd5b805f5160206113a65f395f51905f52869203610bfe5750823b15610bec575f5160206113a65f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2825115610bd3575f8091610129945190845af43d15610bcb573d91610baf8361108e565b92610bbd604051948561106c565b83523d5f602085013e6112a7565b6060916112a7565b50505034610bdd57005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d602011610c3c575b81610c2c6020938361106c565b8101031261012b57519086610b13565b3d9150610c1f565b5f5160206113a65f395f51905f52546001600160a01b03161415905084610adc565b3461012b57604036600319011261012b57610c7f611040565b60243590335f525f60205260ff60405f20541615610380576001600160a01b0316908115610d30575f5160206113865f395f51905f525490808201809211610d1c5760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef915f935f5160206113865f395f51905f52558484525f5160206113265f395f51905f52825260408420818154019055604051908152a3005b634e487b7160e01b5f52601160045260245ffd5b63ec442f0560e01b5f525f60045260245ffd5b3461012b575f36600319011261012b57602060405160128152f35b3461012b57602036600319011261012b57610d77611040565b610d7f611249565b6001600160a01b03168015610dca57805f525f60205260405f20600160ff198254161790557f7b7ef7a864d96a85497a1ed846adb39940dd6ccef678ff6ac8d55505e09b8cc45f80a2005b630681d31960e51b5f5260045ffd5b3461012b57606036600319011261012b57610df2611040565b610dfa611056565b60443590610e07836110aa565b335f9081526020919091526040902054925f198410610e2b575b610244935061118b565b828410610e96576001600160a01b03811615610e83573315610e705761024493610e54826110aa565b60018060a01b0333165f526020528360405f2091039055610e21565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b8284637dc7a0d960e11b5f523360045260245260445260645ffd5b3461012b575f36600319011261012b5760205f5160206113865f395f51905f5254604051908152f35b3461012b57604036600319011261012b57610ef3611040565b602435903315610e83576001600160a01b0316908115610e7057610f16336110aa565b825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b3461012b575f36600319011261012b576040515f5f5160206113065f395f51905f5254610f85816110e2565b80845290600181169081156104595750600114610fac5761021a836103e38185038261106c565b5f5160206113065f395f51905f525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b808210610ffc575090915081016020016103e36103d3565b919260018160209254838588010152019101909291610fe4565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361012b57565b602435906001600160a01b038216820361012b57565b90601f8019910116810190811067ffffffffffffffff8211176107c557604052565b67ffffffffffffffff81116107c557601f01601f191660200190565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b90600182811c92168015611110575b60208310146110fc57565b634e487b7160e01b5f52602260045260245ffd5b91607f16916110f1565b6001600160a01b03168015611178575f5160206113665f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b6001600160a01b031690811561036d576001600160a01b0316918215610d3057815f525f5160206113265f395f51905f5260205260405f205481811061123057817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f5160206113265f395f51905f5284520360405f2055845f525f5160206113265f395f51905f52825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b5f5160206113665f395f51905f52546001600160a01b0316330361126957565b63118cdaa760e01b5f523360045260245ffd5b60ff5f5160206113c65f395f51905f525460401c161561129857565b631afcd79f60e31b5f5260045ffd5b906112cb57508051156112bc57602081519101fd5b63d6bda27560e01b5f5260045ffd5b815115806112fc575b6112dc575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156112d456fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122033f996f330e4cec56b9730ccea65d5a8d9a761f7322d245a398dc67924c8884764736f6c634300081e0033","sourceMap":"498:2001:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;498:2001:21;;;;2357:1:24;498:2001:21;;:::i;:::-;2303:62:24;;:::i;:::-;2357:1;:::i;:::-;498:2001:21;;;;;;;;;;;-1:-1:-1;;498:2001:21;;;;;;:::i;:::-;4771:20:27;498:2001:21;;:::i;:::-;4771:20:27;;:::i;:::-;:29;498:2001:21;;;;;;-1:-1:-1;498:2001:21;;;;;-1:-1:-1;498:2001:21;;;;;;;;;;;;;;-1:-1:-1;;498:2001:21;;;;;;:::i;:::-;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;498:2001:21;;;;;;;;;;;;;;-1:-1:-1;;498:2001:21;;;1817:20;;498:2001;1817:20;498:2001;;;;;;;-1:-1:-1;;498:2001:21;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;498:2001:21;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;498:2001:21;;;;4545:5:27;498:2001:21;;:::i;:::-;;;966:10:28;;4545:5:27;:::i;:::-;498:2001:21;;;;;;;;;;;;;-1:-1:-1;;498:2001:21;;;;-1:-1:-1;;;;;498:2001:21;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;498:2001:21;;;;;;:::i;:::-;;;838:10;;498:2001;;;;;;;;;;;830:19;826:43;;-1:-1:-1;;;;;498:2001:21;9233:21:27;;9229:89;;498:2001:21;;;-1:-1:-1;;;;;;;;;;;498:2001:21;;;;;;7513:19:27;;;7509:115;;498:2001:21;;;;8262:25:27;498:2001:21;;;;-1:-1:-1;;;;;;;;;;;498:2001:21;;;;;;;;-1:-1:-1;;;;;;;;;;;498:2001:21;;-1:-1:-1;;;;;;;;;;;498:2001:21;;;;;;8262:25:27;498:2001:21;7509:115:27;7559:50;;;;498:2001:21;7559:50:27;498:2001:21;;;;;;;;7559:50:27;9229:89;9277:30;;;498:2001:21;9277:30:27;498:2001:21;;;;;9277:30:27;826:43:21;858:11;;;498:2001;858:11;498:2001;;858:11;498:2001;;;;;;-1:-1:-1;;498:2001:21;;;;;;;-1:-1:-1;;;;;;;;;;;498:2001:21;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;498:2001:21;;;;;;;-1:-1:-1;498:2001:21;;;;;;;-1:-1:-1;498:2001:21;;-1:-1:-1;498:2001:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;498:2001:21;;;;;;;;;;;;;;;;;;;;-1:-1:-1;498:2001:21;;-1:-1:-1;498:2001:21;;;;;;;;-1:-1:-1;;498:2001:21;;;;-1:-1:-1;;;;;;;;;;;498:2001:21;;;-1:-1:-1;;;;;498:2001:21;;;;;;;;;;;;;;-1:-1:-1;;498:2001:21;;;;-1:-1:-1;;;;;;;;;;;498:2001:21;;;;;;4301:16:25;498:2001:21;;;;4724:16:25;;:34;;;;498:2001:21;4803:1:25;4788:16;:50;;;;498:2001:21;4853:13:25;:30;;;;498:2001:21;4849:91:25;;;-1:-1:-1;;498:2001:21;;4803:1:25;498:2001:21;-1:-1:-1;;;;;;;;;;;498:2001:21;;4977:67:25;;498:2001:21;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;498:2001:21;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;498:2001:21;;;;6891:76:25;;:::i;:::-;;;:::i;:::-;498:2001:21;;;;;;;;-1:-1:-1;;;;;;;;;;;498:2001:21;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:25;498:2001:21;11833:17:27;;;498:2001:21;2581:7:27;498:2001:21;;;;;-1:-1:-1;;;;;;;;;;;498:2001:21;;;;;;;;;;-1:-1:-1;;;;;;;;;;;498:2001:21;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:25;498:2001:21;11833:17:27;;;498:2001:21;2581:7:27;498:2001:21;;;;;-1:-1:-1;;;;;;;;;;;498:2001:21;;6891:76:25;;:::i;:::-;;;:::i;:::-;6959:1;1052:10:21;6959:1:25;:::i;:::-;6891:76;;:::i;:::-;5064:101;;498:2001:21;5064:101:25;498:2001:21;5140:14:25;498:2001:21;;;-1:-1:-1;;;;;;;;;;;498:2001:21;;-1:-1:-1;;;;;;;;;;;498:2001:21;;4803:1:25;498:2001:21;;5140:14:25;498:2001:21;;;;;-1:-1:-1;498:2001:21;;;;;;;;;;-1:-1:-1;;;;;;;;;;;498:2001:21;;;;;;;;;;;;;;;;4803:1:25;498:2001:21;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;498:2001:21;;;;;;11833:17:27;;498:2001:21;;2581:7:27;498:2001:21;;;;;;;;;;;;;;;;4803:1:25;498:2001:21;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;498:2001:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:25;498:2001:21;;;;;;-1:-1:-1;498:2001:21;;;;;;;;;;;;;;;;;;;;-1:-1:-1;498:2001:21;;;;;;;;;;-1:-1:-1;;;;;;;;;;;498:2001:21;;;;;;;;;;;;;;;4803:1:25;498:2001:21;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;498:2001:21;;;;;;11833:17:27;;498:2001:21;;2581:7:27;498:2001:21;;;;;;;;;;;;;;;;4803:1:25;498:2001:21;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;498:2001:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:25;498:2001:21;;;;;;-1:-1:-1;498:2001:21;;;;4977:67:25;-1:-1:-1;;498:2001:21;;;-1:-1:-1;;;;;;;;;;;498:2001:21;4977:67:25;;;4849:91;4906:23;;;498:2001:21;4906:23:25;498:2001:21;;4906:23:25;4853:30;4870:13;;;4853:30;;;4788:50;4816:4;4808:25;:30;;-1:-1:-1;4788:50:25;;4724:34;;;-1:-1:-1;4724:34:25;;498:2001:21;;;;;;-1:-1:-1;;498:2001:21;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;498:2001:21;;-1:-1:-1;;;;;;498:2001:21;;;;;;;-1:-1:-1;;;;;498:2001:21;3975:40:24;498:2001:21;;3975:40:24;498:2001:21;;;;;;;-1:-1:-1;;498:2001:21;;;;-1:-1:-1;;;;;498:2001:21;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;498:2001:21;;;;;;;;;;;;;;;;;;;-1:-1:-1;;498:2001:21;;;;5090:6:26;-1:-1:-1;;;;;498:2001:21;5081:4:26;5073:23;5069:145;;498:2001:21;;;-1:-1:-1;;;;;;;;;;;498:2001:21;;;5069:145:26;4844:29;;;498:2001:21;5174:29:26;498:2001:21;;5174:29:26;498:2001:21;;;-1:-1:-1;;498:2001:21;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4667:6:26;498:2001:21;4658:4:26;4650:23;;;:120;;;;498:2001:21;4633:251:26;;;2303:62:24;;:::i;:::-;498:2001:21;;-1:-1:-1;;;6131:52:26;;-1:-1:-1;;;;;498:2001:21;;;;;;;;;6131:52:26;;498:2001:21;;6131:52:26;;;498:2001:21;-1:-1:-1;6127:437:26;;1805:47:39;;;;498:2001:21;6493:60:26;498:2001:21;;;;6493:60:26;6127:437;6225:40;-1:-1:-1;;;;;;;;;;;6225:40:26;;;6221:120;;1748:29:39;;;:34;1744:119;;-1:-1:-1;;;;;;;;;;;498:2001:21;;-1:-1:-1;;;;;;498:2001:21;;;;;2407:36:39;-1:-1:-1;;2407:36:39;498:2001:21;;2458:15:39;:11;;498:2001:21;4065:25:45;;4107:55;4065:25;;;;;;498:2001:21;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;4107:55:45;:::i;498:2001:21:-;;;4107:55:45;:::i;2454:148:39:-;6163:9;;;;6159:70;;498:2001:21;6159:70:39;6199:19;;;498:2001:21;6199:19:39;498:2001:21;;6199:19:39;1744:119;1805:47;;;498:2001:21;1805:47:39;498:2001:21;;;;1805:47:39;6221:120:26;6292:34;;;498:2001:21;6292:34:26;498:2001:21;;;;6292:34:26;6131:52;;;;498:2001:21;6131:52:26;;498:2001:21;6131:52:26;;;;;;498:2001:21;6131:52:26;;;:::i;:::-;;;498:2001:21;;;;;6131:52:26;;;;;;;-1:-1:-1;6131:52:26;;4650:120;-1:-1:-1;;;;;;;;;;;498:2001:21;-1:-1:-1;;;;;498:2001:21;4728:42:26;;;-1:-1:-1;4650:120:26;;;498:2001:21;;;;;;-1:-1:-1;;498:2001:21;;;;;;:::i;:::-;;;838:10;;498:2001;;;;;;;;;;;830:19;826:43;;-1:-1:-1;;;;;498:2001:21;;8707:21:27;;8703:91;;-1:-1:-1;;;;;;;;;;;498:2001:21;;;;;;;;;;;8262:25:27;498:2001:21;;;-1:-1:-1;;;;;;;;;;;498:2001:21;;;;-1:-1:-1;;;;;;;;;;;498:2001:21;;;;;;;;;;;;;;;;8262:25:27;498:2001:21;;;;;;;;;;;;;8703:91:27;8751:32;;;498:2001:21;8751:32:27;498:2001:21;;;;;8751:32:27;498:2001:21;;;;;;-1:-1:-1;;498:2001:21;;;;;;;3808:2:27;498:2001:21;;;;;;;;;-1:-1:-1;;498:2001:21;;;;;;:::i;:::-;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;498:2001:21;1493:20;;1489:47;;498:2001;;;;;;;;;1563:4;498:2001;;;;;;;;1582:18;498:2001;1582:18;;498:2001;1489:47;1522:14;;;498:2001;1522:14;498:2001;;1522:14;498:2001;;;;;;-1:-1:-1;;498:2001:21;;;;;;:::i;:::-;;;:::i;:::-;;;4771:20:27;;;;:::i;:::-;966:10:28;-1:-1:-1;498:2001:21;;;;;;;;;;;;;-1:-1:-1;;11814:36:27;;11810:309;;498:2001:21;6102:5:27;;;;:::i;11810:309::-;11870:24;;;11866:130;;-1:-1:-1;;;;;498:2001:21;;11045:19:27;11041:89;;966:10:28;11143:21:27;11139:90;;6102:5;11238:20;;;;:::i;:::-;498:2001:21;;;;;966:10:28;498:2001:21;-1:-1:-1;498:2001:21;;;;;-1:-1:-1;498:2001:21;;;;;11810:309:27;;11139:90;11187:31;;;498:2001:21;11187:31:27;498:2001:21;;;;;11187:31:27;11041:89;11087:32;;;498:2001:21;11087:32:27;498:2001:21;;;;;11087:32:27;11866:130;11921:60;;;;;498:2001:21;11921:60:27;966:10:28;498:2001:21;;;;;;;;11921:60:27;498:2001:21;;;;;;-1:-1:-1;;498:2001:21;;;;;-1:-1:-1;;;;;;;;;;;498:2001:21;;;;;;;;;;;;;-1:-1:-1;;498:2001:21;;;;;;:::i;:::-;;;966:10:28;;11045:19:27;11041:89;;-1:-1:-1;;;;;498:2001:21;;11143:21:27;;11139:90;;11238:20;966:10:28;11238:20:27;:::i;:::-;498:2001:21;-1:-1:-1;498:2001:21;;;;;-1:-1:-1;498:2001:21;;;;;;;11319:31:27;498:2001:21;966:10:28;11319:31:27;;498:2001:21;;;;;;;;;;;;;-1:-1:-1;;498:2001:21;;;;;;;-1:-1:-1;;;;;;;;;;;498:2001:21;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;498:2001:21;;;;;;;-1:-1:-1;498:2001:21;;;;;;;-1:-1:-1;498:2001:21;;-1:-1:-1;498:2001:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;498:2001:21;;;;:::o;:::-;;;;-1:-1:-1;;;;;498:2001:21;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;498:2001:21;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;498:2001:21;;;;:::o;:::-;-1:-1:-1;;;;;498:2001:21;;;;;4771:13:27;498:2001:21;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;3405:215:24;-1:-1:-1;;;;;498:2001:21;3489:22:24;;3485:91;;-1:-1:-1;;;;;;;;;;;498:2001:21;;-1:-1:-1;;;;;;498:2001:21;;;;;;;-1:-1:-1;;;;;498:2001:21;3975:40:24;-1:-1:-1;;3975:40:24;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;498:2001:21;;3509:1:24;3534:31;6509:300:27;-1:-1:-1;;;;;498:2001:21;;6592:18:27;;6588:86;;-1:-1:-1;;;;;498:2001:21;;6687:16:27;;6683:86;;498:2001:21;6608:1:27;498:2001:21;-1:-1:-1;;;;;;;;;;;498:2001:21;;;6608:1:27;498:2001:21;;7513:19:27;;;7509:115;;498:2001:21;8262:25:27;498:2001:21;;;;6608:1:27;498:2001:21;-1:-1:-1;;;;;;;;;;;498:2001:21;;;;6608:1:27;498:2001:21;;;6608:1:27;498:2001:21;-1:-1:-1;;;;;;;;;;;498:2001:21;;;6608:1:27;498:2001:21;;;;;;;;;;;;8262:25:27;6509:300::o;7509:115::-;7559:50;;;;6608:1;7559:50;;498:2001:21;;;;;;6608:1:27;7559:50;2658:162:24;-1:-1:-1;;;;;;;;;;;498:2001:21;-1:-1:-1;;;;;498:2001:21;966:10:28;2717:23:24;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:24;966:10:28;2763:40:24;498:2001:21;;-1:-1:-1;2763:40:24;7082:141:25;498:2001:21;-1:-1:-1;;;;;;;;;;;498:2001:21;;;;7148:18:25;7144:73;;7082:141::o;7144:73::-;7189:17;;;-1:-1:-1;7189:17:25;;-1:-1:-1;7189:17:25;4437:582:45;;4609:8;;-1:-1:-1;498:2001:21;;5690:21:45;:17;;5815:105;;;;;;5686:301;5957:19;;;5710:1;5957:19;;5710:1;5957:19;4605:408;498:2001:21;;4857:22:45;:49;;;4605:408;4853:119;;4985:17;;:::o;4853:119::-;-1:-1:-1;;;4878:1:45;4933:24;;;-1:-1:-1;;;;;498:2001:21;;;;4933:24:45;498:2001:21;;;4933:24:45;4857:49;4883:18;;;:23;4857:49;","linkReferences":{},"immutableReferences":{"10672":[{"start":2529,"length":32},{"start":2737,"length":32}]}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","addVault(address)":"256b5a02","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address,uint256)":"9dc29fac","decimals()":"313ce567","initialize()":"8129fc1c","mint(address,uint256)":"40c10f19","name()":"06fdde03","owner()":"8da5cb5b","proxiableUUID()":"52d1902d","removeVault(address)":"ceb68c23","renounceOwnership()":"715018a6","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b","upgradeToAndCall(address,bytes)":"4f1ef286","vaults(address)":"a622ee7c"}}}},"contracts/ytLp/tokens/WUSD.sol":{"WUSD":{"abi":[{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mint","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":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\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"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\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"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.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"burn(address,uint256)\":{\"params\":{\"_amount\":\"\\u9500\\u6bc1\\u6570\\u91cf\",\"_from\":\"\\u9500\\u6bc1\\u5730\\u5740\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"initialize(string,string)\":{\"params\":{\"_name\":\"\\u4ee3\\u5e01\\u540d\\u79f0\",\"_symbol\":\"\\u4ee3\\u5e01\\u7b26\\u53f7\"}},\"mint(address,uint256)\":{\"params\":{\"_amount\":\"\\u94f8\\u9020\\u6570\\u91cf\",\"_to\":\"\\u63a5\\u6536\\u5730\\u5740\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"\\u9884\\u7559\\u5b58\\u50a8\\u7a7a\\u95f4\\uff0c\\u7528\\u4e8e\\u672a\\u6765\\u5347\\u7ea7\\u65f6\\u6dfb\\u52a0\\u65b0\\u7684\\u72b6\\u6001\\u53d8\\u91cf\"}},\"title\":\"WUSD\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"burn(address,uint256)\":{\"notice\":\"\\u9500\\u6bc1\\u4ee3\\u5e01\"},\"initialize(string,string)\":{\"notice\":\"\\u521d\\u59cb\\u5316\\u5408\\u7ea6\"},\"mint(address,uint256)\":{\"notice\":\"\\u94f8\\u9020\\u4ee3\\u5e01\"}},\"notice\":\"Wrapped USD - \\u7b80\\u5355\\u7684ERC20\\u4ee3\\u5e01\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ytLp/tokens/WUSD.sol\":\"WUSD\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"contracts/ytLp/tokens/WUSD.sol\":{\"keccak256\":\"0xf4589ddd7ca2615ac1e662a66e41f05693960a607fc68d92648382e2f9eafbc7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://76e31785a652a57f2a6fdfc785f15f7db5750e77b26844b2ea61ab721f0a4992\",\"dweb:/ipfs/QmP5r6auYPSyswRu1fVXSYpccnNY56QfNTHx8iFwMev2iU\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x574a7451e42724f7de29e2855c392a8a5020acd695169466a18459467d719d63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bc189f63b639ee173dd7b6fecc39baf7113bf161776aea22b34c57fdd1872ec\",\"dweb:/ipfs/QmZAf2VtjDLRULqjJkde6LNsxAg12tUqpPqgUQQZbAjgtZ\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xfcd09c2aa8cc3f93e12545454359f901965db312bc03833daf84de0c03e05022\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07701188648d2ab83dab1037808298585264559bddf243bd8929037adcb984b0\",\"dweb:/ipfs/QmavmG5REdHCAWsZ8Cag26BCxAq27DRKGxr3uBg5ZYxQ51\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60a08060405234602957306080526112dd908161002e823960805181818161049101526105340152f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806306fdde0314610dc7578063095ea7b314610d4857806318160ddd14610d1f57806323b872dd14610c47578063313ce56714610c2c57806340c10f1914610b5b5780634cd88b76146106eb5780634f1ef286146104e557806352d1902d1461047f57806370a082311461043b578063715018a6146103d45780638da5cb5b146103a057806395d89b41146102b25780639dc29fac146101c9578063a9059cbb14610198578063ad3cb1cc14610155578063dd62ed3e1461010e5763f2fde38b146100df575f80fd5b3461010a57602036600319011261010a576101086100fb610eae565b61010361110b565b610fdc565b005b5f80fd5b3461010a57604036600319011261010a57610127610eae565b610138610132610ec4565b91610fa4565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461010a575f36600319011261010a57610194604051610176604082610eda565b60058152640352e302e360dc1b602082015260405191829182610e84565b0390f35b3461010a57604036600319011261010a576101be6101b4610eae565b602435903361104d565b602060405160018152f35b3461010a57604036600319011261010a576101e2610eae565b602435906101ee61110b565b6001600160a01b0316801561029f57805f525f5160206111e85f395f51905f5260205260405f2054828110610286576020835f947fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f5160206111e85f395f51905f528452036040862055805f5160206112485f395f51905f5254035f5160206112485f395f51905f5255604051908152a3005b9063391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b3461010a575f36600319011261010a576040515f5f5160206112085f395f51905f52546102de81610f6c565b808452906001811690811561037c5750600114610312575b6101948361030681850382610eda565b60405191829182610e84565b5f5160206112085f395f51905f525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610362575090915081016020016103066102f6565b91926001816020925483858801015201910190929161034a565b60ff191660208086019190915291151560051b8401909101915061030690506102f6565b3461010a575f36600319011261010a575f5160206112285f395f51905f52546040516001600160a01b039091168152602090f35b3461010a575f36600319011261010a576103ec61110b565b5f5160206112285f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461010a57602036600319011261010a576001600160a01b0361045c610eae565b165f525f5160206111e85f395f51905f52602052602060405f2054604051908152f35b3461010a575f36600319011261010a577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036104d65760206040515f5160206112685f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b604036600319011261010a576104f9610eae565b60243567ffffffffffffffff811161010a573660238201121561010a5761052a903690602481600401359101610f18565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163081149081156106c9575b506104d65761056c61110b565b6040516352d1902d60e01b81526001600160a01b0383169290602081600481875afa5f9181610695575b506105ae5783634c9c8ce360e01b5f5260045260245ffd5b805f5160206112685f395f51905f528592036106835750813b15610671575f5160206112685f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115610659575f8083602061010895519101845af43d15610651573d9161063583610efc565b926106436040519485610eda565b83523d5f602085013e611169565b606091611169565b50503461066257005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d6020116106c1575b816106b160209383610eda565b8101031261010a57519085610596565b3d91506106a4565b5f5160206112685f395f51905f52546001600160a01b0316141590508361055f565b3461010a57604036600319011261010a5760043567ffffffffffffffff811161010a5761071c903690600401610f4e565b60243567ffffffffffffffff811161010a5761073c903690600401610f4e565b5f5160206112885f395f51905f525460ff8160401c16159067ffffffffffffffff811680159081610b53575b6001149081610b49575b159081610b40575b50610b315767ffffffffffffffff1981166001175f5160206112885f395f51905f525581610b05575b506107ac61113e565b6107b461113e565b825167ffffffffffffffff81116109fc576107dc5f5160206111c85f395f51905f5254610f6c565b601f8111610a96575b506020601f8211600114610a1b57819293945f92610a10575b50508160011b915f199060031b1c1916175f5160206111c85f395f51905f52555b815167ffffffffffffffff81116109fc576108475f5160206112085f395f51905f5254610f6c565b601f811161098d575b50602092601f821160011461091457928192935f92610909575b50508160011b915f199060031b1c1916175f5160206112085f395f51905f52555b61089361113e565b61089b61113e565b6108a361113e565b6108ac33610fdc565b6108b257005b68ff0000000000000000195f5160206112885f395f51905f5254165f5160206112885f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b01519050838061086a565b601f198216935f5160206112085f395f51905f525f52805f20915f5b868110610975575083600195961061095d575b505050811b015f5160206112085f395f51905f525561088b565b01515f1960f88460031b161c19169055838080610943565b91926020600181928685015181550194019201610930565b5f5160206112085f395f51905f525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c810191602084106109f2575b601f0160051c01905b8181106109e75750610850565b5f81556001016109da565b90915081906109d1565b634e487b7160e01b5f52604160045260245ffd5b0151905084806107fe565b601f198216905f5160206111c85f395f51905f525f52805f20915f5b818110610a7e57509583600195969710610a66575b505050811b015f5160206111c85f395f51905f525561081f565b01515f1960f88460031b161c19169055848080610a4c565b9192602060018192868b015181550194019201610a37565b5f5160206111c85f395f51905f525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c81019160208410610afb575b601f0160051c01905b818110610af057506107e5565b5f8155600101610ae3565b9091508190610ada565b68ffffffffffffffffff191668010000000000000001175f5160206112885f395f51905f5255836107a3565b63f92ee8a960e01b5f5260045ffd5b9050158561077a565b303b159150610772565b839150610768565b3461010a57604036600319011261010a57610b74610eae565b60243590610b8061110b565b6001600160a01b0316908115610c19575f5160206112485f395f51905f525490808201809211610c055760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef915f935f5160206112485f395f51905f52558484525f5160206111e85f395f51905f52825260408420818154019055604051908152a3005b634e487b7160e01b5f52601160045260245ffd5b63ec442f0560e01b5f525f60045260245ffd5b3461010a575f36600319011261010a57602060405160128152f35b3461010a57606036600319011261010a57610c60610eae565b610c68610ec4565b60443590610c7583610fa4565b335f9081526020919091526040902054925f198410610c99575b6101be935061104d565b828410610d04576001600160a01b03811615610cf1573315610cde576101be93610cc282610fa4565b60018060a01b0333165f526020528360405f2091039055610c8f565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b8284637dc7a0d960e11b5f523360045260245260445260645ffd5b3461010a575f36600319011261010a5760205f5160206112485f395f51905f5254604051908152f35b3461010a57604036600319011261010a57610d61610eae565b602435903315610cf1576001600160a01b0316908115610cde57610d8433610fa4565b825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b3461010a575f36600319011261010a576040515f5f5160206111c85f395f51905f5254610df381610f6c565b808452906001811690811561037c5750600114610e1a576101948361030681850382610eda565b5f5160206111c85f395f51905f525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b808210610e6a575090915081016020016103066102f6565b919260018160209254838588010152019101909291610e52565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361010a57565b602435906001600160a01b038216820361010a57565b90601f8019910116810190811067ffffffffffffffff8211176109fc57604052565b67ffffffffffffffff81116109fc57601f01601f191660200190565b929192610f2482610efc565b91610f326040519384610eda565b82948184528183011161010a578281602093845f960137010152565b9080601f8301121561010a57816020610f6993359101610f18565b90565b90600182811c92168015610f9a575b6020831014610f8657565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610f7b565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b0316801561103a575f5160206112285f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b6001600160a01b031690811561029f576001600160a01b0316918215610c1957815f525f5160206111e85f395f51905f5260205260405f20548181106110f257817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f5160206111e85f395f51905f5284520360405f2055845f525f5160206111e85f395f51905f52825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b5f5160206112285f395f51905f52546001600160a01b0316330361112b57565b63118cdaa760e01b5f523360045260245ffd5b60ff5f5160206112885f395f51905f525460401c161561115a57565b631afcd79f60e31b5f5260045ffd5b9061118d575080511561117e57602081519101fd5b63d6bda27560e01b5f5260045ffd5b815115806111be575b61119e575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561119656fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220c69af32d5587c93d07f8d812528a7785f454c12cee13006e0c45ff9953e5880a64736f6c634300081e0033","sourceMap":"436:1204:22:-:0;;;;;;;1171:4:26;1163:13;;436:1204:22;;;;;;1163:13:26;436:1204:22;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"60806040526004361015610011575f80fd5b5f3560e01c806306fdde0314610dc7578063095ea7b314610d4857806318160ddd14610d1f57806323b872dd14610c47578063313ce56714610c2c57806340c10f1914610b5b5780634cd88b76146106eb5780634f1ef286146104e557806352d1902d1461047f57806370a082311461043b578063715018a6146103d45780638da5cb5b146103a057806395d89b41146102b25780639dc29fac146101c9578063a9059cbb14610198578063ad3cb1cc14610155578063dd62ed3e1461010e5763f2fde38b146100df575f80fd5b3461010a57602036600319011261010a576101086100fb610eae565b61010361110b565b610fdc565b005b5f80fd5b3461010a57604036600319011261010a57610127610eae565b610138610132610ec4565b91610fa4565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461010a575f36600319011261010a57610194604051610176604082610eda565b60058152640352e302e360dc1b602082015260405191829182610e84565b0390f35b3461010a57604036600319011261010a576101be6101b4610eae565b602435903361104d565b602060405160018152f35b3461010a57604036600319011261010a576101e2610eae565b602435906101ee61110b565b6001600160a01b0316801561029f57805f525f5160206111e85f395f51905f5260205260405f2054828110610286576020835f947fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f5160206111e85f395f51905f528452036040862055805f5160206112485f395f51905f5254035f5160206112485f395f51905f5255604051908152a3005b9063391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b3461010a575f36600319011261010a576040515f5f5160206112085f395f51905f52546102de81610f6c565b808452906001811690811561037c5750600114610312575b6101948361030681850382610eda565b60405191829182610e84565b5f5160206112085f395f51905f525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610362575090915081016020016103066102f6565b91926001816020925483858801015201910190929161034a565b60ff191660208086019190915291151560051b8401909101915061030690506102f6565b3461010a575f36600319011261010a575f5160206112285f395f51905f52546040516001600160a01b039091168152602090f35b3461010a575f36600319011261010a576103ec61110b565b5f5160206112285f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461010a57602036600319011261010a576001600160a01b0361045c610eae565b165f525f5160206111e85f395f51905f52602052602060405f2054604051908152f35b3461010a575f36600319011261010a577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036104d65760206040515f5160206112685f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b604036600319011261010a576104f9610eae565b60243567ffffffffffffffff811161010a573660238201121561010a5761052a903690602481600401359101610f18565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163081149081156106c9575b506104d65761056c61110b565b6040516352d1902d60e01b81526001600160a01b0383169290602081600481875afa5f9181610695575b506105ae5783634c9c8ce360e01b5f5260045260245ffd5b805f5160206112685f395f51905f528592036106835750813b15610671575f5160206112685f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115610659575f8083602061010895519101845af43d15610651573d9161063583610efc565b926106436040519485610eda565b83523d5f602085013e611169565b606091611169565b50503461066257005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d6020116106c1575b816106b160209383610eda565b8101031261010a57519085610596565b3d91506106a4565b5f5160206112685f395f51905f52546001600160a01b0316141590508361055f565b3461010a57604036600319011261010a5760043567ffffffffffffffff811161010a5761071c903690600401610f4e565b60243567ffffffffffffffff811161010a5761073c903690600401610f4e565b5f5160206112885f395f51905f525460ff8160401c16159067ffffffffffffffff811680159081610b53575b6001149081610b49575b159081610b40575b50610b315767ffffffffffffffff1981166001175f5160206112885f395f51905f525581610b05575b506107ac61113e565b6107b461113e565b825167ffffffffffffffff81116109fc576107dc5f5160206111c85f395f51905f5254610f6c565b601f8111610a96575b506020601f8211600114610a1b57819293945f92610a10575b50508160011b915f199060031b1c1916175f5160206111c85f395f51905f52555b815167ffffffffffffffff81116109fc576108475f5160206112085f395f51905f5254610f6c565b601f811161098d575b50602092601f821160011461091457928192935f92610909575b50508160011b915f199060031b1c1916175f5160206112085f395f51905f52555b61089361113e565b61089b61113e565b6108a361113e565b6108ac33610fdc565b6108b257005b68ff0000000000000000195f5160206112885f395f51905f5254165f5160206112885f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b01519050838061086a565b601f198216935f5160206112085f395f51905f525f52805f20915f5b868110610975575083600195961061095d575b505050811b015f5160206112085f395f51905f525561088b565b01515f1960f88460031b161c19169055838080610943565b91926020600181928685015181550194019201610930565b5f5160206112085f395f51905f525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c810191602084106109f2575b601f0160051c01905b8181106109e75750610850565b5f81556001016109da565b90915081906109d1565b634e487b7160e01b5f52604160045260245ffd5b0151905084806107fe565b601f198216905f5160206111c85f395f51905f525f52805f20915f5b818110610a7e57509583600195969710610a66575b505050811b015f5160206111c85f395f51905f525561081f565b01515f1960f88460031b161c19169055848080610a4c565b9192602060018192868b015181550194019201610a37565b5f5160206111c85f395f51905f525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c81019160208410610afb575b601f0160051c01905b818110610af057506107e5565b5f8155600101610ae3565b9091508190610ada565b68ffffffffffffffffff191668010000000000000001175f5160206112885f395f51905f5255836107a3565b63f92ee8a960e01b5f5260045ffd5b9050158561077a565b303b159150610772565b839150610768565b3461010a57604036600319011261010a57610b74610eae565b60243590610b8061110b565b6001600160a01b0316908115610c19575f5160206112485f395f51905f525490808201809211610c055760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef915f935f5160206112485f395f51905f52558484525f5160206111e85f395f51905f52825260408420818154019055604051908152a3005b634e487b7160e01b5f52601160045260245ffd5b63ec442f0560e01b5f525f60045260245ffd5b3461010a575f36600319011261010a57602060405160128152f35b3461010a57606036600319011261010a57610c60610eae565b610c68610ec4565b60443590610c7583610fa4565b335f9081526020919091526040902054925f198410610c99575b6101be935061104d565b828410610d04576001600160a01b03811615610cf1573315610cde576101be93610cc282610fa4565b60018060a01b0333165f526020528360405f2091039055610c8f565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b8284637dc7a0d960e11b5f523360045260245260445260645ffd5b3461010a575f36600319011261010a5760205f5160206112485f395f51905f5254604051908152f35b3461010a57604036600319011261010a57610d61610eae565b602435903315610cf1576001600160a01b0316908115610cde57610d8433610fa4565b825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b3461010a575f36600319011261010a576040515f5f5160206111c85f395f51905f5254610df381610f6c565b808452906001811690811561037c5750600114610e1a576101948361030681850382610eda565b5f5160206111c85f395f51905f525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b808210610e6a575090915081016020016103066102f6565b919260018160209254838588010152019101909291610e52565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361010a57565b602435906001600160a01b038216820361010a57565b90601f8019910116810190811067ffffffffffffffff8211176109fc57604052565b67ffffffffffffffff81116109fc57601f01601f191660200190565b929192610f2482610efc565b91610f326040519384610eda565b82948184528183011161010a578281602093845f960137010152565b9080601f8301121561010a57816020610f6993359101610f18565b90565b90600182811c92168015610f9a575b6020831014610f8657565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610f7b565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b0316801561103a575f5160206112285f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b6001600160a01b031690811561029f576001600160a01b0316918215610c1957815f525f5160206111e85f395f51905f5260205260405f20548181106110f257817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f5160206111e85f395f51905f5284520360405f2055845f525f5160206111e85f395f51905f52825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b5f5160206112285f395f51905f52546001600160a01b0316330361112b57565b63118cdaa760e01b5f523360045260245ffd5b60ff5f5160206112885f395f51905f525460401c161561115a57565b631afcd79f60e31b5f5260045ffd5b9061118d575080511561117e57602081519101fd5b63d6bda27560e01b5f5260045ffd5b815115806111be575b61119e575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561119656fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220c69af32d5587c93d07f8d812528a7785f454c12cee13006e0c45ff9953e5880a64736f6c634300081e0033","sourceMap":"436:1204:22:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;436:1204:22;;;;2357:1:24;436:1204:22;;:::i;:::-;2303:62:24;;:::i;:::-;2357:1;:::i;:::-;436:1204:22;;;;;;;;;;;-1:-1:-1;;436:1204:22;;;;;;:::i;:::-;4771:20:27;436:1204:22;;:::i;:::-;4771:20:27;;:::i;:::-;:29;436:1204:22;;;;;;-1:-1:-1;436:1204:22;;;;;-1:-1:-1;436:1204:22;;;;;;;;;;;;;;-1:-1:-1;;436:1204:22;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;436:1204:22;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;436:1204:22;;;;4545:5:27;436:1204:22;;:::i;:::-;;;966:10:28;;4545:5:27;:::i;:::-;436:1204:22;;;;;;;;;;;;;-1:-1:-1;;436:1204:22;;;;;;:::i;:::-;;;2303:62:24;;;:::i;:::-;-1:-1:-1;;;;;436:1204:22;9233:21:27;;9229:89;;436:1204:22;;;-1:-1:-1;;;;;;;;;;;436:1204:22;;;;;;7513:19:27;;;7509:115;;436:1204:22;;;;8262:25:27;436:1204:22;;;;-1:-1:-1;;;;;;;;;;;436:1204:22;;;;;;;;-1:-1:-1;;;;;;;;;;;436:1204:22;;-1:-1:-1;;;;;;;;;;;436:1204:22;;;;;;8262:25:27;436:1204:22;7509:115:27;7559:50;;;;436:1204:22;7559:50:27;436:1204:22;;;;;;;;7559:50:27;9229:89;9277:30;;;436:1204:22;9277:30:27;436:1204:22;;;;;9277:30:27;436:1204:22;;;;;;-1:-1:-1;;436:1204:22;;;;;;;-1:-1:-1;;;;;;;;;;;436:1204:22;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;436:1204:22;;;;;;;-1:-1:-1;436:1204:22;;;;;;;-1:-1:-1;436:1204:22;;-1:-1:-1;436:1204:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;436:1204:22;;;;;;;;;;;;;;;;;;;;-1:-1:-1;436:1204:22;;-1:-1:-1;436:1204:22;;;;;;;;-1:-1:-1;;436:1204:22;;;;-1:-1:-1;;;;;;;;;;;436:1204:22;;;-1:-1:-1;;;;;436:1204:22;;;;;;;;;;;;;;-1:-1:-1;;436:1204:22;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;436:1204:22;;-1:-1:-1;;;;;;436:1204:22;;;;;;;-1:-1:-1;;;;;436:1204:22;3975:40:24;436:1204:22;;3975:40:24;436:1204:22;;;;;;;-1:-1:-1;;436:1204:22;;;;-1:-1:-1;;;;;436:1204:22;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;436:1204:22;;;;;;;;;;;;;;;;;;;-1:-1:-1;;436:1204:22;;;;5090:6:26;-1:-1:-1;;;;;436:1204:22;5081:4:26;5073:23;5069:145;;436:1204:22;;;-1:-1:-1;;;;;;;;;;;436:1204:22;;;5069:145:26;4844:29;;;436:1204:22;5174:29:26;436:1204:22;;5174:29:26;436:1204:22;;;-1:-1:-1;;436:1204:22;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4667:6:26;436:1204:22;4658:4:26;4650:23;;;:120;;;;436:1204:22;4633:251:26;;;2303:62:24;;:::i;:::-;436:1204:22;;-1:-1:-1;;;6131:52:26;;-1:-1:-1;;;;;436:1204:22;;;;;;;;;6131:52:26;;436:1204:22;;6131:52:26;;;436:1204:22;-1:-1:-1;6127:437:26;;1805:47:39;;;;436:1204:22;6493:60:26;436:1204:22;;;;6493:60:26;6127:437;6225:40;-1:-1:-1;;;;;;;;;;;6225:40:26;;;6221:120;;1748:29:39;;;:34;1744:119;;-1:-1:-1;;;;;;;;;;;436:1204:22;;-1:-1:-1;;;;;;436:1204:22;;;;;2407:36:39;-1:-1:-1;;2407:36:39;436:1204:22;;2458:15:39;:11;;436:1204:22;4065:25:45;;436:1204:22;4107:55:45;4065:25;;;;;;;436:1204:22;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;4107:55:45;:::i;436:1204:22:-;;;4107:55:45;:::i;2454:148:39:-;6163:9;;;6159:70;;436:1204:22;6159:70:39;6199:19;;;436:1204:22;6199:19:39;436:1204:22;;6199:19:39;1744:119;1805:47;;;436:1204:22;1805:47:39;436:1204:22;;;;1805:47:39;6221:120:26;6292:34;;;436:1204:22;6292:34:26;436:1204:22;;;;6292:34:26;6131:52;;;;436:1204:22;6131:52:26;;436:1204:22;6131:52:26;;;;;;436:1204:22;6131:52:26;;;:::i;:::-;;;436:1204:22;;;;;6131:52:26;;;;;;;-1:-1:-1;6131:52:26;;4650:120;-1:-1:-1;;;;;;;;;;;436:1204:22;-1:-1:-1;;;;;436:1204:22;4728:42:26;;;-1:-1:-1;4650:120:26;;;436:1204:22;;;;;;-1:-1:-1;;436:1204:22;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;436:1204:22;;;;;;4301:16:25;436:1204:22;;;;4724:16:25;;:34;;;;436:1204:22;4803:1:25;4788:16;:50;;;;436:1204:22;4853:13:25;:30;;;;436:1204:22;4849:91:25;;;-1:-1:-1;;436:1204:22;;4803:1:25;436:1204:22;-1:-1:-1;;;;;;;;;;;436:1204:22;;4977:67:25;;436:1204:22;6891:76:25;;;:::i;:::-;;;:::i;:::-;436:1204:22;;;;;;;;-1:-1:-1;;;;;;;;;;;436:1204:22;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:25;436:1204:22;11833:17:27;;;436:1204:22;2581:7:27;436:1204:22;;;;;-1:-1:-1;;;;;;;;;;;436:1204:22;;;;;;;;;;-1:-1:-1;;;;;;;;;;;436:1204:22;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:25;436:1204:22;11833:17:27;;;436:1204:22;2581:7:27;436:1204:22;;;;;-1:-1:-1;;;;;;;;;;;436:1204:22;;6891:76:25;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;6959:1;830:10:22;6959:1:25;:::i;:::-;5064:101;;436:1204:22;5064:101:25;436:1204:22;;-1:-1:-1;;;;;;;;;;;436:1204:22;;-1:-1:-1;;;;;;;;;;;436:1204:22;5140:14:25;436:1204:22;;;4803:1:25;436:1204:22;;5140:14:25;436:1204:22;;;;;-1:-1:-1;436:1204:22;;;;;;;;;;-1:-1:-1;;;;;;;;;;;436:1204:22;;;;;;;;;;;;;;;4803:1:25;436:1204:22;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;436:1204:22;;;;;;11833:17:27;;436:1204:22;;2581:7:27;436:1204:22;;;;;;;;;;;;;;;;4803:1:25;436:1204:22;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;436:1204:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:25;436:1204:22;;;;;;-1:-1:-1;436:1204:22;;;;;;;;;;;;;;;;;;;;-1:-1:-1;436:1204:22;;;;;;;;;;-1:-1:-1;;;;;;;;;;;436:1204:22;;;;;;;;;;;;;;;;4803:1:25;436:1204:22;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;436:1204:22;;;;;;11833:17:27;;436:1204:22;;2581:7:27;436:1204:22;;;;;;;;;;;;;;;;4803:1:25;436:1204:22;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;436:1204:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:25;436:1204:22;;;;;;-1:-1:-1;436:1204:22;;;;4977:67:25;-1:-1:-1;;436:1204:22;;;-1:-1:-1;;;;;;;;;;;436:1204:22;4977:67:25;;;4849:91;4906:23;;;436:1204:22;4906:23:25;436:1204:22;;4906:23:25;4853:30;4870:13;;;4853:30;;;4788:50;4816:4;4808:25;:30;;-1:-1:-1;4788:50:25;;4724:34;;;-1:-1:-1;4724:34:25;;436:1204:22;;;;;;-1:-1:-1;;436:1204:22;;;;;;:::i;:::-;;;2303:62:24;;;:::i;:::-;-1:-1:-1;;;;;436:1204:22;;8707:21:27;;8703:91;;-1:-1:-1;;;;;;;;;;;436:1204:22;;;;;;;;;;;8262:25:27;436:1204:22;;;-1:-1:-1;;;;;;;;;;;436:1204:22;;;;-1:-1:-1;;;;;;;;;;;436:1204:22;;;;;;;;;;;;;;;;8262:25:27;436:1204:22;;;;;;;;;;;;;8703:91:27;8751:32;;;436:1204:22;8751:32:27;436:1204:22;;;;;8751:32:27;436:1204:22;;;;;;-1:-1:-1;;436:1204:22;;;;;;;3808:2:27;436:1204:22;;;;;;;;;-1:-1:-1;;436:1204:22;;;;;;:::i;:::-;;;:::i;:::-;;;4771:20:27;;;;:::i;:::-;966:10:28;-1:-1:-1;436:1204:22;;;;;;;;;;;;;-1:-1:-1;;11814:36:27;;11810:309;;436:1204:22;6102:5:27;;;;:::i;11810:309::-;11870:24;;;11866:130;;-1:-1:-1;;;;;436:1204:22;;11045:19:27;11041:89;;966:10:28;11143:21:27;11139:90;;6102:5;11238:20;;;;:::i;:::-;436:1204:22;;;;;966:10:28;436:1204:22;-1:-1:-1;436:1204:22;;;;;-1:-1:-1;436:1204:22;;;;;11810:309:27;;11139:90;11187:31;;;436:1204:22;11187:31:27;436:1204:22;;;;;11187:31:27;11041:89;11087:32;;;436:1204:22;11087:32:27;436:1204:22;;;;;11087:32:27;11866:130;11921:60;;;;;436:1204:22;11921:60:27;966:10:28;436:1204:22;;;;;;;;11921:60:27;436:1204:22;;;;;;-1:-1:-1;;436:1204:22;;;;;-1:-1:-1;;;;;;;;;;;436:1204:22;;;;;;;;;;;;;-1:-1:-1;;436:1204:22;;;;;;:::i;:::-;;;966:10:28;;11045:19:27;11041:89;;-1:-1:-1;;;;;436:1204:22;;11143:21:27;;11139:90;;11238:20;966:10:28;11238:20:27;:::i;:::-;436:1204:22;-1:-1:-1;436:1204:22;;;;;-1:-1:-1;436:1204:22;;;;;;;11319:31:27;436:1204:22;966:10:28;11319:31:27;;436:1204:22;;;;;;;;;;;;;-1:-1:-1;;436:1204:22;;;;;;;-1:-1:-1;;;;;;;;;;;436:1204:22;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;436:1204:22;;;;;;;-1:-1:-1;436:1204:22;;;;;;;-1:-1:-1;436:1204:22;;-1:-1:-1;436:1204:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;436:1204:22;;;;:::o;:::-;;;;-1:-1:-1;;;;;436:1204:22;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;436:1204:22;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;436:1204:22;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;436:1204:22;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;436:1204:22;;;;;4771:13:27;436:1204:22;;;;;;:::o;3405:215:24:-;-1:-1:-1;;;;;436:1204:22;3489:22:24;;3485:91;;-1:-1:-1;;;;;;;;;;;436:1204:22;;-1:-1:-1;;;;;;436:1204:22;;;;;;;-1:-1:-1;;;;;436:1204:22;3975:40:24;-1:-1:-1;;3975:40:24;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;436:1204:22;;3509:1:24;3534:31;6509:300:27;-1:-1:-1;;;;;436:1204:22;;6592:18:27;;6588:86;;-1:-1:-1;;;;;436:1204:22;;6687:16:27;;6683:86;;436:1204:22;6608:1:27;436:1204:22;-1:-1:-1;;;;;;;;;;;436:1204:22;;;6608:1:27;436:1204:22;;7513:19:27;;;7509:115;;436:1204:22;8262:25:27;436:1204:22;;;;6608:1:27;436:1204:22;-1:-1:-1;;;;;;;;;;;436:1204:22;;;;6608:1:27;436:1204:22;;;6608:1:27;436:1204:22;-1:-1:-1;;;;;;;;;;;436:1204:22;;;6608:1:27;436:1204:22;;;;;;;;;;;;8262:25:27;6509:300::o;7509:115::-;7559:50;;;;6608:1;7559:50;;436:1204:22;;;;;;6608:1:27;7559:50;2658:162:24;-1:-1:-1;;;;;;;;;;;436:1204:22;-1:-1:-1;;;;;436:1204:22;966:10:28;2717:23:24;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:24;966:10:28;2763:40:24;436:1204:22;;-1:-1:-1;2763:40:24;7082:141:25;436:1204:22;-1:-1:-1;;;;;;;;;;;436:1204:22;;;;7148:18:25;7144:73;;7082:141::o;7144:73::-;7189:17;;;-1:-1:-1;7189:17:25;;-1:-1:-1;7189:17:25;4437:582:45;;4609:8;;-1:-1:-1;436:1204:22;;5690:21:45;:17;;5815:105;;;;;;5686:301;5957:19;;;5710:1;5957:19;;5710:1;5957:19;4605:408;436:1204:22;;4857:22:45;:49;;;4605:408;4853:119;;4985:17;;:::o;4853:119::-;-1:-1:-1;;;4878:1:45;4933:24;;;-1:-1:-1;;;;;436:1204:22;;;;4933:24:45;436:1204:22;;;4933:24:45;4857:49;4883:18;;;:23;4857:49;","linkReferences":{},"immutableReferences":{"10672":[{"start":1169,"length":32},{"start":1332,"length":32}]}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address,uint256)":"9dc29fac","decimals()":"313ce567","initialize(string,string)":"4cd88b76","mint(address,uint256)":"40c10f19","name()":"06fdde03","owner()":"8da5cb5b","proxiableUUID()":"52d1902d","renounceOwnership()":"715018a6","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b","upgradeToAndCall(address,bytes)":"4f1ef286"}}}},"contracts/ytLp/tokens/YTLPToken.sol":{"YTLPToken":{"abi":[{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isMinter","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinter","inputs":[{"name":"_minter","type":"address","internalType":"address"},{"name":"_isActive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"MinterSet","inputs":[{"name":"minter","type":"address","indexed":true,"internalType":"address"},{"name":"isActive","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidMinter","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotMinter","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMinter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotMinter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"}],\"name\":\"MinterSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":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\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"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\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isMinter\",\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isActive\",\"type\":\"bool\"}],\"name\":\"setMinter\",\"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\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"\\u53ea\\u6709\\u6388\\u6743\\u7684Minter\\uff08YTPoolManager\\uff09\\u53ef\\u4ee5\\u94f8\\u9020\\u548c\\u9500\\u6bc1\\uff0cUUPS\\u53ef\\u5347\\u7ea7\\u5408\\u7ea6\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"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.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"burn(address,uint256)\":{\"params\":{\"_amount\":\"\\u9500\\u6bc1\\u6570\\u91cf\",\"_from\":\"\\u9500\\u6bc1\\u5730\\u5740\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"mint(address,uint256)\":{\"params\":{\"_amount\":\"\\u94f8\\u9020\\u6570\\u91cf\",\"_to\":\"\\u63a5\\u6536\\u5730\\u5740\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setMinter(address,bool)\":{\"params\":{\"_isActive\":\"\\u662f\\u5426\\u6fc0\\u6d3b\",\"_minter\":\"\\u94f8\\u9020\\u8005\\u5730\\u5740\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"__gap\":{\"details\":\"\\u9884\\u7559\\u5b58\\u50a8\\u7a7a\\u95f4\\uff0c\\u7528\\u4e8e\\u672a\\u6765\\u5347\\u7ea7\\u65f6\\u6dfb\\u52a0\\u65b0\\u7684\\u72b6\\u6001\\u53d8\\u91cf 50\\u4e2aslot = 50 * 32 bytes = 1600 bytes\"}},\"title\":\"YTLPToken\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"burn(address,uint256)\":{\"notice\":\"\\u9500\\u6bc1ytLP\\u4ee3\\u5e01\"},\"initialize()\":{\"notice\":\"\\u521d\\u59cb\\u5316\\u5408\\u7ea6\"},\"mint(address,uint256)\":{\"notice\":\"\\u94f8\\u9020ytLP\\u4ee3\\u5e01\"},\"setMinter(address,bool)\":{\"notice\":\"\\u8bbe\\u7f6e\\u94f8\\u9020\\u6743\\u9650\"}},\"notice\":\"LP\\u4ee3\\u5e01\\uff0c\\u4ee3\\u8868\\u7528\\u6237\\u5728\\u6c60\\u5b50\\u4e2d\\u7684\\u4efd\\u989d\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ytLp/tokens/YTLPToken.sol\":\"YTLPToken\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"contracts/ytLp/tokens/YTLPToken.sol\":{\"keccak256\":\"0x31fc3497d406457060dc7ad71f097167a0ed7c6b37dce4f5137345d62bde25ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://67bfa1ac66f7c4dedabbb7c524b02d1ce44be72e30de3ac63db9e1ef98cee851\",\"dweb:/ipfs/Qmav6FNywf1ksHKoQxHuNVz2M73xziekD6oXRoS6XrJ5Dj\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x574a7451e42724f7de29e2855c392a8a5020acd695169466a18459467d719d63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bc189f63b639ee173dd7b6fecc39baf7113bf161776aea22b34c57fdd1872ec\",\"dweb:/ipfs/QmZAf2VtjDLRULqjJkde6LNsxAg12tUqpPqgUQQZbAjgtZ\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xfcd09c2aa8cc3f93e12545454359f901965db312bc03833daf84de0c03e05022\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07701188648d2ab83dab1037808298585264559bddf243bd8929037adcb984b0\",\"dweb:/ipfs/QmavmG5REdHCAWsZ8Cag26BCxAq27DRKGxr3uBg5ZYxQ51\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60a08060405234602957306080526113d1908161002e8239608051818181610a120152610ae20152f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806306fdde0314610f0f578063095ea7b314610e9057806318160ddd14610e6757806323b872dd14610d8f578063313ce56714610d7457806340c10f1914610c975780634f1ef28614610a6657806352d1902d14610a0057806370a08231146109bc578063715018a6146109555780638129fc1c146104d35780638da5cb5b1461049f57806395d89b41146103b15780639dc29fac146102ad578063a9059cbb1461027c578063aa271e1a14610240578063ad3cb1cc146101fd578063cf456ae71461016b578063dd62ed3e146101245763f2fde38b146100f5575f80fd5b346101205760203660031901126101205761011e610111610ff6565b6101196111ff565b6110d0565b005b5f80fd5b346101205760403660031901126101205761013d610ff6565b61014e61014861100c565b91611060565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461012057604036600319011261012057610184610ff6565b602435908115158092036101205761019a6111ff565b6001600160a01b03169081156101ee5760207f583b0aa0e528532caf4b907c11d7a8158a122fe2a6fb80cd9b09776ebea8d92d91835f525f825260405f2060ff1981541660ff8316179055604051908152a2005b63d8d5894f60e01b5f5260045ffd5b34610120575f3660031901126101205761023c60405161021e604082611022565b60058152640352e302e360dc1b602082015260405191829182610fcc565b0390f35b34610120576020366003190112610120576001600160a01b03610261610ff6565b165f525f602052602060ff60405f2054166040519015158152f35b34610120576040366003190112610120576102a2610298610ff6565b6024359033611141565b602060405160018152f35b34610120576040366003190112610120576102c6610ff6565b60243590335f525f60205260ff60405f205416156103a2576001600160a01b0316801561038f57805f525f5160206112dc5f395f51905f5260205260405f2054828110610376576020835f947fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f5160206112dc5f395f51905f528452036040862055805f51602061133c5f395f51905f5254035f51602061133c5f395f51905f5255604051908152a3005b9063391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b633e34a41b60e21b5f5260045ffd5b34610120575f366003190112610120576040515f5f5160206112fc5f395f51905f52546103dd81611098565b808452906001811690811561047b5750600114610411575b61023c8361040581850382611022565b60405191829182610fcc565b5f5160206112fc5f395f51905f525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610461575090915081016020016104056103f5565b919260018160209254838588010152019101909291610449565b60ff191660208086019190915291151560051b8401909101915061040590506103f5565b34610120575f366003190112610120575f51602061131c5f395f51905f52546040516001600160a01b039091168152602090f35b34610120575f366003190112610120575f51602061137c5f395f51905f525460ff8160401c16159067ffffffffffffffff81168015908161094d575b6001149081610943575b15908161093a575b5061092b5767ffffffffffffffff1981166001175f51602061137c5f395f51905f5255816108ff575b5060409081519161055b8184611022565b60158352742caa102634b8bab4b234ba3c90283937bb34b232b960591b602084015280519161058a8284611022565b6004835263079744c560e41b60208401526105a3611232565b6105ab611232565b835167ffffffffffffffff81116107f6576105d35f5160206112bc5f395f51905f5254611098565b601f8111610890575b50602094601f8211600114610815579481929394955f9261080a575b50508160011b915f199060031b1c1916175f5160206112bc5f395f51905f52555b825167ffffffffffffffff81116107f6576106415f5160206112fc5f395f51905f5254611098565b601f8111610787575b506020601f821160011461070c57819293945f92610701575b50508160011b915f199060031b1c1916175f5160206112fc5f395f51905f52555b61068c611232565b610694611232565b61069d336110d0565b6106a5611232565b6106ab57005b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29168ff0000000000000000195f51602061137c5f395f51905f5254165f51602061137c5f395f51905f52555160018152a1005b015190508480610663565b601f198216905f5160206112fc5f395f51905f525f52805f20915f5b81811061076f57509583600195969710610757575b505050811b015f5160206112fc5f395f51905f5255610684565b01515f1960f88460031b161c1916905584808061073d565b9192602060018192868b015181550194019201610728565b5f5160206112fc5f395f51905f525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c810191602084106107ec575b601f0160051c01905b8181106107e1575061064a565b5f81556001016107d4565b90915081906107cb565b634e487b7160e01b5f52604160045260245ffd5b0151905085806105f8565b601f198216955f5160206112bc5f395f51905f525f52805f20915f5b88811061087857508360019596979810610860575b505050811b015f5160206112bc5f395f51905f5255610619565b01515f1960f88460031b161c19169055858080610846565b91926020600181928685015181550194019201610831565b5f5160206112bc5f395f51905f525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c810191602084106108f5575b601f0160051c01905b8181106108ea57506105dc565b5f81556001016108dd565b90915081906108d4565b68ffffffffffffffffff191668010000000000000001175f51602061137c5f395f51905f52558161054a565b63f92ee8a960e01b5f5260045ffd5b90501583610521565b303b159150610519565b83915061050f565b34610120575f3660031901126101205761096d6111ff565b5f51602061131c5f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610120576020366003190112610120576001600160a01b036109dd610ff6565b165f525f5160206112dc5f395f51905f52602052602060405f2054604051908152f35b34610120575f366003190112610120577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610a575760206040515f51602061135c5f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b604036600319011261012057610a7a610ff6565b6024359067ffffffffffffffff8211610120573660238301121561012057816004013590610aa782611044565b91610ab56040519384611022565b8083526020830193366024838301011161012057815f926024602093018737840101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115610c75575b50610a5757610b1a6111ff565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa5f9181610c41575b50610b5c5784634c9c8ce360e01b5f5260045260245ffd5b805f51602061135c5f395f51905f52869203610c2f5750823b15610c1d575f51602061135c5f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2825115610c04575f809161011e945190845af43d15610bfc573d91610be083611044565b92610bee6040519485611022565b83523d5f602085013e61125d565b60609161125d565b50505034610c0e57005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d602011610c6d575b81610c5d60209383611022565b8101031261012057519086610b44565b3d9150610c50565b5f51602061135c5f395f51905f52546001600160a01b03161415905084610b0d565b3461012057604036600319011261012057610cb0610ff6565b60243590335f525f60205260ff60405f205416156103a2576001600160a01b0316908115610d61575f51602061133c5f395f51905f525490808201809211610d4d5760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef915f935f51602061133c5f395f51905f52558484525f5160206112dc5f395f51905f52825260408420818154019055604051908152a3005b634e487b7160e01b5f52601160045260245ffd5b63ec442f0560e01b5f525f60045260245ffd5b34610120575f36600319011261012057602060405160128152f35b3461012057606036600319011261012057610da8610ff6565b610db061100c565b60443590610dbd83611060565b335f9081526020919091526040902054925f198410610de1575b6102a29350611141565b828410610e4c576001600160a01b03811615610e39573315610e26576102a293610e0a82611060565b60018060a01b0333165f526020528360405f2091039055610dd7565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b8284637dc7a0d960e11b5f523360045260245260445260645ffd5b34610120575f3660031901126101205760205f51602061133c5f395f51905f5254604051908152f35b3461012057604036600319011261012057610ea9610ff6565b602435903315610e39576001600160a01b0316908115610e2657610ecc33611060565b825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b34610120575f366003190112610120576040515f5f5160206112bc5f395f51905f5254610f3b81611098565b808452906001811690811561047b5750600114610f625761023c8361040581850382611022565b5f5160206112bc5f395f51905f525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b808210610fb2575090915081016020016104056103f5565b919260018160209254838588010152019101909291610f9a565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361012057565b602435906001600160a01b038216820361012057565b90601f8019910116810190811067ffffffffffffffff8211176107f657604052565b67ffffffffffffffff81116107f657601f01601f191660200190565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b90600182811c921680156110c6575b60208310146110b257565b634e487b7160e01b5f52602260045260245ffd5b91607f16916110a7565b6001600160a01b0316801561112e575f51602061131c5f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b6001600160a01b031690811561038f576001600160a01b0316918215610d6157815f525f5160206112dc5f395f51905f5260205260405f20548181106111e657817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f5160206112dc5f395f51905f5284520360405f2055845f525f5160206112dc5f395f51905f52825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b5f51602061131c5f395f51905f52546001600160a01b0316330361121f57565b63118cdaa760e01b5f523360045260245ffd5b60ff5f51602061137c5f395f51905f525460401c161561124e57565b631afcd79f60e31b5f5260045ffd5b90611281575080511561127257602081519101fd5b63d6bda27560e01b5f5260045ffd5b815115806112b2575b611292575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561128a56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122037d72cee9e153db2865a60c68ed70fd23d37b806e531c72ddd20ea4b961bb63564736f6c634300081e0033","sourceMap":"543:1799:23:-:0;;;;;;;1171:4:26;1163:13;;543:1799:23;;;;;;1163:13:26;543:1799:23;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"60806040526004361015610011575f80fd5b5f3560e01c806306fdde0314610f0f578063095ea7b314610e9057806318160ddd14610e6757806323b872dd14610d8f578063313ce56714610d7457806340c10f1914610c975780634f1ef28614610a6657806352d1902d14610a0057806370a08231146109bc578063715018a6146109555780638129fc1c146104d35780638da5cb5b1461049f57806395d89b41146103b15780639dc29fac146102ad578063a9059cbb1461027c578063aa271e1a14610240578063ad3cb1cc146101fd578063cf456ae71461016b578063dd62ed3e146101245763f2fde38b146100f5575f80fd5b346101205760203660031901126101205761011e610111610ff6565b6101196111ff565b6110d0565b005b5f80fd5b346101205760403660031901126101205761013d610ff6565b61014e61014861100c565b91611060565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461012057604036600319011261012057610184610ff6565b602435908115158092036101205761019a6111ff565b6001600160a01b03169081156101ee5760207f583b0aa0e528532caf4b907c11d7a8158a122fe2a6fb80cd9b09776ebea8d92d91835f525f825260405f2060ff1981541660ff8316179055604051908152a2005b63d8d5894f60e01b5f5260045ffd5b34610120575f3660031901126101205761023c60405161021e604082611022565b60058152640352e302e360dc1b602082015260405191829182610fcc565b0390f35b34610120576020366003190112610120576001600160a01b03610261610ff6565b165f525f602052602060ff60405f2054166040519015158152f35b34610120576040366003190112610120576102a2610298610ff6565b6024359033611141565b602060405160018152f35b34610120576040366003190112610120576102c6610ff6565b60243590335f525f60205260ff60405f205416156103a2576001600160a01b0316801561038f57805f525f5160206112dc5f395f51905f5260205260405f2054828110610376576020835f947fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f5160206112dc5f395f51905f528452036040862055805f51602061133c5f395f51905f5254035f51602061133c5f395f51905f5255604051908152a3005b9063391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b633e34a41b60e21b5f5260045ffd5b34610120575f366003190112610120576040515f5f5160206112fc5f395f51905f52546103dd81611098565b808452906001811690811561047b5750600114610411575b61023c8361040581850382611022565b60405191829182610fcc565b5f5160206112fc5f395f51905f525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610461575090915081016020016104056103f5565b919260018160209254838588010152019101909291610449565b60ff191660208086019190915291151560051b8401909101915061040590506103f5565b34610120575f366003190112610120575f51602061131c5f395f51905f52546040516001600160a01b039091168152602090f35b34610120575f366003190112610120575f51602061137c5f395f51905f525460ff8160401c16159067ffffffffffffffff81168015908161094d575b6001149081610943575b15908161093a575b5061092b5767ffffffffffffffff1981166001175f51602061137c5f395f51905f5255816108ff575b5060409081519161055b8184611022565b60158352742caa102634b8bab4b234ba3c90283937bb34b232b960591b602084015280519161058a8284611022565b6004835263079744c560e41b60208401526105a3611232565b6105ab611232565b835167ffffffffffffffff81116107f6576105d35f5160206112bc5f395f51905f5254611098565b601f8111610890575b50602094601f8211600114610815579481929394955f9261080a575b50508160011b915f199060031b1c1916175f5160206112bc5f395f51905f52555b825167ffffffffffffffff81116107f6576106415f5160206112fc5f395f51905f5254611098565b601f8111610787575b506020601f821160011461070c57819293945f92610701575b50508160011b915f199060031b1c1916175f5160206112fc5f395f51905f52555b61068c611232565b610694611232565b61069d336110d0565b6106a5611232565b6106ab57005b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29168ff0000000000000000195f51602061137c5f395f51905f5254165f51602061137c5f395f51905f52555160018152a1005b015190508480610663565b601f198216905f5160206112fc5f395f51905f525f52805f20915f5b81811061076f57509583600195969710610757575b505050811b015f5160206112fc5f395f51905f5255610684565b01515f1960f88460031b161c1916905584808061073d565b9192602060018192868b015181550194019201610728565b5f5160206112fc5f395f51905f525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c810191602084106107ec575b601f0160051c01905b8181106107e1575061064a565b5f81556001016107d4565b90915081906107cb565b634e487b7160e01b5f52604160045260245ffd5b0151905085806105f8565b601f198216955f5160206112bc5f395f51905f525f52805f20915f5b88811061087857508360019596979810610860575b505050811b015f5160206112bc5f395f51905f5255610619565b01515f1960f88460031b161c19169055858080610846565b91926020600181928685015181550194019201610831565b5f5160206112bc5f395f51905f525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c810191602084106108f5575b601f0160051c01905b8181106108ea57506105dc565b5f81556001016108dd565b90915081906108d4565b68ffffffffffffffffff191668010000000000000001175f51602061137c5f395f51905f52558161054a565b63f92ee8a960e01b5f5260045ffd5b90501583610521565b303b159150610519565b83915061050f565b34610120575f3660031901126101205761096d6111ff565b5f51602061131c5f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610120576020366003190112610120576001600160a01b036109dd610ff6565b165f525f5160206112dc5f395f51905f52602052602060405f2054604051908152f35b34610120575f366003190112610120577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610a575760206040515f51602061135c5f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b604036600319011261012057610a7a610ff6565b6024359067ffffffffffffffff8211610120573660238301121561012057816004013590610aa782611044565b91610ab56040519384611022565b8083526020830193366024838301011161012057815f926024602093018737840101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115610c75575b50610a5757610b1a6111ff565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa5f9181610c41575b50610b5c5784634c9c8ce360e01b5f5260045260245ffd5b805f51602061135c5f395f51905f52869203610c2f5750823b15610c1d575f51602061135c5f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2825115610c04575f809161011e945190845af43d15610bfc573d91610be083611044565b92610bee6040519485611022565b83523d5f602085013e61125d565b60609161125d565b50505034610c0e57005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d602011610c6d575b81610c5d60209383611022565b8101031261012057519086610b44565b3d9150610c50565b5f51602061135c5f395f51905f52546001600160a01b03161415905084610b0d565b3461012057604036600319011261012057610cb0610ff6565b60243590335f525f60205260ff60405f205416156103a2576001600160a01b0316908115610d61575f51602061133c5f395f51905f525490808201809211610d4d5760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef915f935f51602061133c5f395f51905f52558484525f5160206112dc5f395f51905f52825260408420818154019055604051908152a3005b634e487b7160e01b5f52601160045260245ffd5b63ec442f0560e01b5f525f60045260245ffd5b34610120575f36600319011261012057602060405160128152f35b3461012057606036600319011261012057610da8610ff6565b610db061100c565b60443590610dbd83611060565b335f9081526020919091526040902054925f198410610de1575b6102a29350611141565b828410610e4c576001600160a01b03811615610e39573315610e26576102a293610e0a82611060565b60018060a01b0333165f526020528360405f2091039055610dd7565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b8284637dc7a0d960e11b5f523360045260245260445260645ffd5b34610120575f3660031901126101205760205f51602061133c5f395f51905f5254604051908152f35b3461012057604036600319011261012057610ea9610ff6565b602435903315610e39576001600160a01b0316908115610e2657610ecc33611060565b825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b34610120575f366003190112610120576040515f5f5160206112bc5f395f51905f5254610f3b81611098565b808452906001811690811561047b5750600114610f625761023c8361040581850382611022565b5f5160206112bc5f395f51905f525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b808210610fb2575090915081016020016104056103f5565b919260018160209254838588010152019101909291610f9a565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361012057565b602435906001600160a01b038216820361012057565b90601f8019910116810190811067ffffffffffffffff8211176107f657604052565b67ffffffffffffffff81116107f657601f01601f191660200190565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b90600182811c921680156110c6575b60208310146110b257565b634e487b7160e01b5f52602260045260245ffd5b91607f16916110a7565b6001600160a01b0316801561112e575f51602061131c5f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b6001600160a01b031690811561038f576001600160a01b0316918215610d6157815f525f5160206112dc5f395f51905f5260205260405f20548181106111e657817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f5160206112dc5f395f51905f5284520360405f2055845f525f5160206112dc5f395f51905f52825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b5f51602061131c5f395f51905f52546001600160a01b0316330361121f57565b63118cdaa760e01b5f523360045260245ffd5b60ff5f51602061137c5f395f51905f525460401c161561124e57565b631afcd79f60e31b5f5260045ffd5b90611281575080511561127257602081519101fd5b63d6bda27560e01b5f5260045ffd5b815115806112b2575b611292575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561128a56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122037d72cee9e153db2865a60c68ed70fd23d37b806e531c72ddd20ea4b961bb63564736f6c634300081e0033","sourceMap":"543:1799:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;543:1799:23;;;;2357:1:24;543:1799:23;;:::i;:::-;2303:62:24;;:::i;:::-;2357:1;:::i;:::-;543:1799:23;;;;;;;;;;;-1:-1:-1;;543:1799:23;;;;;;:::i;:::-;4771:20:27;543:1799:23;;:::i;:::-;4771:20:27;;:::i;:::-;:29;543:1799:23;;;;;;-1:-1:-1;543:1799:23;;;;;-1:-1:-1;543:1799:23;;;;;;;;;;;;;;-1:-1:-1;;543:1799:23;;;;;;:::i;:::-;;;;;;;;;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;543:1799:23;;1574:21;;1570:49;;543:1799;1673:29;543:1799;;;;;;;;;;;;;;;;;;;;;;;;;;1673:29;543:1799;1570:49;1604:15;;;543:1799;1604:15;543:1799;;1604:15;543:1799;;;;;;-1:-1:-1;;543:1799:23;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;543:1799:23;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;543:1799:23;;;;-1:-1:-1;;;;;543:1799:23;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;543:1799:23;;;;4545:5:27;543:1799:23;;:::i;:::-;;;966:10:28;;4545:5:27;:::i;:::-;543:1799:23;;;;;;;;;;;;;-1:-1:-1;;543:1799:23;;;;;;:::i;:::-;;;1305:10;;543:1799;;;;;;;;;;;1295:21;1291:45;;-1:-1:-1;;;;;543:1799:23;9233:21:27;;9229:89;;543:1799:23;;;-1:-1:-1;;;;;;;;;;;543:1799:23;;;;;;7513:19:27;;;7509:115;;543:1799:23;;;;8262:25:27;543:1799:23;;;;-1:-1:-1;;;;;;;;;;;543:1799:23;;;;;;;;-1:-1:-1;;;;;;;;;;;543:1799:23;;-1:-1:-1;;;;;;;;;;;543:1799:23;;;;;;8262:25:27;543:1799:23;7509:115:27;7559:50;;;;543:1799:23;7559:50:27;543:1799:23;;;;;;;;7559:50:27;9229:89;9277:30;;;543:1799:23;9277:30:27;543:1799:23;;;;;9277:30:27;1291:45:23;1325:11;;;543:1799;1325:11;543:1799;;1325:11;543:1799;;;;;;-1:-1:-1;;543:1799:23;;;;;;;-1:-1:-1;;;;;;;;;;;543:1799:23;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;543:1799:23;;;;;;;-1:-1:-1;543:1799:23;;;;;;;-1:-1:-1;543:1799:23;;-1:-1:-1;543:1799:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;543:1799:23;;;;;;;;;;;;;;;;;;;;-1:-1:-1;543:1799:23;;-1:-1:-1;543:1799:23;;;;;;;;-1:-1:-1;;543:1799:23;;;;-1:-1:-1;;;;;;;;;;;543:1799:23;;;-1:-1:-1;;;;;543:1799:23;;;;;;;;;;;;;;-1:-1:-1;;543:1799:23;;;;-1:-1:-1;;;;;;;;;;;543:1799:23;;;;;;4301:16:25;543:1799:23;;;;4724:16:25;;:34;;;;543:1799:23;4803:1:25;4788:16;:50;;;;543:1799:23;4853:13:25;:30;;;;543:1799:23;4849:91:25;;;-1:-1:-1;;543:1799:23;;4803:1:25;543:1799:23;-1:-1:-1;;;;;;;;;;;543:1799:23;;4977:67:25;;543:1799:23;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;543:1799:23;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;543:1799:23;;;;6891:76:25;;:::i;:::-;;;:::i;:::-;543:1799:23;;;;;;;;-1:-1:-1;;;;;;;;;;;543:1799:23;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:25;543:1799:23;11833:17:27;;;543:1799:23;2581:7:27;543:1799:23;;;;;-1:-1:-1;;;;;;;;;;;543:1799:23;;;;;;;;;;-1:-1:-1;;;;;;;;;;;543:1799:23;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:25;543:1799:23;11833:17:27;;;543:1799:23;2581:7:27;543:1799:23;;;;;-1:-1:-1;;;;;;;;;;;543:1799:23;;6891:76:25;;:::i;:::-;;;:::i;:::-;6959:1;982:10:23;6959:1:25;:::i;:::-;6891:76;;:::i;:::-;5064:101;;543:1799:23;5064:101:25;543:1799:23;5140:14:25;543:1799:23;;;-1:-1:-1;;;;;;;;;;;543:1799:23;;-1:-1:-1;;;;;;;;;;;543:1799:23;;4803:1:25;543:1799:23;;5140:14:25;543:1799:23;;;;;-1:-1:-1;543:1799:23;;;;;;;;;;-1:-1:-1;;;;;;;;;;;543:1799:23;;;;;;;;;;;;;;;;4803:1:25;543:1799:23;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;543:1799:23;;;;;;11833:17:27;;543:1799:23;;2581:7:27;543:1799:23;;;;;;;;;;;;;;;;4803:1:25;543:1799:23;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;543:1799:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:25;543:1799:23;;;;;;-1:-1:-1;543:1799:23;;;;;;;;;;;;;;;;;;;;-1:-1:-1;543:1799:23;;;;;;;;;;-1:-1:-1;;;;;;;;;;;543:1799:23;;;;;;;;;;;;;;;4803:1:25;543:1799:23;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;543:1799:23;;;;;;11833:17:27;;543:1799:23;;2581:7:27;543:1799:23;;;;;;;;;;;;;;;;4803:1:25;543:1799:23;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;543:1799:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:25;543:1799:23;;;;;;-1:-1:-1;543:1799:23;;;;4977:67:25;-1:-1:-1;;543:1799:23;;;-1:-1:-1;;;;;;;;;;;543:1799:23;4977:67:25;;;4849:91;4906:23;;;543:1799:23;4906:23:25;543:1799:23;;4906:23:25;4853:30;4870:13;;;4853:30;;;4788:50;4816:4;4808:25;:30;;-1:-1:-1;4788:50:25;;4724:34;;;-1:-1:-1;4724:34:25;;543:1799:23;;;;;;-1:-1:-1;;543:1799:23;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;543:1799:23;;-1:-1:-1;;;;;;543:1799:23;;;;;;;-1:-1:-1;;;;;543:1799:23;3975:40:24;543:1799:23;;3975:40:24;543:1799:23;;;;;;;-1:-1:-1;;543:1799:23;;;;-1:-1:-1;;;;;543:1799:23;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;543:1799:23;;;;;;;;;;;;;;;;;;;-1:-1:-1;;543:1799:23;;;;5090:6:26;-1:-1:-1;;;;;543:1799:23;5081:4:26;5073:23;5069:145;;543:1799:23;;;-1:-1:-1;;;;;;;;;;;543:1799:23;;;5069:145:26;4844:29;;;543:1799:23;5174:29:26;543:1799:23;;5174:29:26;543:1799:23;;;-1:-1:-1;;543:1799:23;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4667:6:26;543:1799:23;4658:4:26;4650:23;;;:120;;;;543:1799:23;4633:251:26;;;2303:62:24;;:::i;:::-;543:1799:23;;-1:-1:-1;;;6131:52:26;;-1:-1:-1;;;;;543:1799:23;;;;;;;;;6131:52:26;;543:1799:23;;6131:52:26;;;543:1799:23;-1:-1:-1;6127:437:26;;1805:47:39;;;;543:1799:23;6493:60:26;543:1799:23;;;;6493:60:26;6127:437;6225:40;-1:-1:-1;;;;;;;;;;;6225:40:26;;;6221:120;;1748:29:39;;;:34;1744:119;;-1:-1:-1;;;;;;;;;;;543:1799:23;;-1:-1:-1;;;;;;543:1799:23;;;;;2407:36:39;-1:-1:-1;;2407:36:39;543:1799:23;;2458:15:39;:11;;543:1799:23;4065:25:45;;4107:55;4065:25;;;;;;543:1799:23;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;4107:55:45;:::i;543:1799:23:-;;;4107:55:45;:::i;2454:148:39:-;6163:9;;;;6159:70;;543:1799:23;6159:70:39;6199:19;;;543:1799:23;6199:19:39;543:1799:23;;6199:19:39;1744:119;1805:47;;;543:1799:23;1805:47:39;543:1799:23;;;;1805:47:39;6221:120:26;6292:34;;;543:1799:23;6292:34:26;543:1799:23;;;;6292:34:26;6131:52;;;;543:1799:23;6131:52:26;;543:1799:23;6131:52:26;;;;;;543:1799:23;6131:52:26;;;:::i;:::-;;;543:1799:23;;;;;6131:52:26;;;;;;;-1:-1:-1;6131:52:26;;4650:120;-1:-1:-1;;;;;;;;;;;543:1799:23;-1:-1:-1;;;;;543:1799:23;4728:42:26;;;-1:-1:-1;4650:120:26;;;543:1799:23;;;;;;-1:-1:-1;;543:1799:23;;;;;;:::i;:::-;;;1305:10;;543:1799;;;;;;;;;;;1295:21;1291:45;;-1:-1:-1;;;;;543:1799:23;;8707:21:27;;8703:91;;-1:-1:-1;;;;;;;;;;;543:1799:23;;;;;;;;;;;8262:25:27;543:1799:23;;;-1:-1:-1;;;;;;;;;;;543:1799:23;;;;-1:-1:-1;;;;;;;;;;;543:1799:23;;;;;;;;;;;;;;;;8262:25:27;543:1799:23;;;;;;;;;;;;;8703:91:27;8751:32;;;543:1799:23;8751:32:27;543:1799:23;;;;;8751:32:27;543:1799:23;;;;;;-1:-1:-1;;543:1799:23;;;;;;;3808:2:27;543:1799:23;;;;;;;;;-1:-1:-1;;543:1799:23;;;;;;:::i;:::-;;;:::i;:::-;;;4771:20:27;;;;:::i;:::-;966:10:28;-1:-1:-1;543:1799:23;;;;;;;;;;;;;-1:-1:-1;;11814:36:27;;11810:309;;543:1799:23;6102:5:27;;;;:::i;11810:309::-;11870:24;;;11866:130;;-1:-1:-1;;;;;543:1799:23;;11045:19:27;11041:89;;966:10:28;11143:21:27;11139:90;;6102:5;11238:20;;;;:::i;:::-;543:1799:23;;;;;966:10:28;543:1799:23;-1:-1:-1;543:1799:23;;;;;-1:-1:-1;543:1799:23;;;;;11810:309:27;;11139:90;11187:31;;;543:1799:23;11187:31:27;543:1799:23;;;;;11187:31:27;11041:89;11087:32;;;543:1799:23;11087:32:27;543:1799:23;;;;;11087:32:27;11866:130;11921:60;;;;;543:1799:23;11921:60:27;966:10:28;543:1799:23;;;;;;;;11921:60:27;543:1799:23;;;;;;-1:-1:-1;;543:1799:23;;;;;-1:-1:-1;;;;;;;;;;;543:1799:23;;;;;;;;;;;;;-1:-1:-1;;543:1799:23;;;;;;:::i;:::-;;;966:10:28;;11045:19:27;11041:89;;-1:-1:-1;;;;;543:1799:23;;11143:21:27;;11139:90;;11238:20;966:10:28;11238:20:27;:::i;:::-;543:1799:23;-1:-1:-1;543:1799:23;;;;;-1:-1:-1;543:1799:23;;;;;;;11319:31:27;543:1799:23;966:10:28;11319:31:27;;543:1799:23;;;;;;;;;;;;;-1:-1:-1;;543:1799:23;;;;;;;-1:-1:-1;;;;;;;;;;;543:1799:23;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;543:1799:23;;;;;;;-1:-1:-1;543:1799:23;;;;;;;-1:-1:-1;543:1799:23;;-1:-1:-1;543:1799:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;543:1799:23;;;;:::o;:::-;;;;-1:-1:-1;;;;;543:1799:23;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;543:1799:23;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;543:1799:23;;;;:::o;:::-;-1:-1:-1;;;;;543:1799:23;;;;;4771:13:27;543:1799:23;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;3405:215:24;-1:-1:-1;;;;;543:1799:23;3489:22:24;;3485:91;;-1:-1:-1;;;;;;;;;;;543:1799:23;;-1:-1:-1;;;;;;543:1799:23;;;;;;;-1:-1:-1;;;;;543:1799:23;3975:40:24;-1:-1:-1;;3975:40:24;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;543:1799:23;;3509:1:24;3534:31;6509:300:27;-1:-1:-1;;;;;543:1799:23;;6592:18:27;;6588:86;;-1:-1:-1;;;;;543:1799:23;;6687:16:27;;6683:86;;543:1799:23;6608:1:27;543:1799:23;-1:-1:-1;;;;;;;;;;;543:1799:23;;;6608:1:27;543:1799:23;;7513:19:27;;;7509:115;;543:1799:23;8262:25:27;543:1799:23;;;;6608:1:27;543:1799:23;-1:-1:-1;;;;;;;;;;;543:1799:23;;;;6608:1:27;543:1799:23;;;6608:1:27;543:1799:23;-1:-1:-1;;;;;;;;;;;543:1799:23;;;6608:1:27;543:1799:23;;;;;;;;;;;;8262:25:27;6509:300::o;7509:115::-;7559:50;;;;6608:1;7559:50;;543:1799:23;;;;;;6608:1:27;7559:50;2658:162:24;-1:-1:-1;;;;;;;;;;;543:1799:23;-1:-1:-1;;;;;543:1799:23;966:10:28;2717:23:24;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:24;966:10:28;2763:40:24;543:1799:23;;-1:-1:-1;2763:40:24;7082:141:25;543:1799:23;-1:-1:-1;;;;;;;;;;;543:1799:23;;;;7148:18:25;7144:73;;7082:141::o;7144:73::-;7189:17;;;-1:-1:-1;7189:17:25;;-1:-1:-1;7189:17:25;4437:582:45;;4609:8;;-1:-1:-1;543:1799:23;;5690:21:45;:17;;5815:105;;;;;;5686:301;5957:19;;;5710:1;5957:19;;5710:1;5957:19;4605:408;543:1799:23;;4857:22:45;:49;;;4605:408;4853:119;;4985:17;;:::o;4853:119::-;-1:-1:-1;;;4878:1:45;4933:24;;;-1:-1:-1;;;;;543:1799:23;;;;4933:24:45;543:1799:23;;;4933:24:45;4857:49;4883:18;;;:23;4857:49;","linkReferences":{},"immutableReferences":{"10672":[{"start":2578,"length":32},{"start":2786,"length":32}]}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address,uint256)":"9dc29fac","decimals()":"313ce567","initialize()":"8129fc1c","isMinter(address)":"aa271e1a","mint(address,uint256)":"40c10f19","name()":"06fdde03","owner()":"8da5cb5b","proxiableUUID()":"52d1902d","renounceOwnership()":"715018a6","setMinter(address,bool)":"cf456ae7","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b","upgradeToAndCall(address,bytes)":"4f1ef286"}}}},"node_modules/@openzeppelin/contracts/access/Ownable.sol":{"Ownable":{"abi":[{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the address provided by the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}}}},"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol":{"IERC1363":{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"approveAndCall","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"approveAndCall","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferAndCall","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferAndCall","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFromAndCall","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFromAndCall","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"transferAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"transferFromAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFromAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363]. Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"approveAndCall(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\",\"params\":{\"spender\":\"The address which will spend the funds.\",\"value\":\"The amount of tokens to be spent.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"approveAndCall(address,uint256,bytes)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `spender`.\",\"spender\":\"The address which will spend the funds.\",\"value\":\"The amount of tokens to be spent.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferAndCall(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferAndCall(address,uint256,bytes)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `to`.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFromAndCall(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"from\":\"The address which you want to send tokens from.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferFromAndCall(address,address,uint256,bytes)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `to`.\",\"from\":\"The address which you want to send tokens from.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}}},\"title\":\"IERC1363\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":\"IERC1363\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","approveAndCall(address,uint256)":"3177029f","approveAndCall(address,uint256,bytes)":"cae9ca51","balanceOf(address)":"70a08231","supportsInterface(bytes4)":"01ffc9a7","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferAndCall(address,uint256)":"1296ee62","transferAndCall(address,uint256,bytes)":"4000aea0","transferFrom(address,address,uint256)":"23b872dd","transferFromAndCall(address,address,uint256)":"d8fbe994","transferFromAndCall(address,address,uint256,bytes)":"c1d34b89"}}}},"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol":{"IERC1967":{"abi":[{"type":"event","name":"AdminChanged","inputs":[{"name":"previousAdmin","type":"address","indexed":false,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BeaconUpgraded","inputs":[{"name":"beacon","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol\":\"IERC1967\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}}}}},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"IERC1822Proxiable":{"abi":[{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC-1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":\"IERC1822Proxiable\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"proxiableUUID()":"52d1902d"}}}},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"IERC1155Errors":{"abi":[{"type":"error","name":"ERC1155InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC1155InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidArrayLength","inputs":[{"name":"idsLength","type":"uint256","internalType":"uint256"},{"name":"valuesLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC1155InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1155MissingApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}}}},"IERC20Errors":{"abi":[{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}}}},"IERC721Errors":{"abi":[{"type":"error","name":"ERC721IncorrectOwner","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InsufficientApproval","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC721InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721NonexistentToken","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}}}}},"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"ERC1967Proxy":{"abi":[{"type":"constructor","inputs":[{"name":"implementation","type":"address","internalType":"address"},{"name":"_data","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"fallback","stateMutability":"payable"},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[ERC-1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"events\":{\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the upgradeable proxy with an initial implementation specified by `implementation`. If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - If `data` is empty, `msg.value` must be zero.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":\"ERC1967Proxy\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa3066ff86b94128a9d3956a63a0511fa1aae41bd455772ab587b32ff322acb2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf7b192fd82acf6187970c80548f624b1b9c80425b62fa49e7fdb538a52de049\",\"dweb:/ipfs/QmWXG1YCde1tqDYTbNwjkZDWVgPEjzaQGSDqWkyKLzaNua\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"608060405261029d8038038061001481610168565b92833981016040828203126101645781516001600160a01b03811692909190838303610164576020810151906001600160401b03821161016457019281601f8501121561016457835161006e610069826101a1565b610168565b9481865260208601936020838301011161016457815f926020809301865e86010152823b15610152577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a282511561013a575f8091610122945190845af43d15610132573d91610113610069846101a1565b9283523d5f602085013e6101bc565b505b6040516082908161021b8239f35b6060916101bc565b50505034156101245763b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761018d57604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b03811161018d57601f01601f191660200190565b906101e057508051156101d157602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580610211575b6101f1575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156101e956fe60806040527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e156048573d5ff35b3d5ffdfea26469706673582212209b47d74a9c6e91276df99b9ba7ac21cf97ab55f726c4bb1ac817a91319f9005a64736f6c634300081e0033","sourceMap":"600:1117:38:-:0;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;600:1117:38;;;;;;;;;;;;;;;;-1:-1:-1;;;;;600:1117:38;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;600:1117:38;;;;;;;;;;;1748:29:39;;:34;1744:119;;811:66;;;-1:-1:-1;;;;;;811:66:39;;;;;2407:36;-1:-1:-1;;2407:36:39;600:1117:38;;2458:15:39;:11;;-1:-1:-1;4065:25:45;;4107:55;4065:25;;;;;;600:1117:38;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;600:1117:38;;;;4107:55:45;:::i;:::-;;2454:148:39;600:1117:38;;;;;;;;;;;;4107:55:45;:::i;2454:148:39:-;6163:9;;;;6159:70;2454:148;6159:70;6199:19;;;-1:-1:-1;6199:19:39;;-1:-1:-1;6199:19:39;1744:119;1805:47;;;-1:-1:-1;1805:47:39;;600:1117:38;;-1:-1:-1;1805:47:39;600:1117:38;-1:-1:-1;600:1117:38;;;;;;;;;-1:-1:-1;;600:1117:38;;;-1:-1:-1;;;;;600:1117:38;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;600:1117:38;;;;;-1:-1:-1;600:1117:38;;-1:-1:-1;;;;;600:1117:38;;;;;;-1:-1:-1;;600:1117:38;;;;:::o;4437:582:45:-;;4609:8;;-1:-1:-1;600:1117:38;;5690:21:45;:17;;5815:105;;;;;;5686:301;5957:19;;;5710:1;5957:19;;5710:1;5957:19;4605:408;600:1117:38;;4857:22:45;:49;;;4605:408;4853:119;;4985:17;;:::o;4853:119::-;-1:-1:-1;;;4878:1:45;4933:24;;;-1:-1:-1;;;;;600:1117:38;;;;4933:24:45;600:1117:38;;;4933:24:45;4857:49;4883:18;;;:23;4857:49;","linkReferences":{}},"deployedBytecode":{"object":"60806040527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e156048573d5ff35b3d5ffdfea26469706673582212209b47d74a9c6e91276df99b9ba7ac21cf97ab55f726c4bb1ac817a91319f9005a64736f6c634300081e0033","sourceMap":"600:1117:38:-:0;;;811:66:39;;-1:-1:-1;;;;;;;;;811:66:39;1019:819:40;-1:-1:-1;;1019:819:40;;;;;;;-1:-1:-1;1019:819:40;;;;;;-1:-1:-1;1019:819:40;;;-1:-1:-1;1019:819:40","linkReferences":{}}}}},"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"ERC1967Utils":{"abi":[{"type":"error","name":"ERC1967InvalidAdmin","inputs":[{"name":"admin","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidBeacon","inputs":[{"name":"beacon","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidBeacon\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"This library provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.\",\"errors\":{\"ERC1967InvalidAdmin(address)\":[{\"details\":\"The `admin` of the proxy is invalid.\"}],\"ERC1967InvalidBeacon(address)\":[{\"details\":\"The `beacon` of the proxy is invalid.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}]},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\"},\"BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\"},\"IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":\"ERC1967Utils\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea264697066735822122008e27455331254ec978a61f9011617f31b21e7523e770aa384a85e26f24f97b164736f6c634300081e0033","sourceMap":"496:5741:39:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"5f80fdfea264697066735822122008e27455331254ec978a61f9011617f31b21e7523e770aa384a85e26f24f97b164736f6c634300081e0033","sourceMap":"496:5741:39:-:0;;","linkReferences":{}}}}},"node_modules/@openzeppelin/contracts/proxy/Proxy.sol":{"Proxy":{"abi":[{"type":"fallback","stateMutability":"payable"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":\"Proxy\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}}}}},"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"IBeacon":{"abi":[{"type":"function","name":"implementation","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the interface that {BeaconProxy} expects of its beacon.\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"Must return an address that can be used as a delegate call target. {UpgradeableBeacon} will check that this address is a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":\"IBeacon\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"implementation()":"5c60da1b"}}}},"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}}}},"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"IERC20Metadata":{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC-20 standard.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}}}},"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"SafeERC20":{"abi":[{"type":"error","name":"SafeERC20FailedDecreaseAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"currentAllowance","type":"uint256","internalType":"uint256"},{"name":"requestedDecrease","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentAllowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestedDecrease\",\"type\":\"uint256\"}],\"name\":\"SafeERC20FailedDecreaseAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers around ERC-20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"errors\":{\"SafeERC20FailedDecreaseAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failed `decreaseAllowance` request.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8150ceb4ac947e8a442b2a9c017e01e880b2be2dd958f1fa9bc405f4c5a86508\",\"dweb:/ipfs/QmbcBmFX66AY6Kbhnd5gx7zpkgqnUafo43XnmayAM7zVdB\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220f6eb94fb7364ddc783c14449ce8b01892d8e28783e3cf844ef8b1af3c6ab781964736f6c634300081e0033","sourceMap":"698:9376:44:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"5f80fdfea2646970667358221220f6eb94fb7364ddc783c14449ce8b01892d8e28783e3cf844ef8b1af3c6ab781964736f6c634300081e0033","sourceMap":"698:9376:44:-:0;;","linkReferences":{}}}}},"node_modules/@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212201f03dbb694087cbddb89d294655f8dad47d68926950d977a8885493ae20b6b0564736f6c634300081e0033","sourceMap":"233:5762:45:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"5f80fdfea26469706673582212201f03dbb694087cbddb89d294655f8dad47d68926950d977a8885493ae20b6b0564736f6c634300081e0033","sourceMap":"233:5762:45:-:0;;","linkReferences":{}}}}},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}}}}},"node_modules/@openzeppelin/contracts/utils/Errors.sol":{"Errors":{"abi":[{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"FailedDeployment","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MissingPrecompile","inputs":[{"name":"","type":"address","internalType":"address"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"MissingPrecompile\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of common custom errors used in multiple contracts IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library. It is recommended to avoid relying on the error API for critical functionality. _Available since v5.1._\",\"errors\":{\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"MissingPrecompile(address)\":[{\"details\":\"A necessary precompile is missing.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":\"Errors\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220fbbc80b4029efeee8214a8d05e0d96c0cd962bdf7ceb8d7327b8b45e69768b7c64736f6c634300081e0033","sourceMap":"411:484:47:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"5f80fdfea2646970667358221220fbbc80b4029efeee8214a8d05e0d96c0cd962bdf7ceb8d7327b8b45e69768b7c64736f6c634300081e0033","sourceMap":"411:484:47:-:0;;","linkReferences":{}}}}},"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol":{"StorageSlot":{"abi":[],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC-1967 implementation slot: ```solidity contract ERC1967 { // Define the slot. Alternatively, use the SlotDerivation library to derive the slot. bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(newImplementation.code.length > 0); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` TIP: Consider using this library along with {SlotDerivation}.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212202e387bbfb65c746166ae82d0b98fc4e357001449cc0db79b08b42ef8dde2d37264736f6c634300081e0033","sourceMap":"1407:2774:48:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"5f80fdfea26469706673582212202e387bbfb65c746166ae82d0b98fc4e357001449cc0db79b08b42ef8dde2d37264736f6c634300081e0033","sourceMap":"1407:2774:48:-:0;;","linkReferences":{}}}}},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"IERC165":{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}}}},"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"OwnableUpgradeable":{"abi":[{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":\"OwnableUpgradeable\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}}}},"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"Initializable":{"abi":[{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() { _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\\\"MyToken\\\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}}}}},"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"UUPSUpgradeable":{"abi":[{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy. A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing `UUPSUpgradeable` with a custom implementation of upgrades. The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"UPGRADE_INTERFACE_VERSION\":{\"details\":\"The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)` and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called, while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string. If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must be the empty byte string if no function should be called, making it impossible to invoke the `receive` function during an upgrade.\"},\"__self\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":\"UUPSUpgradeable\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x574a7451e42724f7de29e2855c392a8a5020acd695169466a18459467d719d63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bc189f63b639ee173dd7b6fecc39baf7113bf161776aea22b34c57fdd1872ec\",\"dweb:/ipfs/QmZAf2VtjDLRULqjJkde6LNsxAg12tUqpPqgUQQZbAjgtZ\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","proxiableUUID()":"52d1902d","upgradeToAndCall(address,bytes)":"4f1ef286"}}}},"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol":{"ERC20Upgradeable":{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"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.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":\"ERC20Upgradeable\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xfcd09c2aa8cc3f93e12545454359f901965db312bc03833daf84de0c03e05022\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07701188648d2ab83dab1037808298585264559bddf243bd8929037adcb984b0\",\"dweb:/ipfs/QmavmG5REdHCAWsZ8Cag26BCxAq27DRKGxr3uBg5ZYxQ51\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}}}},"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ContextUpgradeable":{"abi":[{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":\"ContextUpgradeable\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}}}}},"node_modules/@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol":{"PausableUpgradeable":{"abi":[{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"error","name":"EnforcedPause","inputs":[]},{"type":"error","name":"ExpectedPause","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.\",\"errors\":{\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\":\"PausableUpgradeable\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0xa6bf6b7efe0e6625a9dcd30c5ddf52c4c24fe8372f37c7de9dbf5034746768d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c353ee3705bbf6fadb84c0fb10ef1b736e8ca3ca1867814349d1487ed207beb\",\"dweb:/ipfs/QmcugaPssrzGGE8q4YZKm2ZhnD3kCijjcgdWWg76nWt3FY\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"paused()":"5c975abb"}}}},"node_modules/@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol":{"ReentrancyGuardUpgradeable":{"abi":[{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]}],"metadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"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 EIP-1153 (transient storage) is available on the chain you're deploying at, consider using {ReentrancyGuardTransient} instead. 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].\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":\"ReentrancyGuardUpgradeable\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}}}}}},"sources":{"contracts/interfaces/ILending.sol":{"id":0,"ast":{"absolutePath":"contracts/interfaces/ILending.sol","id":233,"exportedSymbols":{"ILending":[232]},"nodeType":"SourceUnit","src":"32:2721:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"32:23:0","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":232,"nodeType":"ContractDefinition","src":"117:2634:0","nodes":[{"id":10,"nodeType":"EventDefinition","src":"142:72:0","nodes":[],"anonymous":false,"eventSelector":"d1cf3d156d5f8f0d50f6c122ed609cec09d35c9b9fb3fff6ea0959134dae424e","name":"Supply","nameLocation":"148:6:0","parameters":{"id":9,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"171:4:0","nodeType":"VariableDeclaration","scope":10,"src":"155:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3,"name":"address","nodeType":"ElementaryTypeName","src":"155:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6,"indexed":true,"mutability":"mutable","name":"dst","nameLocation":"193:3:0","nodeType":"VariableDeclaration","scope":10,"src":"177:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5,"name":"address","nodeType":"ElementaryTypeName","src":"177:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"206:6:0","nodeType":"VariableDeclaration","scope":10,"src":"198:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7,"name":"uint256","nodeType":"ElementaryTypeName","src":"198:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"154:59:0"}},{"id":18,"nodeType":"EventDefinition","src":"219:72:0","nodes":[],"anonymous":false,"eventSelector":"9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb","name":"Withdraw","nameLocation":"225:8:0","parameters":{"id":17,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12,"indexed":true,"mutability":"mutable","name":"src","nameLocation":"250:3:0","nodeType":"VariableDeclaration","scope":18,"src":"234:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11,"name":"address","nodeType":"ElementaryTypeName","src":"234:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"271:2:0","nodeType":"VariableDeclaration","scope":18,"src":"255:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"255:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"283:6:0","nodeType":"VariableDeclaration","scope":18,"src":"275:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15,"name":"uint256","nodeType":"ElementaryTypeName","src":"275:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"233:57:0"}},{"id":28,"nodeType":"EventDefinition","src":"296:105:0","nodes":[],"anonymous":false,"eventSelector":"fa56f7b24f17183d81894d3ac2ee654e3c26388d17a28dbd9549b8114304e1f4","name":"SupplyCollateral","nameLocation":"302:16:0","parameters":{"id":27,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"335:4:0","nodeType":"VariableDeclaration","scope":28,"src":"319:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19,"name":"address","nodeType":"ElementaryTypeName","src":"319:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22,"indexed":true,"mutability":"mutable","name":"dst","nameLocation":"357:3:0","nodeType":"VariableDeclaration","scope":28,"src":"341:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21,"name":"address","nodeType":"ElementaryTypeName","src":"341:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24,"indexed":true,"mutability":"mutable","name":"asset","nameLocation":"378:5:0","nodeType":"VariableDeclaration","scope":28,"src":"362:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"362:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"393:6:0","nodeType":"VariableDeclaration","scope":28,"src":"385:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"385:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"318:82:0"}},{"id":38,"nodeType":"EventDefinition","src":"406:105:0","nodes":[],"anonymous":false,"eventSelector":"d6d480d5b3068db003533b170d67561494d72e3bf9fa40a266471351ebba9e16","name":"WithdrawCollateral","nameLocation":"412:18:0","parameters":{"id":37,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30,"indexed":true,"mutability":"mutable","name":"src","nameLocation":"447:3:0","nodeType":"VariableDeclaration","scope":38,"src":"431:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":29,"name":"address","nodeType":"ElementaryTypeName","src":"431:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"468:2:0","nodeType":"VariableDeclaration","scope":38,"src":"452:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31,"name":"address","nodeType":"ElementaryTypeName","src":"452:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":34,"indexed":true,"mutability":"mutable","name":"asset","nameLocation":"488:5:0","nodeType":"VariableDeclaration","scope":38,"src":"472:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":33,"name":"address","nodeType":"ElementaryTypeName","src":"472:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":36,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"503:6:0","nodeType":"VariableDeclaration","scope":38,"src":"495:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":35,"name":"uint256","nodeType":"ElementaryTypeName","src":"495:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"430:80:0"}},{"id":48,"nodeType":"EventDefinition","src":"516:108:0","nodes":[],"anonymous":false,"eventSelector":"1547a878dc89ad3c367b6338b4be6a65a5dd74fb77ae044da1e8747ef1f4f62f","name":"AbsorbDebt","nameLocation":"522:10:0","parameters":{"id":47,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40,"indexed":true,"mutability":"mutable","name":"absorber","nameLocation":"549:8:0","nodeType":"VariableDeclaration","scope":48,"src":"533:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39,"name":"address","nodeType":"ElementaryTypeName","src":"533:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42,"indexed":true,"mutability":"mutable","name":"borrower","nameLocation":"575:8:0","nodeType":"VariableDeclaration","scope":48,"src":"559:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41,"name":"address","nodeType":"ElementaryTypeName","src":"559:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":44,"indexed":false,"mutability":"mutable","name":"basePaidOut","nameLocation":"593:11:0","nodeType":"VariableDeclaration","scope":48,"src":"585:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":43,"name":"uint256","nodeType":"ElementaryTypeName","src":"585:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":46,"indexed":false,"mutability":"mutable","name":"usdValue","nameLocation":"614:8:0","nodeType":"VariableDeclaration","scope":48,"src":"606:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45,"name":"uint256","nodeType":"ElementaryTypeName","src":"606:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"532:91:0"}},{"id":60,"nodeType":"EventDefinition","src":"629:144:0","nodes":[],"anonymous":false,"eventSelector":"9850ab1af75177e4a9201c65a2cf7976d5d28e40ef63494b44366f86b2f9412e","name":"AbsorbCollateral","nameLocation":"635:16:0","parameters":{"id":59,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"indexed":true,"mutability":"mutable","name":"absorber","nameLocation":"668:8:0","nodeType":"VariableDeclaration","scope":60,"src":"652:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":49,"name":"address","nodeType":"ElementaryTypeName","src":"652:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52,"indexed":true,"mutability":"mutable","name":"borrower","nameLocation":"694:8:0","nodeType":"VariableDeclaration","scope":60,"src":"678:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":51,"name":"address","nodeType":"ElementaryTypeName","src":"678:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54,"indexed":true,"mutability":"mutable","name":"asset","nameLocation":"720:5:0","nodeType":"VariableDeclaration","scope":60,"src":"704:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53,"name":"address","nodeType":"ElementaryTypeName","src":"704:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":56,"indexed":false,"mutability":"mutable","name":"collateralAbsorbed","nameLocation":"735:18:0","nodeType":"VariableDeclaration","scope":60,"src":"727:26:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55,"name":"uint256","nodeType":"ElementaryTypeName","src":"727:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":58,"indexed":false,"mutability":"mutable","name":"usdValue","nameLocation":"763:8:0","nodeType":"VariableDeclaration","scope":60,"src":"755:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":57,"name":"uint256","nodeType":"ElementaryTypeName","src":"755:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"651:121:0"}},{"id":70,"nodeType":"EventDefinition","src":"778:112:0","nodes":[],"anonymous":false,"eventSelector":"f891b2a411b0e66a5f0a6ff1368670fefa287a13f541eb633a386a1a9cc7046b","name":"BuyCollateral","nameLocation":"784:13:0","parameters":{"id":69,"nodeType":"ParameterList","parameters":[{"constant":false,"id":62,"indexed":true,"mutability":"mutable","name":"buyer","nameLocation":"814:5:0","nodeType":"VariableDeclaration","scope":70,"src":"798:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61,"name":"address","nodeType":"ElementaryTypeName","src":"798:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":64,"indexed":true,"mutability":"mutable","name":"asset","nameLocation":"837:5:0","nodeType":"VariableDeclaration","scope":70,"src":"821:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"821:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":66,"indexed":false,"mutability":"mutable","name":"baseAmount","nameLocation":"852:10:0","nodeType":"VariableDeclaration","scope":70,"src":"844:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":65,"name":"uint256","nodeType":"ElementaryTypeName","src":"844:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":68,"indexed":false,"mutability":"mutable","name":"collateralAmount","nameLocation":"872:16:0","nodeType":"VariableDeclaration","scope":70,"src":"864:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":67,"name":"uint256","nodeType":"ElementaryTypeName","src":"864:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"797:92:0"}},{"id":76,"nodeType":"EventDefinition","src":"895:59:0","nodes":[],"anonymous":false,"eventSelector":"ec4431f2ba1a9382f6b0c4352b888cba6f7db91667d9f776abe5ad8ddc5401b6","name":"WithdrawReserves","nameLocation":"901:16:0","parameters":{"id":75,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"934:2:0","nodeType":"VariableDeclaration","scope":76,"src":"918:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":71,"name":"address","nodeType":"ElementaryTypeName","src":"918:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":74,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"946:6:0","nodeType":"VariableDeclaration","scope":76,"src":"938:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73,"name":"uint256","nodeType":"ElementaryTypeName","src":"938:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"917:36:0"}},{"id":78,"nodeType":"ErrorDefinition","src":"964:21:0","nodes":[],"errorSelector":"82b42900","name":"Unauthorized","nameLocation":"970:12:0","parameters":{"id":77,"nodeType":"ParameterList","parameters":[],"src":"982:2:0"}},{"id":80,"nodeType":"ErrorDefinition","src":"990:28:0","nodes":[],"errorSelector":"f4d678b8","name":"InsufficientBalance","nameLocation":"996:19:0","parameters":{"id":79,"nodeType":"ParameterList","parameters":[],"src":"1015:2:0"}},{"id":82,"nodeType":"ErrorDefinition","src":"1023:31:0","nodes":[],"errorSelector":"3a23d825","name":"InsufficientCollateral","nameLocation":"1029:22:0","parameters":{"id":81,"nodeType":"ParameterList","parameters":[],"src":"1051:2:0"}},{"id":84,"nodeType":"ErrorDefinition","src":"1059:23:0","nodes":[],"errorSelector":"e273b446","name":"BorrowTooSmall","nameLocation":"1065:14:0","parameters":{"id":83,"nodeType":"ParameterList","parameters":[],"src":"1079:2:0"}},{"id":86,"nodeType":"ErrorDefinition","src":"1087:24:0","nodes":[],"errorSelector":"ddeb79ba","name":"NotLiquidatable","nameLocation":"1093:15:0","parameters":{"id":85,"nodeType":"ParameterList","parameters":[],"src":"1108:2:0"}},{"id":88,"nodeType":"ErrorDefinition","src":"1116:26:0","nodes":[],"errorSelector":"f58f733a","name":"SupplyCapExceeded","nameLocation":"1122:17:0","parameters":{"id":87,"nodeType":"ParameterList","parameters":[],"src":"1139:2:0"}},{"id":90,"nodeType":"ErrorDefinition","src":"1147:33:0","nodes":[],"errorSelector":"1db60e29","name":"InvalidLiquidationFactor","nameLocation":"1153:24:0","parameters":{"id":89,"nodeType":"ParameterList","parameters":[],"src":"1177:2:0"}},{"id":92,"nodeType":"ErrorDefinition","src":"1185:38:0","nodes":[],"errorSelector":"f320bc26","name":"InvalidBorrowCollateralFactor","nameLocation":"1191:29:0","parameters":{"id":91,"nodeType":"ParameterList","parameters":[],"src":"1220:2:0"}},{"id":94,"nodeType":"ErrorDefinition","src":"1228:41:0","nodes":[],"errorSelector":"c1a8d9bd","name":"InvalidLiquidateCollateralFactor","nameLocation":"1234:32:0","parameters":{"id":93,"nodeType":"ParameterList","parameters":[],"src":"1266:2:0"}},{"id":96,"nodeType":"ErrorDefinition","src":"1274:29:0","nodes":[],"errorSelector":"945e9268","name":"InsufficientReserves","nameLocation":"1280:20:0","parameters":{"id":95,"nodeType":"ParameterList","parameters":[],"src":"1300:2:0"}},{"id":98,"nodeType":"ErrorDefinition","src":"1308:19:0","nodes":[],"errorSelector":"1d99ddbf","name":"NotForSale","nameLocation":"1314:10:0","parameters":{"id":97,"nodeType":"ParameterList","parameters":[],"src":"1324:2:0"}},{"id":103,"nodeType":"FunctionDefinition","src":"1337:41:0","nodes":[],"functionSelector":"35403023","implemented":false,"kind":"function","modifiers":[],"name":"supply","nameLocation":"1346:6:0","parameters":{"id":101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":100,"mutability":"mutable","name":"amount","nameLocation":"1361:6:0","nodeType":"VariableDeclaration","scope":103,"src":"1353:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":99,"name":"uint256","nodeType":"ElementaryTypeName","src":"1353:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1352:16:0"},"returnParameters":{"id":102,"nodeType":"ParameterList","parameters":[],"src":"1377:0:0"},"scope":232,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":108,"nodeType":"FunctionDefinition","src":"1383:43:0","nodes":[],"functionSelector":"2e1a7d4d","implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"1392:8:0","parameters":{"id":106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":105,"mutability":"mutable","name":"amount","nameLocation":"1409:6:0","nodeType":"VariableDeclaration","scope":108,"src":"1401:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":104,"name":"uint256","nodeType":"ElementaryTypeName","src":"1401:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1400:16:0"},"returnParameters":{"id":107,"nodeType":"ParameterList","parameters":[],"src":"1425:0:0"},"scope":232,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":115,"nodeType":"FunctionDefinition","src":"1431:66:0","nodes":[],"functionSelector":"d2a8607b","implemented":false,"kind":"function","modifiers":[],"name":"supplyCollateral","nameLocation":"1440:16:0","parameters":{"id":113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":110,"mutability":"mutable","name":"asset","nameLocation":"1465:5:0","nodeType":"VariableDeclaration","scope":115,"src":"1457:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":109,"name":"address","nodeType":"ElementaryTypeName","src":"1457:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":112,"mutability":"mutable","name":"amount","nameLocation":"1480:6:0","nodeType":"VariableDeclaration","scope":115,"src":"1472:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":111,"name":"uint256","nodeType":"ElementaryTypeName","src":"1472:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1456:31:0"},"returnParameters":{"id":114,"nodeType":"ParameterList","parameters":[],"src":"1496:0:0"},"scope":232,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":122,"nodeType":"FunctionDefinition","src":"1502:68:0","nodes":[],"functionSelector":"350c35e9","implemented":false,"kind":"function","modifiers":[],"name":"withdrawCollateral","nameLocation":"1511:18:0","parameters":{"id":120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":117,"mutability":"mutable","name":"asset","nameLocation":"1538:5:0","nodeType":"VariableDeclaration","scope":122,"src":"1530:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":116,"name":"address","nodeType":"ElementaryTypeName","src":"1530:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":119,"mutability":"mutable","name":"amount","nameLocation":"1553:6:0","nodeType":"VariableDeclaration","scope":122,"src":"1545:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":118,"name":"uint256","nodeType":"ElementaryTypeName","src":"1545:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1529:31:0"},"returnParameters":{"id":121,"nodeType":"ParameterList","parameters":[],"src":"1569:0:0"},"scope":232,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":127,"nodeType":"FunctionDefinition","src":"1575:41:0","nodes":[],"functionSelector":"c5ebeaec","implemented":false,"kind":"function","modifiers":[],"name":"borrow","nameLocation":"1584:6:0","parameters":{"id":125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":124,"mutability":"mutable","name":"amount","nameLocation":"1599:6:0","nodeType":"VariableDeclaration","scope":127,"src":"1591:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":123,"name":"uint256","nodeType":"ElementaryTypeName","src":"1591:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1590:16:0"},"returnParameters":{"id":126,"nodeType":"ParameterList","parameters":[],"src":"1615:0:0"},"scope":232,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":132,"nodeType":"FunctionDefinition","src":"1621:43:0","nodes":[],"functionSelector":"ba1b2447","implemented":false,"kind":"function","modifiers":[],"name":"absorb","nameLocation":"1630:6:0","parameters":{"id":130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":129,"mutability":"mutable","name":"borrower","nameLocation":"1645:8:0","nodeType":"VariableDeclaration","scope":132,"src":"1637:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":128,"name":"address","nodeType":"ElementaryTypeName","src":"1637:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1636:18:0"},"returnParameters":{"id":131,"nodeType":"ParameterList","parameters":[],"src":"1663:0:0"},"scope":232,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":140,"nodeType":"FunctionDefinition","src":"1669:80:0","nodes":[],"functionSelector":"74485e78","implemented":false,"kind":"function","modifiers":[],"name":"absorbMultiple","nameLocation":"1678:14:0","parameters":{"id":138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":134,"mutability":"mutable","name":"absorber","nameLocation":"1701:8:0","nodeType":"VariableDeclaration","scope":140,"src":"1693:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":133,"name":"address","nodeType":"ElementaryTypeName","src":"1693:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":137,"mutability":"mutable","name":"accounts","nameLocation":"1730:8:0","nodeType":"VariableDeclaration","scope":140,"src":"1711:27:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":135,"name":"address","nodeType":"ElementaryTypeName","src":"1711:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":136,"nodeType":"ArrayTypeName","src":"1711:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1692:47:0"},"returnParameters":{"id":139,"nodeType":"ParameterList","parameters":[],"src":"1748:0:0"},"scope":232,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":151,"nodeType":"FunctionDefinition","src":"1754:105:0","nodes":[],"functionSelector":"e4e6e779","implemented":false,"kind":"function","modifiers":[],"name":"buyCollateral","nameLocation":"1763:13:0","parameters":{"id":149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":142,"mutability":"mutable","name":"asset","nameLocation":"1785:5:0","nodeType":"VariableDeclaration","scope":151,"src":"1777:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":141,"name":"address","nodeType":"ElementaryTypeName","src":"1777:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":144,"mutability":"mutable","name":"minAmount","nameLocation":"1800:9:0","nodeType":"VariableDeclaration","scope":151,"src":"1792:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":143,"name":"uint256","nodeType":"ElementaryTypeName","src":"1792:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":146,"mutability":"mutable","name":"baseAmount","nameLocation":"1819:10:0","nodeType":"VariableDeclaration","scope":151,"src":"1811:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":145,"name":"uint256","nodeType":"ElementaryTypeName","src":"1811:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":148,"mutability":"mutable","name":"recipient","nameLocation":"1839:9:0","nodeType":"VariableDeclaration","scope":151,"src":"1831:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":147,"name":"address","nodeType":"ElementaryTypeName","src":"1831:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1776:73:0"},"returnParameters":{"id":150,"nodeType":"ParameterList","parameters":[],"src":"1858:0:0"},"scope":232,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":158,"nodeType":"FunctionDefinition","src":"1864:68:0","nodes":[],"functionSelector":"f8b2cb4f","implemented":false,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"1873:10:0","parameters":{"id":154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":153,"mutability":"mutable","name":"account","nameLocation":"1892:7:0","nodeType":"VariableDeclaration","scope":158,"src":"1884:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":152,"name":"address","nodeType":"ElementaryTypeName","src":"1884:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1883:17:0"},"returnParameters":{"id":157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":156,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":158,"src":"1924:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":155,"name":"int256","nodeType":"ElementaryTypeName","src":"1924:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1923:8:0"},"scope":232,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":167,"nodeType":"FunctionDefinition","src":"1937:87:0","nodes":[],"functionSelector":"52226ef0","implemented":false,"kind":"function","modifiers":[],"name":"getCollateral","nameLocation":"1946:13:0","parameters":{"id":163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":160,"mutability":"mutable","name":"account","nameLocation":"1968:7:0","nodeType":"VariableDeclaration","scope":167,"src":"1960:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":159,"name":"address","nodeType":"ElementaryTypeName","src":"1960:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":162,"mutability":"mutable","name":"asset","nameLocation":"1985:5:0","nodeType":"VariableDeclaration","scope":167,"src":"1977:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161,"name":"address","nodeType":"ElementaryTypeName","src":"1977:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1959:32:0"},"returnParameters":{"id":166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":165,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":167,"src":"2015:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":164,"name":"uint256","nodeType":"ElementaryTypeName","src":"2015:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2014:9:0"},"scope":232,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":174,"nodeType":"FunctionDefinition","src":"2029:70:0","nodes":[],"functionSelector":"042e02cf","implemented":false,"kind":"function","modifiers":[],"name":"isLiquidatable","nameLocation":"2038:14:0","parameters":{"id":170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":169,"mutability":"mutable","name":"account","nameLocation":"2061:7:0","nodeType":"VariableDeclaration","scope":174,"src":"2053:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":168,"name":"address","nodeType":"ElementaryTypeName","src":"2053:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2052:17:0"},"returnParameters":{"id":173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":172,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"2093:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":171,"name":"bool","nodeType":"ElementaryTypeName","src":"2093:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2092:6:0"},"scope":232,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":179,"nodeType":"FunctionDefinition","src":"2104:56:0","nodes":[],"functionSelector":"84bdc9a8","implemented":false,"kind":"function","modifiers":[],"name":"getSupplyRate","nameLocation":"2113:13:0","parameters":{"id":175,"nodeType":"ParameterList","parameters":[],"src":"2126:2:0"},"returnParameters":{"id":178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":179,"src":"2152:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":176,"name":"uint64","nodeType":"ElementaryTypeName","src":"2152:6:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"2151:8:0"},"scope":232,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":184,"nodeType":"FunctionDefinition","src":"2165:56:0","nodes":[],"functionSelector":"ba1c5e80","implemented":false,"kind":"function","modifiers":[],"name":"getBorrowRate","nameLocation":"2174:13:0","parameters":{"id":180,"nodeType":"ParameterList","parameters":[],"src":"2187:2:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":184,"src":"2213:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":181,"name":"uint64","nodeType":"ElementaryTypeName","src":"2213:6:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"2212:8:0"},"scope":232,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":191,"nodeType":"FunctionDefinition","src":"2226:74:0","nodes":[],"functionSelector":"93889f06","implemented":false,"kind":"function","modifiers":[],"name":"supplyBalanceOf","nameLocation":"2235:15:0","parameters":{"id":187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":186,"mutability":"mutable","name":"account","nameLocation":"2259:7:0","nodeType":"VariableDeclaration","scope":191,"src":"2251:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":185,"name":"address","nodeType":"ElementaryTypeName","src":"2251:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2250:17:0"},"returnParameters":{"id":190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":189,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":191,"src":"2291:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":188,"name":"uint256","nodeType":"ElementaryTypeName","src":"2291:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2290:9:0"},"scope":232,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":198,"nodeType":"FunctionDefinition","src":"2305:74:0","nodes":[],"functionSelector":"374c49b4","implemented":false,"kind":"function","modifiers":[],"name":"borrowBalanceOf","nameLocation":"2314:15:0","parameters":{"id":194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":193,"mutability":"mutable","name":"account","nameLocation":"2338:7:0","nodeType":"VariableDeclaration","scope":198,"src":"2330:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":192,"name":"address","nodeType":"ElementaryTypeName","src":"2330:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2329:17:0"},"returnParameters":{"id":197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":196,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":198,"src":"2370:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":195,"name":"uint256","nodeType":"ElementaryTypeName","src":"2370:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2369:9:0"},"scope":232,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":207,"nodeType":"FunctionDefinition","src":"2384:92:0","nodes":[],"functionSelector":"7ac88ed1","implemented":false,"kind":"function","modifiers":[],"name":"quoteCollateral","nameLocation":"2393:15:0","parameters":{"id":203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":200,"mutability":"mutable","name":"asset","nameLocation":"2417:5:0","nodeType":"VariableDeclaration","scope":207,"src":"2409:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":199,"name":"address","nodeType":"ElementaryTypeName","src":"2409:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":202,"mutability":"mutable","name":"baseAmount","nameLocation":"2432:10:0","nodeType":"VariableDeclaration","scope":207,"src":"2424:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":201,"name":"uint256","nodeType":"ElementaryTypeName","src":"2424:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2408:35:0"},"returnParameters":{"id":206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":205,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":207,"src":"2467:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":204,"name":"uint256","nodeType":"ElementaryTypeName","src":"2467:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2466:9:0"},"scope":232,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":212,"nodeType":"FunctionDefinition","src":"2481:54:0","nodes":[],"functionSelector":"0902f1ac","implemented":false,"kind":"function","modifiers":[],"name":"getReserves","nameLocation":"2490:11:0","parameters":{"id":208,"nodeType":"ParameterList","parameters":[],"src":"2501:2:0"},"returnParameters":{"id":211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":210,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":212,"src":"2527:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":209,"name":"int256","nodeType":"ElementaryTypeName","src":"2527:6:0","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2526:8:0"},"scope":232,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":219,"nodeType":"FunctionDefinition","src":"2540:78:0","nodes":[],"functionSelector":"9ff567f8","implemented":false,"kind":"function","modifiers":[],"name":"getCollateralReserves","nameLocation":"2549:21:0","parameters":{"id":215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":214,"mutability":"mutable","name":"asset","nameLocation":"2579:5:0","nodeType":"VariableDeclaration","scope":219,"src":"2571:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":213,"name":"address","nodeType":"ElementaryTypeName","src":"2571:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2570:15:0"},"returnParameters":{"id":218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":217,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":219,"src":"2609:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":216,"name":"uint256","nodeType":"ElementaryTypeName","src":"2609:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2608:9:0"},"scope":232,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":224,"nodeType":"FunctionDefinition","src":"2623:58:0","nodes":[],"functionSelector":"7eb71131","implemented":false,"kind":"function","modifiers":[],"name":"getUtilization","nameLocation":"2632:14:0","parameters":{"id":220,"nodeType":"ParameterList","parameters":[],"src":"2646:2:0"},"returnParameters":{"id":223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":222,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":224,"src":"2672:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":221,"name":"uint256","nodeType":"ElementaryTypeName","src":"2672:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2671:9:0"},"scope":232,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":231,"nodeType":"FunctionDefinition","src":"2686:63:0","nodes":[],"functionSelector":"e478795d","implemented":false,"kind":"function","modifiers":[],"name":"withdrawReserves","nameLocation":"2695:16:0","parameters":{"id":229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":226,"mutability":"mutable","name":"to","nameLocation":"2720:2:0","nodeType":"VariableDeclaration","scope":231,"src":"2712:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":225,"name":"address","nodeType":"ElementaryTypeName","src":"2712:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":228,"mutability":"mutable","name":"amount","nameLocation":"2732:6:0","nodeType":"VariableDeclaration","scope":231,"src":"2724:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":227,"name":"uint256","nodeType":"ElementaryTypeName","src":"2724:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2711:28:0"},"returnParameters":{"id":230,"nodeType":"ParameterList","parameters":[],"src":"2748:0:0"},"scope":232,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"ILending","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"57:59:0","text":" @title ILending\n @notice 借贷池核心接口"},"fullyImplemented":false,"linearizedBaseContracts":[232],"name":"ILending","nameLocation":"127:8:0","scope":233,"usedErrors":[78,80,82,84,86,88,90,92,94,96,98],"usedEvents":[10,18,28,38,48,60,70,76]}],"license":"MIT"}},"contracts/interfaces/IPriceFeed.sol":{"id":1,"ast":{"absolutePath":"contracts/interfaces/IPriceFeed.sol","id":247,"exportedSymbols":{"IPriceFeed":[246]},"nodeType":"SourceUnit","src":"32:231:1","nodes":[{"id":234,"nodeType":"PragmaDirective","src":"32:23:1","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":246,"nodeType":"ContractDefinition","src":"119:142:1","nodes":[{"id":240,"nodeType":"FunctionDefinition","src":"146:58:1","nodes":[],"functionSelector":"98d5fdca","implemented":false,"kind":"function","modifiers":[],"name":"getPrice","nameLocation":"155:8:1","parameters":{"id":236,"nodeType":"ParameterList","parameters":[],"src":"163:2:1"},"returnParameters":{"id":239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":238,"mutability":"mutable","name":"price","nameLocation":"197:5:1","nodeType":"VariableDeclaration","scope":240,"src":"189:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":237,"name":"uint256","nodeType":"ElementaryTypeName","src":"189:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"188:15:1"},"scope":246,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":245,"nodeType":"FunctionDefinition","src":"209:50:1","nodes":[],"functionSelector":"313ce567","implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"218:8:1","parameters":{"id":241,"nodeType":"ParameterList","parameters":[],"src":"226:2:1"},"returnParameters":{"id":244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":243,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":245,"src":"252:5:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":242,"name":"uint8","nodeType":"ElementaryTypeName","src":"252:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"251:7:1"},"scope":246,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IPriceFeed","contractDependencies":[],"contractKind":"interface","documentation":{"id":235,"nodeType":"StructuredDocumentation","src":"57:61:1","text":" @title IPriceFeed\n @notice 价格预言机接口"},"fullyImplemented":false,"linearizedBaseContracts":[246],"name":"IPriceFeed","nameLocation":"129:10:1","scope":247,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"contracts/interfaces/IUSDY.sol":{"id":2,"ast":{"absolutePath":"contracts/interfaces/IUSDY.sol","id":269,"exportedSymbols":{"IUSDY":[268]},"nodeType":"SourceUnit","src":"32:224:2","nodes":[{"id":248,"nodeType":"PragmaDirective","src":"32:23:2","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":268,"nodeType":"ContractDefinition","src":"57:197:2","nodes":[{"id":255,"nodeType":"FunctionDefinition","src":"79:53:2","nodes":[],"functionSelector":"40c10f19","implemented":false,"kind":"function","modifiers":[],"name":"mint","nameLocation":"88:4:2","parameters":{"id":253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":250,"mutability":"mutable","name":"_to","nameLocation":"101:3:2","nodeType":"VariableDeclaration","scope":255,"src":"93:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":249,"name":"address","nodeType":"ElementaryTypeName","src":"93:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":252,"mutability":"mutable","name":"_amount","nameLocation":"114:7:2","nodeType":"VariableDeclaration","scope":255,"src":"106:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":251,"name":"uint256","nodeType":"ElementaryTypeName","src":"106:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"92:30:2"},"returnParameters":{"id":254,"nodeType":"ParameterList","parameters":[],"src":"131:0:2"},"scope":268,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":262,"nodeType":"FunctionDefinition","src":"137:55:2","nodes":[],"functionSelector":"9dc29fac","implemented":false,"kind":"function","modifiers":[],"name":"burn","nameLocation":"146:4:2","parameters":{"id":260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":257,"mutability":"mutable","name":"_from","nameLocation":"159:5:2","nodeType":"VariableDeclaration","scope":262,"src":"151:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":256,"name":"address","nodeType":"ElementaryTypeName","src":"151:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":259,"mutability":"mutable","name":"_amount","nameLocation":"174:7:2","nodeType":"VariableDeclaration","scope":262,"src":"166:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":258,"name":"uint256","nodeType":"ElementaryTypeName","src":"166:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"150:32:2"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[],"src":"191:0:2"},"scope":268,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":267,"nodeType":"FunctionDefinition","src":"197:55:2","nodes":[],"functionSelector":"18160ddd","implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"206:11:2","parameters":{"id":263,"nodeType":"ParameterList","parameters":[],"src":"217:2:2"},"returnParameters":{"id":266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":265,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":267,"src":"243:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":264,"name":"uint256","nodeType":"ElementaryTypeName","src":"243:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"242:9:2"},"scope":268,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IUSDY","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"linearizedBaseContracts":[268],"name":"IUSDY","nameLocation":"67:5:2","scope":269,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"contracts/interfaces/IYTLPToken.sol":{"id":3,"ast":{"absolutePath":"contracts/interfaces/IYTLPToken.sol","id":286,"exportedSymbols":{"IYTLPToken":[285]},"nodeType":"SourceUnit","src":"32:169:3","nodes":[{"id":270,"nodeType":"PragmaDirective","src":"32:23:3","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":285,"nodeType":"ContractDefinition","src":"57:142:3","nodes":[{"id":277,"nodeType":"FunctionDefinition","src":"84:53:3","nodes":[],"functionSelector":"40c10f19","implemented":false,"kind":"function","modifiers":[],"name":"mint","nameLocation":"93:4:3","parameters":{"id":275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":272,"mutability":"mutable","name":"_to","nameLocation":"106:3:3","nodeType":"VariableDeclaration","scope":277,"src":"98:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":271,"name":"address","nodeType":"ElementaryTypeName","src":"98:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":274,"mutability":"mutable","name":"_amount","nameLocation":"119:7:3","nodeType":"VariableDeclaration","scope":277,"src":"111:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":273,"name":"uint256","nodeType":"ElementaryTypeName","src":"111:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"97:30:3"},"returnParameters":{"id":276,"nodeType":"ParameterList","parameters":[],"src":"136:0:3"},"scope":285,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":284,"nodeType":"FunctionDefinition","src":"142:55:3","nodes":[],"functionSelector":"9dc29fac","implemented":false,"kind":"function","modifiers":[],"name":"burn","nameLocation":"151:4:3","parameters":{"id":282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":279,"mutability":"mutable","name":"_from","nameLocation":"164:5:3","nodeType":"VariableDeclaration","scope":284,"src":"156:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":278,"name":"address","nodeType":"ElementaryTypeName","src":"156:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":281,"mutability":"mutable","name":"_amount","nameLocation":"179:7:3","nodeType":"VariableDeclaration","scope":284,"src":"171:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":280,"name":"uint256","nodeType":"ElementaryTypeName","src":"171:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"155:32:3"},"returnParameters":{"id":283,"nodeType":"ParameterList","parameters":[],"src":"196:0:3"},"scope":285,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IYTLPToken","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"linearizedBaseContracts":[285],"name":"IYTLPToken","nameLocation":"67:10:3","scope":286,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"contracts/interfaces/IYTPoolManager.sol":{"id":4,"ast":{"absolutePath":"contracts/interfaces/IYTPoolManager.sol","id":328,"exportedSymbols":{"IYTPoolManager":[327]},"nodeType":"SourceUnit","src":"32:573:4","nodes":[{"id":287,"nodeType":"PragmaDirective","src":"32:23:4","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":327,"nodeType":"ContractDefinition","src":"57:546:4","nodes":[{"id":304,"nodeType":"FunctionDefinition","src":"88:225:4","nodes":[],"functionSelector":"17eb2a15","implemented":false,"kind":"function","modifiers":[],"name":"addLiquidityForAccount","nameLocation":"97:22:4","parameters":{"id":300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":289,"mutability":"mutable","name":"_fundingAccount","nameLocation":"137:15:4","nodeType":"VariableDeclaration","scope":304,"src":"129:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":288,"name":"address","nodeType":"ElementaryTypeName","src":"129:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":291,"mutability":"mutable","name":"_account","nameLocation":"170:8:4","nodeType":"VariableDeclaration","scope":304,"src":"162:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":290,"name":"address","nodeType":"ElementaryTypeName","src":"162:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":293,"mutability":"mutable","name":"_token","nameLocation":"196:6:4","nodeType":"VariableDeclaration","scope":304,"src":"188:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":292,"name":"address","nodeType":"ElementaryTypeName","src":"188:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":295,"mutability":"mutable","name":"_amount","nameLocation":"220:7:4","nodeType":"VariableDeclaration","scope":304,"src":"212:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":294,"name":"uint256","nodeType":"ElementaryTypeName","src":"212:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":297,"mutability":"mutable","name":"_minUsdy","nameLocation":"245:8:4","nodeType":"VariableDeclaration","scope":304,"src":"237:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":296,"name":"uint256","nodeType":"ElementaryTypeName","src":"237:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":299,"mutability":"mutable","name":"_minYtLP","nameLocation":"271:8:4","nodeType":"VariableDeclaration","scope":304,"src":"263:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":298,"name":"uint256","nodeType":"ElementaryTypeName","src":"263:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"119:166:4"},"returnParameters":{"id":303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":302,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":304,"src":"304:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":301,"name":"uint256","nodeType":"ElementaryTypeName","src":"304:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"303:9:4"},"scope":327,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":319,"nodeType":"FunctionDefinition","src":"323:202:4","nodes":[],"functionSelector":"71d597ad","implemented":false,"kind":"function","modifiers":[],"name":"removeLiquidityForAccount","nameLocation":"332:25:4","parameters":{"id":315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":306,"mutability":"mutable","name":"_account","nameLocation":"375:8:4","nodeType":"VariableDeclaration","scope":319,"src":"367:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":305,"name":"address","nodeType":"ElementaryTypeName","src":"367:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":308,"mutability":"mutable","name":"_tokenOut","nameLocation":"401:9:4","nodeType":"VariableDeclaration","scope":319,"src":"393:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":307,"name":"address","nodeType":"ElementaryTypeName","src":"393:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":310,"mutability":"mutable","name":"_ytLPAmount","nameLocation":"428:11:4","nodeType":"VariableDeclaration","scope":319,"src":"420:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":309,"name":"uint256","nodeType":"ElementaryTypeName","src":"420:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":312,"mutability":"mutable","name":"_minOut","nameLocation":"457:7:4","nodeType":"VariableDeclaration","scope":319,"src":"449:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":311,"name":"uint256","nodeType":"ElementaryTypeName","src":"449:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":314,"mutability":"mutable","name":"_receiver","nameLocation":"482:9:4","nodeType":"VariableDeclaration","scope":319,"src":"474:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":313,"name":"address","nodeType":"ElementaryTypeName","src":"474:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"357:140:4"},"returnParameters":{"id":318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":317,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":319,"src":"516:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":316,"name":"uint256","nodeType":"ElementaryTypeName","src":"516:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"515:9:4"},"scope":327,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":326,"nodeType":"FunctionDefinition","src":"535:66:4","nodes":[],"functionSelector":"e245b5af","implemented":false,"kind":"function","modifiers":[],"name":"getPrice","nameLocation":"544:8:4","parameters":{"id":322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":321,"mutability":"mutable","name":"_maximise","nameLocation":"558:9:4","nodeType":"VariableDeclaration","scope":326,"src":"553:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":320,"name":"bool","nodeType":"ElementaryTypeName","src":"553:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"552:16:4"},"returnParameters":{"id":325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":324,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":326,"src":"592:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":323,"name":"uint256","nodeType":"ElementaryTypeName","src":"592:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"591:9:4"},"scope":327,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IYTPoolManager","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"linearizedBaseContracts":[327],"name":"IYTPoolManager","nameLocation":"67:14:4","scope":328,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"contracts/interfaces/IYTPriceFeed.sol":{"id":5,"ast":{"absolutePath":"contracts/interfaces/IYTPriceFeed.sol","id":340,"exportedSymbols":{"IYTPriceFeed":[339]},"nodeType":"SourceUnit","src":"32:140:5","nodes":[{"id":329,"nodeType":"PragmaDirective","src":"32:23:5","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":339,"nodeType":"ContractDefinition","src":"57:113:5","nodes":[{"id":338,"nodeType":"FunctionDefinition","src":"86:82:5","nodes":[],"functionSelector":"76d69760","implemented":false,"kind":"function","modifiers":[],"name":"getPrice","nameLocation":"95:8:5","parameters":{"id":334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":331,"mutability":"mutable","name":"_token","nameLocation":"112:6:5","nodeType":"VariableDeclaration","scope":338,"src":"104:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":330,"name":"address","nodeType":"ElementaryTypeName","src":"104:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":333,"mutability":"mutable","name":"_maximise","nameLocation":"125:9:5","nodeType":"VariableDeclaration","scope":338,"src":"120:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":332,"name":"bool","nodeType":"ElementaryTypeName","src":"120:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"103:32:5"},"returnParameters":{"id":337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":336,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":338,"src":"159:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":335,"name":"uint256","nodeType":"ElementaryTypeName","src":"159:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"158:9:5"},"scope":339,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IYTPriceFeed","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"linearizedBaseContracts":[339],"name":"IYTPriceFeed","nameLocation":"67:12:5","scope":340,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"contracts/interfaces/IYTToken.sol":{"id":6,"ast":{"absolutePath":"contracts/interfaces/IYTToken.sol","id":353,"exportedSymbols":{"IYTToken":[352]},"nodeType":"SourceUnit","src":"32:161:6","nodes":[{"id":341,"nodeType":"PragmaDirective","src":"32:23:6","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":352,"nodeType":"ContractDefinition","src":"57:136:6","nodes":[{"id":346,"nodeType":"FunctionDefinition","src":"82:51:6","nodes":[],"functionSelector":"adcc40cb","implemented":false,"kind":"function","modifiers":[],"name":"ytPrice","nameLocation":"91:7:6","parameters":{"id":342,"nodeType":"ParameterList","parameters":[],"src":"98:2:6"},"returnParameters":{"id":345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":344,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":346,"src":"124:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":343,"name":"uint256","nodeType":"ElementaryTypeName","src":"124:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"123:9:6"},"scope":352,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":351,"nodeType":"FunctionDefinition","src":"138:53:6","nodes":[],"functionSelector":"61b4fbde","implemented":false,"kind":"function","modifiers":[],"name":"wusdPrice","nameLocation":"147:9:6","parameters":{"id":347,"nodeType":"ParameterList","parameters":[],"src":"156:2:6"},"returnParameters":{"id":350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":349,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":351,"src":"182:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":348,"name":"uint256","nodeType":"ElementaryTypeName","src":"182:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"181:9:6"},"scope":352,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IYTToken","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"linearizedBaseContracts":[352],"name":"IYTToken","nameLocation":"67:8:6","scope":353,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"contracts/interfaces/IYTVault.sol":{"id":7,"ast":{"absolutePath":"contracts/interfaces/IYTVault.sol","id":435,"exportedSymbols":{"IYTVault":[434]},"nodeType":"SourceUnit","src":"32:867:7","nodes":[{"id":354,"nodeType":"PragmaDirective","src":"32:23:7","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":434,"nodeType":"ContractDefinition","src":"57:840:7","nodes":[{"id":363,"nodeType":"FunctionDefinition","src":"82:79:7","nodes":[],"functionSelector":"2efc7660","implemented":false,"kind":"function","modifiers":[],"name":"buyUSDY","nameLocation":"91:7:7","parameters":{"id":359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":356,"mutability":"mutable","name":"_token","nameLocation":"107:6:7","nodeType":"VariableDeclaration","scope":363,"src":"99:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":355,"name":"address","nodeType":"ElementaryTypeName","src":"99:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":358,"mutability":"mutable","name":"_receiver","nameLocation":"123:9:7","nodeType":"VariableDeclaration","scope":363,"src":"115:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":357,"name":"address","nodeType":"ElementaryTypeName","src":"115:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"98:35:7"},"returnParameters":{"id":362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":361,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":363,"src":"152:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":360,"name":"uint256","nodeType":"ElementaryTypeName","src":"152:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"151:9:7"},"scope":434,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":372,"nodeType":"FunctionDefinition","src":"166:80:7","nodes":[],"functionSelector":"3d332583","implemented":false,"kind":"function","modifiers":[],"name":"sellUSDY","nameLocation":"175:8:7","parameters":{"id":368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":365,"mutability":"mutable","name":"_token","nameLocation":"192:6:7","nodeType":"VariableDeclaration","scope":372,"src":"184:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":364,"name":"address","nodeType":"ElementaryTypeName","src":"184:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":367,"mutability":"mutable","name":"_receiver","nameLocation":"208:9:7","nodeType":"VariableDeclaration","scope":372,"src":"200:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":366,"name":"address","nodeType":"ElementaryTypeName","src":"200:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"183:35:7"},"returnParameters":{"id":371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":370,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":372,"src":"237:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":369,"name":"uint256","nodeType":"ElementaryTypeName","src":"237:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"236:9:7"},"scope":434,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":383,"nodeType":"FunctionDefinition","src":"251:97:7","nodes":[],"functionSelector":"93316212","implemented":false,"kind":"function","modifiers":[],"name":"swap","nameLocation":"260:4:7","parameters":{"id":379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":374,"mutability":"mutable","name":"_tokenIn","nameLocation":"273:8:7","nodeType":"VariableDeclaration","scope":383,"src":"265:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":373,"name":"address","nodeType":"ElementaryTypeName","src":"265:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":376,"mutability":"mutable","name":"_tokenOut","nameLocation":"291:9:7","nodeType":"VariableDeclaration","scope":383,"src":"283:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":375,"name":"address","nodeType":"ElementaryTypeName","src":"283:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":378,"mutability":"mutable","name":"_receiver","nameLocation":"310:9:7","nodeType":"VariableDeclaration","scope":383,"src":"302:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":377,"name":"address","nodeType":"ElementaryTypeName","src":"302:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"264:56:7"},"returnParameters":{"id":382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":381,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":383,"src":"339:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":380,"name":"uint256","nodeType":"ElementaryTypeName","src":"339:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"338:9:7"},"scope":434,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":390,"nodeType":"FunctionDefinition","src":"353:70:7","nodes":[],"functionSelector":"bab3e9e6","implemented":false,"kind":"function","modifiers":[],"name":"getPoolValue","nameLocation":"362:12:7","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":385,"mutability":"mutable","name":"_maximise","nameLocation":"380:9:7","nodeType":"VariableDeclaration","scope":390,"src":"375:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":384,"name":"bool","nodeType":"ElementaryTypeName","src":"375:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"374:16:7"},"returnParameters":{"id":389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":390,"src":"414:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":387,"name":"uint256","nodeType":"ElementaryTypeName","src":"414:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"413:9:7"},"scope":434,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":399,"nodeType":"FunctionDefinition","src":"428:82:7","nodes":[],"functionSelector":"76d69760","implemented":false,"kind":"function","modifiers":[],"name":"getPrice","nameLocation":"437:8:7","parameters":{"id":395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":392,"mutability":"mutable","name":"_token","nameLocation":"454:6:7","nodeType":"VariableDeclaration","scope":399,"src":"446:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":391,"name":"address","nodeType":"ElementaryTypeName","src":"446:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":394,"mutability":"mutable","name":"_maximise","nameLocation":"467:9:7","nodeType":"VariableDeclaration","scope":399,"src":"462:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":393,"name":"bool","nodeType":"ElementaryTypeName","src":"462:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"445:32:7"},"returnParameters":{"id":398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":397,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":399,"src":"501:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":396,"name":"uint256","nodeType":"ElementaryTypeName","src":"501:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"500:9:7"},"scope":434,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":406,"nodeType":"FunctionDefinition","src":"515:69:7","nodes":[],"functionSelector":"e124e6d2","implemented":false,"kind":"function","modifiers":[],"name":"getMaxPrice","nameLocation":"524:11:7","parameters":{"id":402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":401,"mutability":"mutable","name":"_token","nameLocation":"544:6:7","nodeType":"VariableDeclaration","scope":406,"src":"536:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":400,"name":"address","nodeType":"ElementaryTypeName","src":"536:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"535:16:7"},"returnParameters":{"id":405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":404,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":406,"src":"575:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":403,"name":"uint256","nodeType":"ElementaryTypeName","src":"575:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"574:9:7"},"scope":434,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":413,"nodeType":"FunctionDefinition","src":"589:69:7","nodes":[],"functionSelector":"81a612d6","implemented":false,"kind":"function","modifiers":[],"name":"getMinPrice","nameLocation":"598:11:7","parameters":{"id":409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":408,"mutability":"mutable","name":"_token","nameLocation":"618:6:7","nodeType":"VariableDeclaration","scope":413,"src":"610:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":407,"name":"address","nodeType":"ElementaryTypeName","src":"610:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"609:16:7"},"returnParameters":{"id":412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":413,"src":"649:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"649:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"648:9:7"},"scope":434,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":424,"nodeType":"FunctionDefinition","src":"663:121:7","nodes":[],"functionSelector":"da133816","implemented":false,"kind":"function","modifiers":[],"name":"getSwapFeeBasisPoints","nameLocation":"672:21:7","parameters":{"id":420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":415,"mutability":"mutable","name":"_tokenIn","nameLocation":"702:8:7","nodeType":"VariableDeclaration","scope":424,"src":"694:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":414,"name":"address","nodeType":"ElementaryTypeName","src":"694:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":417,"mutability":"mutable","name":"_tokenOut","nameLocation":"720:9:7","nodeType":"VariableDeclaration","scope":424,"src":"712:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":416,"name":"address","nodeType":"ElementaryTypeName","src":"712:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":419,"mutability":"mutable","name":"_usdyAmount","nameLocation":"739:11:7","nodeType":"VariableDeclaration","scope":424,"src":"731:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":418,"name":"uint256","nodeType":"ElementaryTypeName","src":"731:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"693:58:7"},"returnParameters":{"id":423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":422,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":424,"src":"775:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":421,"name":"uint256","nodeType":"ElementaryTypeName","src":"775:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"774:9:7"},"scope":434,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":433,"nodeType":"FunctionDefinition","src":"789:106:7","nodes":[],"functionSelector":"802f9270","implemented":false,"kind":"function","modifiers":[],"name":"getRedemptionFeeBasisPoints","nameLocation":"798:27:7","parameters":{"id":429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":426,"mutability":"mutable","name":"_token","nameLocation":"834:6:7","nodeType":"VariableDeclaration","scope":433,"src":"826:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":425,"name":"address","nodeType":"ElementaryTypeName","src":"826:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":428,"mutability":"mutable","name":"_usdyAmount","nameLocation":"850:11:7","nodeType":"VariableDeclaration","scope":433,"src":"842:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":427,"name":"uint256","nodeType":"ElementaryTypeName","src":"842:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"825:37:7"},"returnParameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":431,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":433,"src":"886:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"886:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"885:9:7"},"scope":434,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IYTVault","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"linearizedBaseContracts":[434],"name":"IYTVault","nameLocation":"67:8:7","scope":435,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"contracts/vault/YTAssetFactory.sol":{"id":8,"ast":{"absolutePath":"contracts/vault/YTAssetFactory.sol","id":1514,"exportedSymbols":{"ContextUpgradeable":[11497],"ERC1967Proxy":[12230],"ERC1967Utils":[12524],"ERC20Upgradeable":[11451],"IERC1363":[12016],"IERC1822Proxiable":[12055],"IERC20":[12648],"IERC20Errors":[12097],"IERC20Metadata":[12674],"Initializable":[10652],"OwnableUpgradeable":[10384],"PausableUpgradeable":[11657],"Proxy":[12560],"ReentrancyGuardUpgradeable":[11786],"SafeERC20":[13138],"UUPSUpgradeable":[10834],"YTAssetFactory":[1513],"YTAssetVault":[2714]},"nodeType":"SourceUnit","src":"32:14431:8","nodes":[{"id":436,"nodeType":"PragmaDirective","src":"32:23:8","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":437,"nodeType":"ImportDirective","src":"57:75:8","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":1514,"sourceUnit":10653,"symbolAliases":[],"unitAlias":""},{"id":438,"nodeType":"ImportDirective","src":"133:77:8","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":1514,"sourceUnit":10835,"symbolAliases":[],"unitAlias":""},{"id":439,"nodeType":"ImportDirective","src":"211:75:8","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":1514,"sourceUnit":10385,"symbolAliases":[],"unitAlias":""},{"id":440,"nodeType":"ImportDirective","src":"287:64:8","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","file":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","nameLocation":"-1:-1:-1","scope":1514,"sourceUnit":12231,"symbolAliases":[],"unitAlias":""},{"id":441,"nodeType":"ImportDirective","src":"352:28:8","nodes":[],"absolutePath":"contracts/vault/YTAssetVault.sol","file":"./YTAssetVault.sol","nameLocation":"-1:-1:-1","scope":1514,"sourceUnit":2715,"symbolAliases":[],"unitAlias":""},{"id":1513,"nodeType":"ContractDefinition","src":"511:13951:8","nodes":[{"id":450,"nodeType":"ErrorDefinition","src":"600:23:8","nodes":[],"errorSelector":"e6c4247b","name":"InvalidAddress","nameLocation":"606:14:8","parameters":{"id":449,"nodeType":"ParameterList","parameters":[],"src":"620:2:8"}},{"id":452,"nodeType":"ErrorDefinition","src":"628:23:8","nodes":[],"errorSelector":"aba45be0","name":"VaultNotExists","nameLocation":"634:14:8","parameters":{"id":451,"nodeType":"ParameterList","parameters":[],"src":"648:2:8"}},{"id":454,"nodeType":"ErrorDefinition","src":"656:23:8","nodes":[],"errorSelector":"34d07a32","name":"InvalidHardCap","nameLocation":"662:14:8","parameters":{"id":453,"nodeType":"ParameterList","parameters":[],"src":"676:2:8"}},{"id":457,"nodeType":"VariableDeclaration","src":"736:34:8","nodes":[],"constant":false,"documentation":{"id":455,"nodeType":"StructuredDocumentation","src":"689:42:8","text":"@notice YTAssetVault实现合约地址"},"functionSelector":"bba48a90","mutability":"mutable","name":"vaultImplementation","nameLocation":"751:19:8","scope":1513,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":456,"name":"address","nodeType":"ElementaryTypeName","src":"736:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":461,"nodeType":"VariableDeclaration","src":"830:26:8","nodes":[],"constant":false,"documentation":{"id":458,"nodeType":"StructuredDocumentation","src":"781:44:8","text":"@notice 所有创建的vault地址列表"},"functionSelector":"9094a91e","mutability":"mutable","name":"allVaults","nameLocation":"847:9:8","scope":1513,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[]"},"typeName":{"baseType":{"id":459,"name":"address","nodeType":"ElementaryTypeName","src":"830:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":460,"nodeType":"ArrayTypeName","src":"830:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"public"},{"id":466,"nodeType":"VariableDeclaration","src":"911:39:8","nodes":[],"constant":false,"documentation":{"id":462,"nodeType":"StructuredDocumentation","src":"867:39:8","text":"@notice vault地址 => 是否存在"},"functionSelector":"652b9b41","mutability":"mutable","name":"isVault","nameLocation":"943:7:8","scope":1513,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":465,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":463,"name":"address","nodeType":"ElementaryTypeName","src":"919:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"911:24:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":464,"name":"bool","nodeType":"ElementaryTypeName","src":"930:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":469,"nodeType":"VariableDeclaration","src":"1015:29:8","nodes":[],"constant":false,"documentation":{"id":467,"nodeType":"StructuredDocumentation","src":"961:49:8","text":"@notice 默认硬顶值0表示无限制"},"functionSelector":"60bf3eac","mutability":"mutable","name":"defaultHardCap","nameLocation":"1030:14:8","scope":1513,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":468,"name":"uint256","nodeType":"ElementaryTypeName","src":"1015:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":483,"nodeType":"EventDefinition","src":"1055:181:8","nodes":[],"anonymous":false,"eventSelector":"886e083bee1affc6ceee5fa0f6210a363873440f01062b989895c303d787d954","name":"VaultCreated","nameLocation":"1061:12:8","parameters":{"id":482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":471,"indexed":true,"mutability":"mutable","name":"vault","nameLocation":"1099:5:8","nodeType":"VariableDeclaration","scope":483,"src":"1083:21:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":470,"name":"address","nodeType":"ElementaryTypeName","src":"1083:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":473,"indexed":true,"mutability":"mutable","name":"manager","nameLocation":"1130:7:8","nodeType":"VariableDeclaration","scope":483,"src":"1114:23:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":472,"name":"address","nodeType":"ElementaryTypeName","src":"1114:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":475,"indexed":false,"mutability":"mutable","name":"name","nameLocation":"1154:4:8","nodeType":"VariableDeclaration","scope":483,"src":"1147:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":474,"name":"string","nodeType":"ElementaryTypeName","src":"1147:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":477,"indexed":false,"mutability":"mutable","name":"symbol","nameLocation":"1175:6:8","nodeType":"VariableDeclaration","scope":483,"src":"1168:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":476,"name":"string","nodeType":"ElementaryTypeName","src":"1168:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":479,"indexed":false,"mutability":"mutable","name":"hardCap","nameLocation":"1199:7:8","nodeType":"VariableDeclaration","scope":483,"src":"1191:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":478,"name":"uint256","nodeType":"ElementaryTypeName","src":"1191:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":481,"indexed":false,"mutability":"mutable","name":"index","nameLocation":"1224:5:8","nodeType":"VariableDeclaration","scope":483,"src":"1216:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":480,"name":"uint256","nodeType":"ElementaryTypeName","src":"1216:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1073:162:8"}},{"id":487,"nodeType":"EventDefinition","src":"1241:68:8","nodes":[],"anonymous":false,"eventSelector":"a18254b43b40616bb21983c995ff77276701b68421ab1512749ed80d91e12a85","name":"VaultImplementationUpdated","nameLocation":"1247:26:8","parameters":{"id":486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":485,"indexed":true,"mutability":"mutable","name":"newImplementation","nameLocation":"1290:17:8","nodeType":"VariableDeclaration","scope":487,"src":"1274:33:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":484,"name":"address","nodeType":"ElementaryTypeName","src":"1274:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1273:35:8"}},{"id":491,"nodeType":"EventDefinition","src":"1314:51:8","nodes":[],"anonymous":false,"eventSelector":"313330c0aba7de8d1883a630d2afa55482bc3d64e68700c5dcb3a1488205acbe","name":"DefaultHardCapSet","nameLocation":"1320:17:8","parameters":{"id":490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":489,"indexed":false,"mutability":"mutable","name":"newDefaultHardCap","nameLocation":"1346:17:8","nodeType":"VariableDeclaration","scope":491,"src":"1338:25:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":488,"name":"uint256","nodeType":"ElementaryTypeName","src":"1338:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1337:27:8"}},{"id":497,"nodeType":"EventDefinition","src":"1370:60:8","nodes":[],"anonymous":false,"eventSelector":"a665793cc0376980a860c5c155c641bf10dbf171a5913408c71bb6613aacaf09","name":"HardCapSet","nameLocation":"1376:10:8","parameters":{"id":496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":493,"indexed":true,"mutability":"mutable","name":"vault","nameLocation":"1403:5:8","nodeType":"VariableDeclaration","scope":497,"src":"1387:21:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":492,"name":"address","nodeType":"ElementaryTypeName","src":"1387:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":495,"indexed":false,"mutability":"mutable","name":"newHardCap","nameLocation":"1418:10:8","nodeType":"VariableDeclaration","scope":497,"src":"1410:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":494,"name":"uint256","nodeType":"ElementaryTypeName","src":"1410:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1386:43:8"}},{"id":505,"nodeType":"EventDefinition","src":"1435:79:8","nodes":[],"anonymous":false,"eventSelector":"8182173c5ec5828b584f228420d06be6e62aa539b8e093e4f41756d238ed35c3","name":"PricesUpdated","nameLocation":"1441:13:8","parameters":{"id":504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":499,"indexed":true,"mutability":"mutable","name":"vault","nameLocation":"1471:5:8","nodeType":"VariableDeclaration","scope":505,"src":"1455:21:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":498,"name":"address","nodeType":"ElementaryTypeName","src":"1455:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":501,"indexed":false,"mutability":"mutable","name":"wusdPrice","nameLocation":"1486:9:8","nodeType":"VariableDeclaration","scope":505,"src":"1478:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":500,"name":"uint256","nodeType":"ElementaryTypeName","src":"1478:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":503,"indexed":false,"mutability":"mutable","name":"ytPrice","nameLocation":"1505:7:8","nodeType":"VariableDeclaration","scope":505,"src":"1497:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":502,"name":"uint256","nodeType":"ElementaryTypeName","src":"1497:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1454:59:8"}},{"id":511,"nodeType":"EventDefinition","src":"1519:75:8","nodes":[],"anonymous":false,"eventSelector":"777741edb3f7326190bede5657cac675b5698ca728fb47631cedb1224d71b047","name":"NextRedemptionTimeSet","nameLocation":"1525:21:8","parameters":{"id":510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":507,"indexed":true,"mutability":"mutable","name":"vault","nameLocation":"1563:5:8","nodeType":"VariableDeclaration","scope":511,"src":"1547:21:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":506,"name":"address","nodeType":"ElementaryTypeName","src":"1547:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":509,"indexed":false,"mutability":"mutable","name":"redemptionTime","nameLocation":"1578:14:8","nodeType":"VariableDeclaration","scope":511,"src":"1570:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":508,"name":"uint256","nodeType":"ElementaryTypeName","src":"1570:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1546:47:8"}},{"id":548,"nodeType":"FunctionDefinition","src":"1763:380:8","nodes":[],"body":{"id":547,"nodeType":"Block","src":"1881:262:8","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":521,"name":"_vaultImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"1895:20:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1927:1:8","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":523,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1919:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":522,"name":"address","nodeType":"ElementaryTypeName","src":"1919:7:8","typeDescriptions":{}}},"id":525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1919:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1895:34:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":530,"nodeType":"IfStatement","src":"1891:63:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":527,"name":"InvalidAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":450,"src":"1938:14:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1938:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":529,"nodeType":"RevertStatement","src":"1931:23:8"}},{"expression":{"arguments":[{"expression":{"id":532,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1988:3:8","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1992:6:8","memberName":"sender","nodeType":"MemberAccess","src":"1988:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":531,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10244,"src":"1973:14:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1973:26:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":535,"nodeType":"ExpressionStatement","src":"1973:26:8"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":536,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10706,"src":"2009:22:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2009:24:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":538,"nodeType":"ExpressionStatement","src":"2009:24:8"},{"expression":{"id":541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":539,"name":"vaultImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":457,"src":"2052:19:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":540,"name":"_vaultImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"2074:20:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2052:42:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":542,"nodeType":"ExpressionStatement","src":"2052:42:8"},{"expression":{"id":545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":543,"name":"defaultHardCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":469,"src":"2104:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":544,"name":"_defaultHardCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":516,"src":"2121:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2104:32:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":546,"nodeType":"ExpressionStatement","src":"2104:32:8"}]},"documentation":{"id":512,"nodeType":"StructuredDocumentation","src":"1604:154:8","text":" @notice 初始化工厂\n @param _vaultImplementation YTAssetVault实现合约地址\n @param _defaultHardCap 默认硬顶值"},"functionSelector":"cd6dc687","implemented":true,"kind":"function","modifiers":[{"id":519,"kind":"modifierInvocation","modifierName":{"id":518,"name":"initializer","nameLocations":["1869:11:8"],"nodeType":"IdentifierPath","referencedDeclaration":10492,"src":"1869:11:8"},"nodeType":"ModifierInvocation","src":"1869:11:8"}],"name":"initialize","nameLocation":"1772:10:8","parameters":{"id":517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":514,"mutability":"mutable","name":"_vaultImplementation","nameLocation":"1800:20:8","nodeType":"VariableDeclaration","scope":548,"src":"1792:28:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":513,"name":"address","nodeType":"ElementaryTypeName","src":"1792:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":516,"mutability":"mutable","name":"_defaultHardCap","nameLocation":"1838:15:8","nodeType":"VariableDeclaration","scope":548,"src":"1830:23:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":515,"name":"uint256","nodeType":"ElementaryTypeName","src":"1830:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1782:77:8"},"returnParameters":{"id":520,"nodeType":"ParameterList","parameters":[],"src":"1881:0:8"},"scope":1513,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":558,"nodeType":"FunctionDefinition","src":"2274:84:8","nodes":[],"body":{"id":557,"nodeType":"Block","src":"2356:2:8","nodes":[],"statements":[]},"baseFunctions":[10788],"documentation":{"id":549,"nodeType":"StructuredDocumentation","src":"2153:116:8","text":" @notice 授权升级仅owner可调用\n @param newImplementation 新实现合约地址"},"implemented":true,"kind":"function","modifiers":[{"id":555,"kind":"modifierInvocation","modifierName":{"id":554,"name":"onlyOwner","nameLocations":["2346:9:8"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"2346:9:8"},"nodeType":"ModifierInvocation","src":"2346:9:8"}],"name":"_authorizeUpgrade","nameLocation":"2283:17:8","overrides":{"id":553,"nodeType":"OverrideSpecifier","overrides":[],"src":"2337:8:8"},"parameters":{"id":552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":551,"mutability":"mutable","name":"newImplementation","nameLocation":"2309:17:8","nodeType":"VariableDeclaration","scope":558,"src":"2301:25:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":550,"name":"address","nodeType":"ElementaryTypeName","src":"2301:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2300:27:8"},"returnParameters":{"id":556,"nodeType":"ParameterList","parameters":[],"src":"2356:0:8"},"scope":1513,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":585,"nodeType":"FunctionDefinition","src":"2488:268:8","nodes":[],"body":{"id":584,"nodeType":"Block","src":"2567:189:8","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":566,"name":"_newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"2581:18:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2611:1:8","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":568,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2603:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":567,"name":"address","nodeType":"ElementaryTypeName","src":"2603:7:8","typeDescriptions":{}}},"id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2603:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2581:32:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":575,"nodeType":"IfStatement","src":"2577:61:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":572,"name":"InvalidAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":450,"src":"2622:14:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2622:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":574,"nodeType":"RevertStatement","src":"2615:23:8"}},{"expression":{"id":578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":576,"name":"vaultImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":457,"src":"2648:19:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":577,"name":"_newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"2670:18:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2648:40:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":579,"nodeType":"ExpressionStatement","src":"2648:40:8"},{"eventCall":{"arguments":[{"id":581,"name":"_newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"2730:18:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":580,"name":"VaultImplementationUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":487,"src":"2703:26:8","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2703:46:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":583,"nodeType":"EmitStatement","src":"2698:51:8"}]},"documentation":{"id":559,"nodeType":"StructuredDocumentation","src":"2368:115:8","text":" @notice 更新YTAssetVault实现合约\n @param _newImplementation 新的实现合约地址"},"functionSelector":"53e78b6b","implemented":true,"kind":"function","modifiers":[{"id":564,"kind":"modifierInvocation","modifierName":{"id":563,"name":"onlyOwner","nameLocations":["2557:9:8"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"2557:9:8"},"nodeType":"ModifierInvocation","src":"2557:9:8"}],"name":"setVaultImplementation","nameLocation":"2497:22:8","parameters":{"id":562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":561,"mutability":"mutable","name":"_newImplementation","nameLocation":"2528:18:8","nodeType":"VariableDeclaration","scope":585,"src":"2520:26:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":560,"name":"address","nodeType":"ElementaryTypeName","src":"2520:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2519:28:8"},"returnParameters":{"id":565,"nodeType":"ParameterList","parameters":[],"src":"2567:0:8"},"scope":1513,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":602,"nodeType":"FunctionDefinition","src":"2868:169:8","nodes":[],"body":{"id":601,"nodeType":"Block","src":"2939:98:8","nodes":[],"statements":[{"expression":{"id":595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":593,"name":"defaultHardCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":469,"src":"2949:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":594,"name":"_defaultHardCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":588,"src":"2966:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2949:32:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":596,"nodeType":"ExpressionStatement","src":"2949:32:8"},{"eventCall":{"arguments":[{"id":598,"name":"_defaultHardCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":588,"src":"3014:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":597,"name":"DefaultHardCapSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":491,"src":"2996:17:8","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2996:34:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":600,"nodeType":"EmitStatement","src":"2991:39:8"}]},"documentation":{"id":586,"nodeType":"StructuredDocumentation","src":"2766:97:8","text":" @notice 设置默认硬顶\n @param _defaultHardCap 新的默认硬顶值"},"functionSelector":"03213e9e","implemented":true,"kind":"function","modifiers":[{"id":591,"kind":"modifierInvocation","modifierName":{"id":590,"name":"onlyOwner","nameLocations":["2929:9:8"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"2929:9:8"},"nodeType":"ModifierInvocation","src":"2929:9:8"}],"name":"setDefaultHardCap","nameLocation":"2877:17:8","parameters":{"id":589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":588,"mutability":"mutable","name":"_defaultHardCap","nameLocation":"2903:15:8","nodeType":"VariableDeclaration","scope":602,"src":"2895:23:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":587,"name":"uint256","nodeType":"ElementaryTypeName","src":"2895:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2894:25:8"},"returnParameters":{"id":592,"nodeType":"ParameterList","parameters":[],"src":"2939:0:8"},"scope":1513,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":699,"nodeType":"FunctionDefinition","src":"3632:1256:8","nodes":[],"body":{"id":698,"nodeType":"Block","src":"3938:950:8","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":626,"name":"_manager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":609,"src":"3952:8:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":629,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3972:1:8","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":628,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3964:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":627,"name":"address","nodeType":"ElementaryTypeName","src":"3964:7:8","typeDescriptions":{}}},"id":630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3964:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3952:22:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":635,"nodeType":"IfStatement","src":"3948:51:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":632,"name":"InvalidAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":450,"src":"3983:14:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3983:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":634,"nodeType":"RevertStatement","src":"3976:23:8"}},{"assignments":[637],"declarations":[{"constant":false,"id":637,"mutability":"mutable","name":"actualHardCap","nameLocation":"4072:13:8","nodeType":"VariableDeclaration","scope":698,"src":"4064:21:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":636,"name":"uint256","nodeType":"ElementaryTypeName","src":"4064:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":644,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":638,"name":"_hardCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":611,"src":"4088:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4100:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4088:13:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":642,"name":"_hardCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":611,"src":"4121:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4088:41:8","trueExpression":{"id":641,"name":"defaultHardCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":469,"src":"4104:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4064:65:8"},{"assignments":[646],"declarations":[{"constant":false,"id":646,"mutability":"mutable","name":"initData","nameLocation":"4194:8:8","nodeType":"VariableDeclaration","scope":698,"src":"4181:21:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":645,"name":"bytes","nodeType":"ElementaryTypeName","src":"4181:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":661,"initialValue":{"arguments":[{"expression":{"expression":{"id":649,"name":"YTAssetVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2714,"src":"4241:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_YTAssetVault_$2714_$","typeString":"type(contract YTAssetVault)"}},"id":650,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4254:10:8","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":1806,"src":"4241:23:8","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function YTAssetVault.initialize(string memory,string memory,address,uint256,address,uint256,uint256,uint256)"}},"id":651,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4265:8:8","memberName":"selector","nodeType":"MemberAccess","src":"4241:32:8","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":652,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":605,"src":"4287:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":653,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":607,"src":"4306:7:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":654,"name":"_manager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":609,"src":"4327:8:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":655,"name":"actualHardCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"4349:13:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":656,"name":"_wusd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":613,"src":"4376:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":657,"name":"_redemptionTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"4395:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":658,"name":"_initialWusdPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"4424:17:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":659,"name":"_initialYtPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":619,"src":"4455:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":647,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4205:3:8","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":648,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4209:18:8","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4205:22:8","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4205:275:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4181:299:8"},{"expression":{"id":672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":662,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":624,"src":"4529:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":668,"name":"vaultImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":457,"src":"4562:19:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":669,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"4583:8:8","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":667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"4545:16:8","typeDescriptions":{"typeIdentifier":"t_function_creation_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_ERC1967Proxy_$12230_$","typeString":"function (address,bytes memory) payable returns (contract ERC1967Proxy)"},"typeName":{"id":666,"nodeType":"UserDefinedTypeName","pathNode":{"id":665,"name":"ERC1967Proxy","nameLocations":["4549:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":12230,"src":"4549:12:8"},"referencedDeclaration":12230,"src":"4549:12:8","typeDescriptions":{"typeIdentifier":"t_contract$_ERC1967Proxy_$12230","typeString":"contract ERC1967Proxy"}}},"id":670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4545:47:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC1967Proxy_$12230","typeString":"contract ERC1967Proxy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC1967Proxy_$12230","typeString":"contract ERC1967Proxy"}],"id":664,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4537:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":663,"name":"address","nodeType":"ElementaryTypeName","src":"4537:7:8","typeDescriptions":{}}},"id":671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4537:56:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4529:64:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":673,"nodeType":"ExpressionStatement","src":"4529:64:8"},{"expression":{"arguments":[{"id":677,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":624,"src":"4656:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":674,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":461,"src":"4641:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4651:4:8","memberName":"push","nodeType":"MemberAccess","src":"4641:14:8","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer,address)"}},"id":678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4641:21:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":679,"nodeType":"ExpressionStatement","src":"4641:21:8"},{"expression":{"id":684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":680,"name":"isVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":466,"src":"4672:7:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":682,"indexExpression":{"id":681,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":624,"src":"4680:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4672:14:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":683,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4689:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4672:21:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":685,"nodeType":"ExpressionStatement","src":"4672:21:8"},{"eventCall":{"arguments":[{"id":687,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":624,"src":"4743:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":688,"name":"_manager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":609,"src":"4762:8:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":689,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":605,"src":"4784:5:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":690,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":607,"src":"4803:7:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":691,"name":"actualHardCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"4824:13:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":692,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":461,"src":"4851:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4861:6:8","memberName":"length","nodeType":"MemberAccess","src":"4851:16:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4870:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4851:20:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":686,"name":"VaultCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":483,"src":"4717:12:8","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,string memory,string memory,uint256,uint256)"}},"id":696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4717:164:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":697,"nodeType":"EmitStatement","src":"4712:169:8"}]},"documentation":{"id":603,"nodeType":"StructuredDocumentation","src":"3047:580:8","text":" @notice 创建新的YTAssetVault\n @param _name YT代币名称\n @param _symbol YT代币符号\n @param _manager 管理员地址\n @param _hardCap 硬顶限制0表示使用默认值\n @param _wusd WUSD代币地址传0使用默认地址\n @param _redemptionTime 赎回时间Unix时间戳\n @param _initialWusdPrice 初始WUSD价格精度1e30传0则使用默认值1.0\n @param _initialYtPrice 初始YT价格精度1e30传0则使用默认值1.0\n @return vault 新创建的vault地址"},"functionSelector":"e7f6b6e8","implemented":true,"kind":"function","modifiers":[{"id":622,"kind":"modifierInvocation","modifierName":{"id":621,"name":"onlyOwner","nameLocations":["3904:9:8"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"3904:9:8"},"nodeType":"ModifierInvocation","src":"3904:9:8"}],"name":"createVault","nameLocation":"3641:11:8","parameters":{"id":620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":605,"mutability":"mutable","name":"_name","nameLocation":"3676:5:8","nodeType":"VariableDeclaration","scope":699,"src":"3662:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":604,"name":"string","nodeType":"ElementaryTypeName","src":"3662:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":607,"mutability":"mutable","name":"_symbol","nameLocation":"3705:7:8","nodeType":"VariableDeclaration","scope":699,"src":"3691:21:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":606,"name":"string","nodeType":"ElementaryTypeName","src":"3691:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":609,"mutability":"mutable","name":"_manager","nameLocation":"3730:8:8","nodeType":"VariableDeclaration","scope":699,"src":"3722:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":608,"name":"address","nodeType":"ElementaryTypeName","src":"3722:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":611,"mutability":"mutable","name":"_hardCap","nameLocation":"3756:8:8","nodeType":"VariableDeclaration","scope":699,"src":"3748:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":610,"name":"uint256","nodeType":"ElementaryTypeName","src":"3748:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":613,"mutability":"mutable","name":"_wusd","nameLocation":"3782:5:8","nodeType":"VariableDeclaration","scope":699,"src":"3774:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":612,"name":"address","nodeType":"ElementaryTypeName","src":"3774:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":615,"mutability":"mutable","name":"_redemptionTime","nameLocation":"3805:15:8","nodeType":"VariableDeclaration","scope":699,"src":"3797:23:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":614,"name":"uint256","nodeType":"ElementaryTypeName","src":"3797:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":617,"mutability":"mutable","name":"_initialWusdPrice","nameLocation":"3838:17:8","nodeType":"VariableDeclaration","scope":699,"src":"3830:25:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":616,"name":"uint256","nodeType":"ElementaryTypeName","src":"3830:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":619,"mutability":"mutable","name":"_initialYtPrice","nameLocation":"3873:15:8","nodeType":"VariableDeclaration","scope":699,"src":"3865:23:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":618,"name":"uint256","nodeType":"ElementaryTypeName","src":"3865:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3652:242:8"},"returnParameters":{"id":625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":624,"mutability":"mutable","name":"vault","nameLocation":"3931:5:8","nodeType":"VariableDeclaration","scope":699,"src":"3923:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":623,"name":"address","nodeType":"ElementaryTypeName","src":"3923:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3922:15:8"},"scope":1513,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":821,"nodeType":"FunctionDefinition","src":"5439:1183:8","nodes":[],"body":{"id":820,"nodeType":"Block","src":"5806:816:8","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":730,"name":"_names","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":703,"src":"5837:6:8","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5844:6:8","memberName":"length","nodeType":"MemberAccess","src":"5837:13:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":732,"name":"_symbols","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":706,"src":"5854:8:8","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5863:6:8","memberName":"length","nodeType":"MemberAccess","src":"5854:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5837:32:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":735,"name":"_names","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":703,"src":"5885:6:8","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5892:6:8","memberName":"length","nodeType":"MemberAccess","src":"5885:13:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":737,"name":"_managers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":709,"src":"5902:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5912:6:8","memberName":"length","nodeType":"MemberAccess","src":"5902:16:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5885:33:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5837:81:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":741,"name":"_names","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":703,"src":"5934:6:8","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5941:6:8","memberName":"length","nodeType":"MemberAccess","src":"5934:13:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":743,"name":"_hardCaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":712,"src":"5951:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5961:6:8","memberName":"length","nodeType":"MemberAccess","src":"5951:16:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5934:33:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5837:130:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":747,"name":"_names","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":703,"src":"5983:6:8","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5990:6:8","memberName":"length","nodeType":"MemberAccess","src":"5983:13:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":749,"name":"_redemptionTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":717,"src":"6000:16:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6017:6:8","memberName":"length","nodeType":"MemberAccess","src":"6000:23:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5983:40:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5837:186:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":753,"name":"_names","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":703,"src":"6039:6:8","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6046:6:8","memberName":"length","nodeType":"MemberAccess","src":"6039:13:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":755,"name":"_initialWusdPrices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":720,"src":"6056:18:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6075:6:8","memberName":"length","nodeType":"MemberAccess","src":"6056:25:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6039:42:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5837:244:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":759,"name":"_names","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":703,"src":"6097:6:8","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6104:6:8","memberName":"length","nodeType":"MemberAccess","src":"6097:13:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":761,"name":"_initialYtPrices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":723,"src":"6114:16:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6131:6:8","memberName":"length","nodeType":"MemberAccess","src":"6114:23:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6097:40:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5837:300:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c656e677468206d69736d61746368","id":765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6151:17:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_bb46a6fe2ea6b18f462b236ffc808abf66026114a0bc6a6c72c11149e00d9ea8","typeString":"literal_string \"Length mismatch\""},"value":"Length mismatch"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bb46a6fe2ea6b18f462b236ffc808abf66026114a0bc6a6c72c11149e00d9ea8","typeString":"literal_string \"Length mismatch\""}],"id":729,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5816:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5816:362:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":767,"nodeType":"ExpressionStatement","src":"5816:362:8"},{"expression":{"id":775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":768,"name":"vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":727,"src":"6197:6:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":772,"name":"_names","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":703,"src":"6220:6:8","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6227:6:8","memberName":"length","nodeType":"MemberAccess","src":"6220:13:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":771,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6206:13:8","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":769,"name":"address","nodeType":"ElementaryTypeName","src":"6210:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":770,"nodeType":"ArrayTypeName","src":"6210:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6206:28:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"6197:37:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":776,"nodeType":"ExpressionStatement","src":"6197:37:8"},{"body":{"id":818,"nodeType":"Block","src":"6297:319:8","statements":[{"expression":{"id":816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":788,"name":"vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":727,"src":"6311:6:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":790,"indexExpression":{"id":789,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"6318:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6311:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":793,"name":"_names","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":703,"src":"6357:6:8","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":795,"indexExpression":{"id":794,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"6364:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6357:9:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"baseExpression":{"id":796,"name":"_symbols","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":706,"src":"6384:8:8","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":798,"indexExpression":{"id":797,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"6393:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6384:11:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"baseExpression":{"id":799,"name":"_managers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":709,"src":"6413:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":801,"indexExpression":{"id":800,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"6423:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6413:12:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":802,"name":"_hardCaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":712,"src":"6443:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":804,"indexExpression":{"id":803,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"6453:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6443:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":805,"name":"_wusd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":714,"src":"6473:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":806,"name":"_redemptionTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":717,"src":"6496:16:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":808,"indexExpression":{"id":807,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"6513:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6496:19:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":809,"name":"_initialWusdPrices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":720,"src":"6533:18:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":811,"indexExpression":{"id":810,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"6552:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6533:21:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":812,"name":"_initialYtPrices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":723,"src":"6572:16:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":814,"indexExpression":{"id":813,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"6589:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6572:19:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":791,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6323:4:8","typeDescriptions":{"typeIdentifier":"t_contract$_YTAssetFactory_$1513","typeString":"contract YTAssetFactory"}},"id":792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6328:11:8","memberName":"createVault","nodeType":"MemberAccess","referencedDeclaration":699,"src":"6323:16:8","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_address_$","typeString":"function (string memory,string memory,address,uint256,address,uint256,uint256,uint256) external returns (address)"}},"id":815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6323:282:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6311:294:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":817,"nodeType":"ExpressionStatement","src":"6311:294:8"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":781,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"6273:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":782,"name":"_names","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":703,"src":"6277:6:8","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6284:6:8","memberName":"length","nodeType":"MemberAccess","src":"6277:13:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6273:17:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":819,"initializationExpression":{"assignments":[778],"declarations":[{"constant":false,"id":778,"mutability":"mutable","name":"i","nameLocation":"6266:1:8","nodeType":"VariableDeclaration","scope":819,"src":"6258:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":777,"name":"uint256","nodeType":"ElementaryTypeName","src":"6258:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":780,"initialValue":{"hexValue":"30","id":779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6270:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6258:13:8"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6292:3:8","subExpression":{"id":785,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"6292:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":787,"nodeType":"ExpressionStatement","src":"6292:3:8"},"nodeType":"ForStatement","src":"6253:363:8"}]},"documentation":{"id":700,"nodeType":"StructuredDocumentation","src":"4898:536:8","text":" @notice 批量创建vault\n @param _names YT代币名称数组\n @param _symbols YT代币符号数组\n @param _managers 管理员地址数组\n @param _hardCaps 硬顶数组\n @param _wusd WUSD代币地址传0使用默认地址\n @param _redemptionTimes 赎回时间数组Unix时间戳\n @param _initialWusdPrices 初始WUSD价格数组精度1e30\n @param _initialYtPrices 初始YT价格数组精度1e30\n @return vaults 创建的vault地址数组"},"functionSelector":"818e32f5","implemented":true,"kind":"function","modifiers":[],"name":"createVaultBatch","nameLocation":"5448:16:8","parameters":{"id":724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":703,"mutability":"mutable","name":"_names","nameLocation":"5490:6:8","nodeType":"VariableDeclaration","scope":821,"src":"5474:22:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":701,"name":"string","nodeType":"ElementaryTypeName","src":"5474:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":702,"nodeType":"ArrayTypeName","src":"5474:8:8","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":706,"mutability":"mutable","name":"_symbols","nameLocation":"5522:8:8","nodeType":"VariableDeclaration","scope":821,"src":"5506:24:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":704,"name":"string","nodeType":"ElementaryTypeName","src":"5506:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":705,"nodeType":"ArrayTypeName","src":"5506:8:8","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"},{"constant":false,"id":709,"mutability":"mutable","name":"_managers","nameLocation":"5557:9:8","nodeType":"VariableDeclaration","scope":821,"src":"5540:26:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":707,"name":"address","nodeType":"ElementaryTypeName","src":"5540:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":708,"nodeType":"ArrayTypeName","src":"5540:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":712,"mutability":"mutable","name":"_hardCaps","nameLocation":"5593:9:8","nodeType":"VariableDeclaration","scope":821,"src":"5576:26:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":710,"name":"uint256","nodeType":"ElementaryTypeName","src":"5576:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":711,"nodeType":"ArrayTypeName","src":"5576:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":714,"mutability":"mutable","name":"_wusd","nameLocation":"5620:5:8","nodeType":"VariableDeclaration","scope":821,"src":"5612:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":713,"name":"address","nodeType":"ElementaryTypeName","src":"5612:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":717,"mutability":"mutable","name":"_redemptionTimes","nameLocation":"5652:16:8","nodeType":"VariableDeclaration","scope":821,"src":"5635:33:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":715,"name":"uint256","nodeType":"ElementaryTypeName","src":"5635:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":716,"nodeType":"ArrayTypeName","src":"5635:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":720,"mutability":"mutable","name":"_initialWusdPrices","nameLocation":"5695:18:8","nodeType":"VariableDeclaration","scope":821,"src":"5678:35:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":718,"name":"uint256","nodeType":"ElementaryTypeName","src":"5678:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":719,"nodeType":"ArrayTypeName","src":"5678:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":723,"mutability":"mutable","name":"_initialYtPrices","nameLocation":"5740:16:8","nodeType":"VariableDeclaration","scope":821,"src":"5723:33:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":721,"name":"uint256","nodeType":"ElementaryTypeName","src":"5723:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":722,"nodeType":"ArrayTypeName","src":"5723:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5464:298:8"},"returnParameters":{"id":728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":727,"mutability":"mutable","name":"vaults","nameLocation":"5798:6:8","nodeType":"VariableDeclaration","scope":821,"src":"5781:23:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":725,"name":"address","nodeType":"ElementaryTypeName","src":"5781:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":726,"nodeType":"ArrayTypeName","src":"5781:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"5780:25:8"},"scope":1513,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":852,"nodeType":"FunctionDefinition","src":"6762:238:8","nodes":[],"body":{"id":851,"nodeType":"Block","src":"6835:165:8","nodes":[],"statements":[{"condition":{"id":834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6849:16:8","subExpression":{"baseExpression":{"id":831,"name":"isVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":466,"src":"6850:7:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":833,"indexExpression":{"id":832,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":824,"src":"6858:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6850:15:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":838,"nodeType":"IfStatement","src":"6845:45:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":835,"name":"VaultNotExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"6874:14:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6874:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":837,"nodeType":"RevertStatement","src":"6867:23:8"}},{"expression":{"arguments":[{"id":843,"name":"_hardCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"6941:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":840,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":824,"src":"6922:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":839,"name":"YTAssetVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2714,"src":"6909:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_YTAssetVault_$2714_$","typeString":"type(contract YTAssetVault)"}},"id":841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6909:20:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_YTAssetVault_$2714","typeString":"contract YTAssetVault"}},"id":842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6930:10:8","memberName":"setHardCap","nodeType":"MemberAccess","referencedDeclaration":1841,"src":"6909:31:8","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6909:41:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":845,"nodeType":"ExpressionStatement","src":"6909:41:8"},{"eventCall":{"arguments":[{"id":847,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":824,"src":"6976:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":848,"name":"_hardCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"6984:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":846,"name":"HardCapSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":497,"src":"6965:10:8","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6965:28:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":850,"nodeType":"EmitStatement","src":"6960:33:8"}]},"documentation":{"id":822,"nodeType":"StructuredDocumentation","src":"6632:125:8","text":" @notice 设置指定vault的硬顶\n @param _vault vault地址\n @param _hardCap 新的硬顶值"},"functionSelector":"ece3221d","implemented":true,"kind":"function","modifiers":[{"id":829,"kind":"modifierInvocation","modifierName":{"id":828,"name":"onlyOwner","nameLocations":["6825:9:8"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"6825:9:8"},"nodeType":"ModifierInvocation","src":"6825:9:8"}],"name":"setHardCap","nameLocation":"6771:10:8","parameters":{"id":827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":824,"mutability":"mutable","name":"_vault","nameLocation":"6790:6:8","nodeType":"VariableDeclaration","scope":852,"src":"6782:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":823,"name":"address","nodeType":"ElementaryTypeName","src":"6782:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":826,"mutability":"mutable","name":"_hardCap","nameLocation":"6806:8:8","nodeType":"VariableDeclaration","scope":852,"src":"6798:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"6798:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6781:34:8"},"returnParameters":{"id":830,"nodeType":"ParameterList","parameters":[],"src":"6835:0:8"},"scope":1513,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":917,"nodeType":"FunctionDefinition","src":"7140:454:8","nodes":[],"body":{"id":916,"nodeType":"Block","src":"7260:334:8","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":865,"name":"_vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":856,"src":"7278:7:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7286:6:8","memberName":"length","nodeType":"MemberAccess","src":"7278:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":867,"name":"_hardCaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":859,"src":"7296:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7306:6:8","memberName":"length","nodeType":"MemberAccess","src":"7296:16:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7278:34:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c656e677468206d69736d61746368","id":870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7314:17:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_bb46a6fe2ea6b18f462b236ffc808abf66026114a0bc6a6c72c11149e00d9ea8","typeString":"literal_string \"Length mismatch\""},"value":"Length mismatch"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bb46a6fe2ea6b18f462b236ffc808abf66026114a0bc6a6c72c11149e00d9ea8","typeString":"literal_string \"Length mismatch\""}],"id":864,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7270:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7270:62:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":872,"nodeType":"ExpressionStatement","src":"7270:62:8"},{"body":{"id":914,"nodeType":"Block","src":"7396:192:8","statements":[{"condition":{"id":889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7414:20:8","subExpression":{"baseExpression":{"id":884,"name":"isVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":466,"src":"7415:7:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":888,"indexExpression":{"baseExpression":{"id":885,"name":"_vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":856,"src":"7423:7:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":887,"indexExpression":{"id":886,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":874,"src":"7431:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7423:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7415:19:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":893,"nodeType":"IfStatement","src":"7410:49:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":890,"name":"VaultNotExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"7443:14:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7443:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":892,"nodeType":"RevertStatement","src":"7436:23:8"}},{"expression":{"arguments":[{"baseExpression":{"id":900,"name":"_hardCaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":859,"src":"7509:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":902,"indexExpression":{"id":901,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":874,"src":"7519:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7509:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"baseExpression":{"id":895,"name":"_vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":856,"src":"7486:7:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":897,"indexExpression":{"id":896,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":874,"src":"7494:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7486:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":894,"name":"YTAssetVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2714,"src":"7473:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_YTAssetVault_$2714_$","typeString":"type(contract YTAssetVault)"}},"id":898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7473:24:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_YTAssetVault_$2714","typeString":"contract YTAssetVault"}},"id":899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7498:10:8","memberName":"setHardCap","nodeType":"MemberAccess","referencedDeclaration":1841,"src":"7473:35:8","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7473:49:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":904,"nodeType":"ExpressionStatement","src":"7473:49:8"},{"eventCall":{"arguments":[{"baseExpression":{"id":906,"name":"_vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":856,"src":"7552:7:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":908,"indexExpression":{"id":907,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":874,"src":"7560:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7552:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":909,"name":"_hardCaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":859,"src":"7564:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":911,"indexExpression":{"id":910,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":874,"src":"7574:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7564:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":905,"name":"HardCapSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":497,"src":"7541:10:8","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7541:36:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":913,"nodeType":"EmitStatement","src":"7536:41:8"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":877,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":874,"src":"7371:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":878,"name":"_vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":856,"src":"7375:7:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7383:6:8","memberName":"length","nodeType":"MemberAccess","src":"7375:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7371:18:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":915,"initializationExpression":{"assignments":[874],"declarations":[{"constant":false,"id":874,"mutability":"mutable","name":"i","nameLocation":"7364:1:8","nodeType":"VariableDeclaration","scope":915,"src":"7356:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":873,"name":"uint256","nodeType":"ElementaryTypeName","src":"7356:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":876,"initialValue":{"hexValue":"30","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7368:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7356:13:8"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7391:3:8","subExpression":{"id":881,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":874,"src":"7391:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":883,"nodeType":"ExpressionStatement","src":"7391:3:8"},"nodeType":"ForStatement","src":"7351:237:8"}]},"documentation":{"id":853,"nodeType":"StructuredDocumentation","src":"7010:125:8","text":" @notice 批量设置硬顶\n @param _vaults vault地址数组\n @param _hardCaps 硬顶值数组"},"functionSelector":"98d59b61","implemented":true,"kind":"function","modifiers":[{"id":862,"kind":"modifierInvocation","modifierName":{"id":861,"name":"onlyOwner","nameLocations":["7250:9:8"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"7250:9:8"},"nodeType":"ModifierInvocation","src":"7250:9:8"}],"name":"setHardCapBatch","nameLocation":"7149:15:8","parameters":{"id":860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":856,"mutability":"mutable","name":"_vaults","nameLocation":"7191:7:8","nodeType":"VariableDeclaration","scope":917,"src":"7174:24:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":854,"name":"address","nodeType":"ElementaryTypeName","src":"7174:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":855,"nodeType":"ArrayTypeName","src":"7174:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":859,"mutability":"mutable","name":"_hardCaps","nameLocation":"7225:9:8","nodeType":"VariableDeclaration","scope":917,"src":"7208:26:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":857,"name":"uint256","nodeType":"ElementaryTypeName","src":"7208:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":858,"nodeType":"ArrayTypeName","src":"7208:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"7164:76:8"},"returnParameters":{"id":863,"nodeType":"ParameterList","parameters":[],"src":"7260:0:8"},"scope":1513,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":953,"nodeType":"FunctionDefinition","src":"7734:261:8","nodes":[],"body":{"id":952,"nodeType":"Block","src":"7812:183:8","nodes":[],"statements":[{"condition":{"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7826:16:8","subExpression":{"baseExpression":{"id":927,"name":"isVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":466,"src":"7827:7:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":929,"indexExpression":{"id":928,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":920,"src":"7835:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7827:15:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":934,"nodeType":"IfStatement","src":"7822:45:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":931,"name":"VaultNotExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"7851:14:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7851:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":933,"nodeType":"RevertStatement","src":"7844:23:8"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":935,"name":"_manager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":922,"src":"7881:8:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7901:1:8","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":937,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7893:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":936,"name":"address","nodeType":"ElementaryTypeName","src":"7893:7:8","typeDescriptions":{}}},"id":939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7893:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7881:22:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":944,"nodeType":"IfStatement","src":"7877:51:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":941,"name":"InvalidAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":450,"src":"7912:14:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7912:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":943,"nodeType":"RevertStatement","src":"7905:23:8"}},{"expression":{"arguments":[{"id":949,"name":"_manager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":922,"src":"7979:8:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":946,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":920,"src":"7960:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":945,"name":"YTAssetVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2714,"src":"7947:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_YTAssetVault_$2714_$","typeString":"type(contract YTAssetVault)"}},"id":947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7947:20:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_YTAssetVault_$2714","typeString":"contract YTAssetVault"}},"id":948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7968:10:8","memberName":"setManager","nodeType":"MemberAccess","referencedDeclaration":1858,"src":"7947:31:8","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7947:41:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":951,"nodeType":"ExpressionStatement","src":"7947:41:8"}]},"documentation":{"id":918,"nodeType":"StructuredDocumentation","src":"7604:125:8","text":" @notice 设置vault的管理员\n @param _vault vault地址\n @param _manager 新管理员地址"},"functionSelector":"79129225","implemented":true,"kind":"function","modifiers":[{"id":925,"kind":"modifierInvocation","modifierName":{"id":924,"name":"onlyOwner","nameLocations":["7802:9:8"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"7802:9:8"},"nodeType":"ModifierInvocation","src":"7802:9:8"}],"name":"setVaultManager","nameLocation":"7743:15:8","parameters":{"id":923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":920,"mutability":"mutable","name":"_vault","nameLocation":"7767:6:8","nodeType":"VariableDeclaration","scope":953,"src":"7759:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":919,"name":"address","nodeType":"ElementaryTypeName","src":"7759:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":922,"mutability":"mutable","name":"_manager","nameLocation":"7783:8:8","nodeType":"VariableDeclaration","scope":953,"src":"7775:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":921,"name":"address","nodeType":"ElementaryTypeName","src":"7775:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7758:34:8"},"returnParameters":{"id":926,"nodeType":"ParameterList","parameters":[],"src":"7812:0:8"},"scope":1513,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":984,"nodeType":"FunctionDefinition","src":"8171:309:8","nodes":[],"body":{"id":983,"nodeType":"Block","src":"8271:209:8","nodes":[],"statements":[{"condition":{"id":966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8285:16:8","subExpression":{"baseExpression":{"id":963,"name":"isVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":466,"src":"8286:7:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":965,"indexExpression":{"id":964,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":956,"src":"8294:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8286:15:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":970,"nodeType":"IfStatement","src":"8281:45:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":967,"name":"VaultNotExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"8310:14:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8310:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":969,"nodeType":"RevertStatement","src":"8303:23:8"}},{"expression":{"arguments":[{"id":975,"name":"_nextRedemptionTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":958,"src":"8388:19:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":972,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":956,"src":"8358:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":971,"name":"YTAssetVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2714,"src":"8345:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_YTAssetVault_$2714_$","typeString":"type(contract YTAssetVault)"}},"id":973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8345:20:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_YTAssetVault_$2714","typeString":"contract YTAssetVault"}},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8366:21:8","memberName":"setNextRedemptionTime","nodeType":"MemberAccess","referencedDeclaration":1895,"src":"8345:42:8","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8345:63:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":977,"nodeType":"ExpressionStatement","src":"8345:63:8"},{"eventCall":{"arguments":[{"id":979,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":956,"src":"8445:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":980,"name":"_nextRedemptionTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":958,"src":"8453:19:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":978,"name":"NextRedemptionTimeSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"8423:21:8","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8423:50:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":982,"nodeType":"EmitStatement","src":"8418:55:8"}]},"documentation":{"id":954,"nodeType":"StructuredDocumentation","src":"8005:161:8","text":" @notice 设置vault的下一个赎回时间\n @param _vault vault地址\n @param _nextRedemptionTime 赎回时间Unix时间戳"},"functionSelector":"b18800ee","implemented":true,"kind":"function","modifiers":[{"id":961,"kind":"modifierInvocation","modifierName":{"id":960,"name":"onlyOwner","nameLocations":["8261:9:8"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"8261:9:8"},"nodeType":"ModifierInvocation","src":"8261:9:8"}],"name":"setVaultNextRedemptionTime","nameLocation":"8180:26:8","parameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":956,"mutability":"mutable","name":"_vault","nameLocation":"8215:6:8","nodeType":"VariableDeclaration","scope":984,"src":"8207:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":955,"name":"address","nodeType":"ElementaryTypeName","src":"8207:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":958,"mutability":"mutable","name":"_nextRedemptionTime","nameLocation":"8231:19:8","nodeType":"VariableDeclaration","scope":984,"src":"8223:27:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"8223:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8206:45:8"},"returnParameters":{"id":962,"nodeType":"ParameterList","parameters":[],"src":"8271:0:8"},"scope":1513,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1035,"nodeType":"FunctionDefinition","src":"8642:426:8","nodes":[],"body":{"id":1034,"nodeType":"Block","src":"8779:289:8","nodes":[],"statements":[{"body":{"id":1032,"nodeType":"Block","src":"8834:228:8","statements":[{"condition":{"id":1011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8852:20:8","subExpression":{"baseExpression":{"id":1006,"name":"isVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":466,"src":"8853:7:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1010,"indexExpression":{"baseExpression":{"id":1007,"name":"_vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":988,"src":"8861:7:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1009,"indexExpression":{"id":1008,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":996,"src":"8869:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8861:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8853:19:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1015,"nodeType":"IfStatement","src":"8848:49:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1012,"name":"VaultNotExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"8881:14:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8881:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1014,"nodeType":"RevertStatement","src":"8874:23:8"}},{"expression":{"arguments":[{"id":1022,"name":"_nextRedemptionTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":990,"src":"8958:19:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"baseExpression":{"id":1017,"name":"_vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":988,"src":"8924:7:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1019,"indexExpression":{"id":1018,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":996,"src":"8932:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8924:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1016,"name":"YTAssetVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2714,"src":"8911:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_YTAssetVault_$2714_$","typeString":"type(contract YTAssetVault)"}},"id":1020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8911:24:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_YTAssetVault_$2714","typeString":"contract YTAssetVault"}},"id":1021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8936:21:8","memberName":"setNextRedemptionTime","nodeType":"MemberAccess","referencedDeclaration":1895,"src":"8911:46:8","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":1023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8911:67:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1024,"nodeType":"ExpressionStatement","src":"8911:67:8"},{"eventCall":{"arguments":[{"baseExpression":{"id":1026,"name":"_vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":988,"src":"9019:7:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1028,"indexExpression":{"id":1027,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":996,"src":"9027:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9019:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1029,"name":"_nextRedemptionTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":990,"src":"9031:19:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1025,"name":"NextRedemptionTimeSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"8997:21:8","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":1030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8997:54:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1031,"nodeType":"EmitStatement","src":"8992:59:8"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":999,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":996,"src":"8809:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1000,"name":"_vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":988,"src":"8813:7:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8821:6:8","memberName":"length","nodeType":"MemberAccess","src":"8813:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8809:18:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1033,"initializationExpression":{"assignments":[996],"declarations":[{"constant":false,"id":996,"mutability":"mutable","name":"i","nameLocation":"8802:1:8","nodeType":"VariableDeclaration","scope":1033,"src":"8794:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":995,"name":"uint256","nodeType":"ElementaryTypeName","src":"8794:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":998,"initialValue":{"hexValue":"30","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8806:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8794:13:8"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":1004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8829:3:8","subExpression":{"id":1003,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":996,"src":"8829:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1005,"nodeType":"ExpressionStatement","src":"8829:3:8"},"nodeType":"ForStatement","src":"8789:273:8"}]},"documentation":{"id":985,"nodeType":"StructuredDocumentation","src":"8490:147:8","text":" @notice 批量设置赎回时间\n @param _vaults vault地址数组\n @param _nextRedemptionTime 统一的赎回时间"},"functionSelector":"83d86059","implemented":true,"kind":"function","modifiers":[{"id":993,"kind":"modifierInvocation","modifierName":{"id":992,"name":"onlyOwner","nameLocations":["8769:9:8"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"8769:9:8"},"nodeType":"ModifierInvocation","src":"8769:9:8"}],"name":"setVaultNextRedemptionTimeBatch","nameLocation":"8651:31:8","parameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":988,"mutability":"mutable","name":"_vaults","nameLocation":"8709:7:8","nodeType":"VariableDeclaration","scope":1035,"src":"8692:24:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":986,"name":"address","nodeType":"ElementaryTypeName","src":"8692:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":987,"nodeType":"ArrayTypeName","src":"8692:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":990,"mutability":"mutable","name":"_nextRedemptionTime","nameLocation":"8734:19:8","nodeType":"VariableDeclaration","scope":1035,"src":"8726:27:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"8726:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8682:77:8"},"returnParameters":{"id":994,"nodeType":"ParameterList","parameters":[],"src":"8779:0:8"},"scope":1513,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1058,"nodeType":"FunctionDefinition","src":"9172:164:8","nodes":[],"body":{"id":1057,"nodeType":"Block","src":"9227:109:8","nodes":[],"statements":[{"condition":{"id":1046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9241:16:8","subExpression":{"baseExpression":{"id":1043,"name":"isVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":466,"src":"9242:7:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1045,"indexExpression":{"id":1044,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1038,"src":"9250:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9242:15:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1050,"nodeType":"IfStatement","src":"9237:45:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1047,"name":"VaultNotExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"9266:14:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9266:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1049,"nodeType":"RevertStatement","src":"9259:23:8"}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1052,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1038,"src":"9314:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1051,"name":"YTAssetVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2714,"src":"9301:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_YTAssetVault_$2714_$","typeString":"type(contract YTAssetVault)"}},"id":1053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9301:20:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_YTAssetVault_$2714","typeString":"contract YTAssetVault"}},"id":1054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9322:5:8","memberName":"pause","nodeType":"MemberAccess","referencedDeclaration":1868,"src":"9301:26:8","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":1055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9301:28:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1056,"nodeType":"ExpressionStatement","src":"9301:28:8"}]},"documentation":{"id":1036,"nodeType":"StructuredDocumentation","src":"9078:89:8","text":" @notice 暂停vault紧急情况\n @param _vault vault地址"},"functionSelector":"c0bd6f9e","implemented":true,"kind":"function","modifiers":[{"id":1041,"kind":"modifierInvocation","modifierName":{"id":1040,"name":"onlyOwner","nameLocations":["9217:9:8"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"9217:9:8"},"nodeType":"ModifierInvocation","src":"9217:9:8"}],"name":"pauseVault","nameLocation":"9181:10:8","parameters":{"id":1039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1038,"mutability":"mutable","name":"_vault","nameLocation":"9200:6:8","nodeType":"VariableDeclaration","scope":1058,"src":"9192:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1037,"name":"address","nodeType":"ElementaryTypeName","src":"9192:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9191:16:8"},"returnParameters":{"id":1042,"nodeType":"ParameterList","parameters":[],"src":"9227:0:8"},"scope":1513,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1081,"nodeType":"FunctionDefinition","src":"9422:168:8","nodes":[],"body":{"id":1080,"nodeType":"Block","src":"9479:111:8","nodes":[],"statements":[{"condition":{"id":1069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9493:16:8","subExpression":{"baseExpression":{"id":1066,"name":"isVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":466,"src":"9494:7:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1068,"indexExpression":{"id":1067,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1061,"src":"9502:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9494:15:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1073,"nodeType":"IfStatement","src":"9489:45:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1070,"name":"VaultNotExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"9518:14:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9518:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1072,"nodeType":"RevertStatement","src":"9511:23:8"}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1075,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1061,"src":"9566:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1074,"name":"YTAssetVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2714,"src":"9553:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_YTAssetVault_$2714_$","typeString":"type(contract YTAssetVault)"}},"id":1076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9553:20:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_YTAssetVault_$2714","typeString":"contract YTAssetVault"}},"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9574:7:8","memberName":"unpause","nodeType":"MemberAccess","referencedDeclaration":1878,"src":"9553:28:8","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":1078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9553:30:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1079,"nodeType":"ExpressionStatement","src":"9553:30:8"}]},"documentation":{"id":1059,"nodeType":"StructuredDocumentation","src":"9346:71:8","text":" @notice 恢复vault\n @param _vault vault地址"},"functionSelector":"2efbab2c","implemented":true,"kind":"function","modifiers":[{"id":1064,"kind":"modifierInvocation","modifierName":{"id":1063,"name":"onlyOwner","nameLocations":["9469:9:8"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"9469:9:8"},"nodeType":"ModifierInvocation","src":"9469:9:8"}],"name":"unpauseVault","nameLocation":"9431:12:8","parameters":{"id":1062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1061,"mutability":"mutable","name":"_vault","nameLocation":"9452:6:8","nodeType":"VariableDeclaration","scope":1081,"src":"9444:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1060,"name":"address","nodeType":"ElementaryTypeName","src":"9444:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9443:16:8"},"returnParameters":{"id":1065,"nodeType":"ParameterList","parameters":[],"src":"9479:0:8"},"scope":1513,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1122,"nodeType":"FunctionDefinition","src":"9690:251:8","nodes":[],"body":{"id":1121,"nodeType":"Block","src":"9760:181:8","nodes":[],"statements":[{"body":{"id":1119,"nodeType":"Block","src":"9815:120:8","statements":[{"condition":{"id":1106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9833:20:8","subExpression":{"baseExpression":{"id":1101,"name":"isVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":466,"src":"9834:7:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1105,"indexExpression":{"baseExpression":{"id":1102,"name":"_vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1085,"src":"9842:7:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1104,"indexExpression":{"id":1103,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1091,"src":"9850:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9842:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9834:19:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1110,"nodeType":"IfStatement","src":"9829:49:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1107,"name":"VaultNotExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"9862:14:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9862:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1109,"nodeType":"RevertStatement","src":"9855:23:8"}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"baseExpression":{"id":1112,"name":"_vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1085,"src":"9905:7:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1114,"indexExpression":{"id":1113,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1091,"src":"9913:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9905:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1111,"name":"YTAssetVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2714,"src":"9892:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_YTAssetVault_$2714_$","typeString":"type(contract YTAssetVault)"}},"id":1115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9892:24:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_YTAssetVault_$2714","typeString":"contract YTAssetVault"}},"id":1116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9917:5:8","memberName":"pause","nodeType":"MemberAccess","referencedDeclaration":1868,"src":"9892:30:8","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":1117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9892:32:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1118,"nodeType":"ExpressionStatement","src":"9892:32:8"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1094,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1091,"src":"9790:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1095,"name":"_vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1085,"src":"9794:7:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9802:6:8","memberName":"length","nodeType":"MemberAccess","src":"9794:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9790:18:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1120,"initializationExpression":{"assignments":[1091],"declarations":[{"constant":false,"id":1091,"mutability":"mutable","name":"i","nameLocation":"9783:1:8","nodeType":"VariableDeclaration","scope":1120,"src":"9775:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1090,"name":"uint256","nodeType":"ElementaryTypeName","src":"9775:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1093,"initialValue":{"hexValue":"30","id":1092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9787:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9775:13:8"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":1099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9810:3:8","subExpression":{"id":1098,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1091,"src":"9810:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1100,"nodeType":"ExpressionStatement","src":"9810:3:8"},"nodeType":"ForStatement","src":"9770:165:8"}]},"documentation":{"id":1082,"nodeType":"StructuredDocumentation","src":"9600:85:8","text":" @notice 批量暂停vaults\n @param _vaults vault地址数组"},"functionSelector":"78db5eb6","implemented":true,"kind":"function","modifiers":[{"id":1088,"kind":"modifierInvocation","modifierName":{"id":1087,"name":"onlyOwner","nameLocations":["9750:9:8"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"9750:9:8"},"nodeType":"ModifierInvocation","src":"9750:9:8"}],"name":"pauseVaultBatch","nameLocation":"9699:15:8","parameters":{"id":1086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1085,"mutability":"mutable","name":"_vaults","nameLocation":"9732:7:8","nodeType":"VariableDeclaration","scope":1122,"src":"9715:24:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1083,"name":"address","nodeType":"ElementaryTypeName","src":"9715:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1084,"nodeType":"ArrayTypeName","src":"9715:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"9714:26:8"},"returnParameters":{"id":1089,"nodeType":"ParameterList","parameters":[],"src":"9760:0:8"},"scope":1513,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1163,"nodeType":"FunctionDefinition","src":"10041:255:8","nodes":[],"body":{"id":1162,"nodeType":"Block","src":"10113:183:8","nodes":[],"statements":[{"body":{"id":1160,"nodeType":"Block","src":"10168:122:8","statements":[{"condition":{"id":1147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10186:20:8","subExpression":{"baseExpression":{"id":1142,"name":"isVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":466,"src":"10187:7:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1146,"indexExpression":{"baseExpression":{"id":1143,"name":"_vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1126,"src":"10195:7:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1145,"indexExpression":{"id":1144,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1132,"src":"10203:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10195:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10187:19:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1151,"nodeType":"IfStatement","src":"10182:49:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1148,"name":"VaultNotExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"10215:14:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10215:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1150,"nodeType":"RevertStatement","src":"10208:23:8"}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"baseExpression":{"id":1153,"name":"_vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1126,"src":"10258:7:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1155,"indexExpression":{"id":1154,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1132,"src":"10266:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10258:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1152,"name":"YTAssetVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2714,"src":"10245:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_YTAssetVault_$2714_$","typeString":"type(contract YTAssetVault)"}},"id":1156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10245:24:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_YTAssetVault_$2714","typeString":"contract YTAssetVault"}},"id":1157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10270:7:8","memberName":"unpause","nodeType":"MemberAccess","referencedDeclaration":1878,"src":"10245:32:8","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":1158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10245:34:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1159,"nodeType":"ExpressionStatement","src":"10245:34:8"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1135,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1132,"src":"10143:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1136,"name":"_vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1126,"src":"10147:7:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10155:6:8","memberName":"length","nodeType":"MemberAccess","src":"10147:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10143:18:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1161,"initializationExpression":{"assignments":[1132],"declarations":[{"constant":false,"id":1132,"mutability":"mutable","name":"i","nameLocation":"10136:1:8","nodeType":"VariableDeclaration","scope":1161,"src":"10128:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1131,"name":"uint256","nodeType":"ElementaryTypeName","src":"10128:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1134,"initialValue":{"hexValue":"30","id":1133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10140:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10128:13:8"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":1140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"10163:3:8","subExpression":{"id":1139,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1132,"src":"10163:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1141,"nodeType":"ExpressionStatement","src":"10163:3:8"},"nodeType":"ForStatement","src":"10123:167:8"}]},"documentation":{"id":1123,"nodeType":"StructuredDocumentation","src":"9951:85:8","text":" @notice 批量恢复vaults\n @param _vaults vault地址数组"},"functionSelector":"c6ee542b","implemented":true,"kind":"function","modifiers":[{"id":1129,"kind":"modifierInvocation","modifierName":{"id":1128,"name":"onlyOwner","nameLocations":["10103:9:8"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"10103:9:8"},"nodeType":"ModifierInvocation","src":"10103:9:8"}],"name":"unpauseVaultBatch","nameLocation":"10050:17:8","parameters":{"id":1127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1126,"mutability":"mutable","name":"_vaults","nameLocation":"10085:7:8","nodeType":"VariableDeclaration","scope":1163,"src":"10068:24:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1124,"name":"address","nodeType":"ElementaryTypeName","src":"10068:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1125,"nodeType":"ArrayTypeName","src":"10068:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"10067:26:8"},"returnParameters":{"id":1130,"nodeType":"ParameterList","parameters":[],"src":"10113:0:8"},"scope":1513,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1198,"nodeType":"FunctionDefinition","src":"10488:326:8","nodes":[],"body":{"id":1197,"nodeType":"Block","src":"10620:194:8","nodes":[],"statements":[{"condition":{"id":1178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10634:16:8","subExpression":{"baseExpression":{"id":1175,"name":"isVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":466,"src":"10635:7:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1177,"indexExpression":{"id":1176,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1166,"src":"10643:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10635:15:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1182,"nodeType":"IfStatement","src":"10630:45:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1179,"name":"VaultNotExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"10659:14:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10659:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1181,"nodeType":"RevertStatement","src":"10652:23:8"}},{"expression":{"arguments":[{"id":1187,"name":"_wusdPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1168,"src":"10728:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1188,"name":"_ytPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1170,"src":"10740:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1184,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1166,"src":"10707:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1183,"name":"YTAssetVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2714,"src":"10694:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_YTAssetVault_$2714_$","typeString":"type(contract YTAssetVault)"}},"id":1185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10694:20:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_YTAssetVault_$2714","typeString":"contract YTAssetVault"}},"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10715:12:8","memberName":"updatePrices","nodeType":"MemberAccess","referencedDeclaration":1932,"src":"10694:33:8","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) external"}},"id":1189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10694:55:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1190,"nodeType":"ExpressionStatement","src":"10694:55:8"},{"eventCall":{"arguments":[{"id":1192,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1166,"src":"10778:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1193,"name":"_wusdPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1168,"src":"10786:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1194,"name":"_ytPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1170,"src":"10798:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1191,"name":"PricesUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"10764:13:8","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":1195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10764:43:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1196,"nodeType":"EmitStatement","src":"10759:48:8"}]},"documentation":{"id":1164,"nodeType":"StructuredDocumentation","src":"10306:177:8","text":" @notice 更新vault价格\n @param _vault vault地址\n @param _wusdPrice WUSD价格精度1e30\n @param _ytPrice YT价格精度1e30"},"functionSelector":"36a78804","implemented":true,"kind":"function","modifiers":[{"id":1173,"kind":"modifierInvocation","modifierName":{"id":1172,"name":"onlyOwner","nameLocations":["10610:9:8"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"10610:9:8"},"nodeType":"ModifierInvocation","src":"10610:9:8"}],"name":"updateVaultPrices","nameLocation":"10497:17:8","parameters":{"id":1171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1166,"mutability":"mutable","name":"_vault","nameLocation":"10532:6:8","nodeType":"VariableDeclaration","scope":1198,"src":"10524:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1165,"name":"address","nodeType":"ElementaryTypeName","src":"10524:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1168,"mutability":"mutable","name":"_wusdPrice","nameLocation":"10557:10:8","nodeType":"VariableDeclaration","scope":1198,"src":"10549:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1167,"name":"uint256","nodeType":"ElementaryTypeName","src":"10549:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1170,"mutability":"mutable","name":"_ytPrice","nameLocation":"10586:8:8","nodeType":"VariableDeclaration","scope":1198,"src":"10578:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1169,"name":"uint256","nodeType":"ElementaryTypeName","src":"10578:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10514:86:8"},"returnParameters":{"id":1174,"nodeType":"ParameterList","parameters":[],"src":"10620:0:8"},"scope":1513,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1278,"nodeType":"FunctionDefinition","src":"11028:622:8","nodes":[],"body":{"id":1277,"nodeType":"Block","src":"11193:457:8","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1214,"name":"_vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1202,"src":"11224:7:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11232:6:8","memberName":"length","nodeType":"MemberAccess","src":"11224:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1216,"name":"_wusdPrices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1205,"src":"11242:11:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11254:6:8","memberName":"length","nodeType":"MemberAccess","src":"11242:18:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11224:36:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1219,"name":"_vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1202,"src":"11276:7:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11284:6:8","memberName":"length","nodeType":"MemberAccess","src":"11276:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1221,"name":"_ytPrices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1208,"src":"11294:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11304:6:8","memberName":"length","nodeType":"MemberAccess","src":"11294:16:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11276:34:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11224:86:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c656e677468206d69736d61746368","id":1225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11324:17:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_bb46a6fe2ea6b18f462b236ffc808abf66026114a0bc6a6c72c11149e00d9ea8","typeString":"literal_string \"Length mismatch\""},"value":"Length mismatch"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bb46a6fe2ea6b18f462b236ffc808abf66026114a0bc6a6c72c11149e00d9ea8","typeString":"literal_string \"Length mismatch\""}],"id":1213,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"11203:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11203:148:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1227,"nodeType":"ExpressionStatement","src":"11203:148:8"},{"body":{"id":1275,"nodeType":"Block","src":"11415:229:8","statements":[{"condition":{"id":1244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"11433:20:8","subExpression":{"baseExpression":{"id":1239,"name":"isVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":466,"src":"11434:7:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1243,"indexExpression":{"baseExpression":{"id":1240,"name":"_vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1202,"src":"11442:7:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1242,"indexExpression":{"id":1241,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1229,"src":"11450:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11442:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11434:19:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1248,"nodeType":"IfStatement","src":"11429:49:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1245,"name":"VaultNotExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"11462:14:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11462:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1247,"nodeType":"RevertStatement","src":"11455:23:8"}},{"expression":{"arguments":[{"baseExpression":{"id":1255,"name":"_wusdPrices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1205,"src":"11530:11:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1257,"indexExpression":{"id":1256,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1229,"src":"11542:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11530:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":1258,"name":"_ytPrices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1208,"src":"11546:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1260,"indexExpression":{"id":1259,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1229,"src":"11556:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11546:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"baseExpression":{"id":1250,"name":"_vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1202,"src":"11505:7:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1252,"indexExpression":{"id":1251,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1229,"src":"11513:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11505:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1249,"name":"YTAssetVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2714,"src":"11492:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_YTAssetVault_$2714_$","typeString":"type(contract YTAssetVault)"}},"id":1253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11492:24:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_YTAssetVault_$2714","typeString":"contract YTAssetVault"}},"id":1254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11517:12:8","memberName":"updatePrices","nodeType":"MemberAccess","referencedDeclaration":1932,"src":"11492:37:8","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) external"}},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11492:67:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1262,"nodeType":"ExpressionStatement","src":"11492:67:8"},{"eventCall":{"arguments":[{"baseExpression":{"id":1264,"name":"_vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1202,"src":"11592:7:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1266,"indexExpression":{"id":1265,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1229,"src":"11600:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11592:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":1267,"name":"_wusdPrices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1205,"src":"11604:11:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1269,"indexExpression":{"id":1268,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1229,"src":"11616:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11604:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":1270,"name":"_ytPrices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1208,"src":"11620:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1272,"indexExpression":{"id":1271,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1229,"src":"11630:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11620:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1263,"name":"PricesUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"11578:13:8","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":1273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11578:55:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1274,"nodeType":"EmitStatement","src":"11573:60:8"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1232,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1229,"src":"11390:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1233,"name":"_vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1202,"src":"11394:7:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11402:6:8","memberName":"length","nodeType":"MemberAccess","src":"11394:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11390:18:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1276,"initializationExpression":{"assignments":[1229],"declarations":[{"constant":false,"id":1229,"mutability":"mutable","name":"i","nameLocation":"11383:1:8","nodeType":"VariableDeclaration","scope":1276,"src":"11375:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1228,"name":"uint256","nodeType":"ElementaryTypeName","src":"11375:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1231,"initialValue":{"hexValue":"30","id":1230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11387:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11375:13:8"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":1237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"11410:3:8","subExpression":{"id":1236,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1229,"src":"11410:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1238,"nodeType":"ExpressionStatement","src":"11410:3:8"},"nodeType":"ForStatement","src":"11370:274:8"}]},"documentation":{"id":1199,"nodeType":"StructuredDocumentation","src":"10824:199:8","text":" @notice 批量更新价格\n @param _vaults vault地址数组\n @param _wusdPrices WUSD价格数组精度1e30\n @param _ytPrices YT价格数组精度1e30"},"functionSelector":"3c40339c","implemented":true,"kind":"function","modifiers":[{"id":1211,"kind":"modifierInvocation","modifierName":{"id":1210,"name":"onlyOwner","nameLocations":["11183:9:8"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"11183:9:8"},"nodeType":"ModifierInvocation","src":"11183:9:8"}],"name":"updateVaultPricesBatch","nameLocation":"11037:22:8","parameters":{"id":1209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1202,"mutability":"mutable","name":"_vaults","nameLocation":"11086:7:8","nodeType":"VariableDeclaration","scope":1278,"src":"11069:24:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1200,"name":"address","nodeType":"ElementaryTypeName","src":"11069:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1201,"nodeType":"ArrayTypeName","src":"11069:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":1205,"mutability":"mutable","name":"_wusdPrices","nameLocation":"11120:11:8","nodeType":"VariableDeclaration","scope":1278,"src":"11103:28:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1203,"name":"uint256","nodeType":"ElementaryTypeName","src":"11103:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1204,"nodeType":"ArrayTypeName","src":"11103:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1208,"mutability":"mutable","name":"_ytPrices","nameLocation":"11158:9:8","nodeType":"VariableDeclaration","scope":1278,"src":"11141:26:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1206,"name":"uint256","nodeType":"ElementaryTypeName","src":"11141:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1207,"nodeType":"ArrayTypeName","src":"11141:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"11059:114:8"},"returnParameters":{"id":1212,"nodeType":"ParameterList","parameters":[],"src":"11193:0:8"},"scope":1513,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1315,"nodeType":"FunctionDefinition","src":"11791:298:8","nodes":[],"body":{"id":1314,"nodeType":"Block","src":"11876:213:8","nodes":[],"statements":[{"condition":{"id":1291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"11890:16:8","subExpression":{"baseExpression":{"id":1288,"name":"isVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":466,"src":"11891:7:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1290,"indexExpression":{"id":1289,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1281,"src":"11899:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11891:15:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1295,"nodeType":"IfStatement","src":"11886:45:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1292,"name":"VaultNotExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"11915:14:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11915:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1294,"nodeType":"RevertStatement","src":"11908:23:8"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1296,"name":"_newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1283,"src":"11945:18:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11975:1:8","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":1298,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11967:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1297,"name":"address","nodeType":"ElementaryTypeName","src":"11967:7:8","typeDescriptions":{}}},"id":1300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11967:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11945:32:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1305,"nodeType":"IfStatement","src":"11941:61:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1302,"name":"InvalidAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":450,"src":"11986:14:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11986:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1304,"nodeType":"RevertStatement","src":"11979:23:8"}},{"expression":{"arguments":[{"id":1310,"name":"_newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1283,"src":"12059:18:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"","id":1311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12079:2:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"arguments":[{"id":1307,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1281,"src":"12034:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1306,"name":"YTAssetVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2714,"src":"12021:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_YTAssetVault_$2714_$","typeString":"type(contract YTAssetVault)"}},"id":1308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12021:20:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_YTAssetVault_$2714","typeString":"contract YTAssetVault"}},"id":1309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12042:16:8","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":10744,"src":"12021:37:8","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory) payable external"}},"id":1312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12021:61:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1313,"nodeType":"ExpressionStatement","src":"12021:61:8"}]},"documentation":{"id":1279,"nodeType":"StructuredDocumentation","src":"11660:126:8","text":" @notice 升级指定vault\n @param _vault vault地址\n @param _newImplementation 新实现地址"},"functionSelector":"054bf171","implemented":true,"kind":"function","modifiers":[{"id":1286,"kind":"modifierInvocation","modifierName":{"id":1285,"name":"onlyOwner","nameLocations":["11866:9:8"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"11866:9:8"},"nodeType":"ModifierInvocation","src":"11866:9:8"}],"name":"upgradeVault","nameLocation":"11800:12:8","parameters":{"id":1284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1281,"mutability":"mutable","name":"_vault","nameLocation":"11821:6:8","nodeType":"VariableDeclaration","scope":1315,"src":"11813:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1280,"name":"address","nodeType":"ElementaryTypeName","src":"11813:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1283,"mutability":"mutable","name":"_newImplementation","nameLocation":"11837:18:8","nodeType":"VariableDeclaration","scope":1315,"src":"11829:26:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1282,"name":"address","nodeType":"ElementaryTypeName","src":"11829:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11812:44:8"},"returnParameters":{"id":1287,"nodeType":"ParameterList","parameters":[],"src":"11876:0:8"},"scope":1513,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1370,"nodeType":"FunctionDefinition","src":"12237:416:8","nodes":[],"body":{"id":1369,"nodeType":"Block","src":"12359:294:8","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1326,"name":"_newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1321,"src":"12373:18:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12403:1:8","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":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12395:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1327,"name":"address","nodeType":"ElementaryTypeName","src":"12395:7:8","typeDescriptions":{}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12395:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12373:32:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1335,"nodeType":"IfStatement","src":"12369:61:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1332,"name":"InvalidAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":450,"src":"12414:14:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12414:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1334,"nodeType":"RevertStatement","src":"12407:23:8"}},{"body":{"id":1367,"nodeType":"Block","src":"12494:153:8","statements":[{"condition":{"id":1352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"12512:20:8","subExpression":{"baseExpression":{"id":1347,"name":"isVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":466,"src":"12513:7:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1351,"indexExpression":{"baseExpression":{"id":1348,"name":"_vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1319,"src":"12521:7:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1350,"indexExpression":{"id":1349,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1337,"src":"12529:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12521:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12513:19:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1356,"nodeType":"IfStatement","src":"12508:49:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1353,"name":"VaultNotExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"12541:14:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12541:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1355,"nodeType":"RevertStatement","src":"12534:23:8"}},{"expression":{"arguments":[{"id":1363,"name":"_newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1321,"src":"12613:18:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"","id":1364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12633:2:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"arguments":[{"baseExpression":{"id":1358,"name":"_vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1319,"src":"12584:7:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1360,"indexExpression":{"id":1359,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1337,"src":"12592:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12584:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1357,"name":"YTAssetVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2714,"src":"12571:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_YTAssetVault_$2714_$","typeString":"type(contract YTAssetVault)"}},"id":1361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12571:24:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_YTAssetVault_$2714","typeString":"contract YTAssetVault"}},"id":1362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12596:16:8","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":10744,"src":"12571:41:8","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory) payable external"}},"id":1365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12571:65:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1366,"nodeType":"ExpressionStatement","src":"12571:65:8"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1340,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1337,"src":"12469:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1341,"name":"_vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1319,"src":"12473:7:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12481:6:8","memberName":"length","nodeType":"MemberAccess","src":"12473:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12469:18:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1368,"initializationExpression":{"assignments":[1337],"declarations":[{"constant":false,"id":1337,"mutability":"mutable","name":"i","nameLocation":"12462:1:8","nodeType":"VariableDeclaration","scope":1368,"src":"12454:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1336,"name":"uint256","nodeType":"ElementaryTypeName","src":"12454:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1339,"initialValue":{"hexValue":"30","id":1338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12466:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12454:13:8"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":1345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12489:3:8","subExpression":{"id":1344,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1337,"src":"12489:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1346,"nodeType":"ExpressionStatement","src":"12489:3:8"},"nodeType":"ForStatement","src":"12449:198:8"}]},"documentation":{"id":1316,"nodeType":"StructuredDocumentation","src":"12099:133:8","text":" @notice 批量升级vault\n @param _vaults vault地址数组\n @param _newImplementation 新实现地址"},"functionSelector":"96403a52","implemented":true,"kind":"function","modifiers":[{"id":1324,"kind":"modifierInvocation","modifierName":{"id":1323,"name":"onlyOwner","nameLocations":["12349:9:8"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"12349:9:8"},"nodeType":"ModifierInvocation","src":"12349:9:8"}],"name":"upgradeVaultBatch","nameLocation":"12246:17:8","parameters":{"id":1322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1319,"mutability":"mutable","name":"_vaults","nameLocation":"12290:7:8","nodeType":"VariableDeclaration","scope":1370,"src":"12273:24:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1317,"name":"address","nodeType":"ElementaryTypeName","src":"12273:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1318,"nodeType":"ArrayTypeName","src":"12273:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":1321,"mutability":"mutable","name":"_newImplementation","nameLocation":"12315:18:8","nodeType":"VariableDeclaration","scope":1370,"src":"12307:26:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1320,"name":"address","nodeType":"ElementaryTypeName","src":"12307:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12263:76:8"},"returnParameters":{"id":1325,"nodeType":"ParameterList","parameters":[],"src":"12359:0:8"},"scope":1513,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1380,"nodeType":"FunctionDefinition","src":"12718:97:8","nodes":[],"body":{"id":1379,"nodeType":"Block","src":"12775:40:8","nodes":[],"statements":[{"expression":{"expression":{"id":1376,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":461,"src":"12792:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12802:6:8","memberName":"length","nodeType":"MemberAccess","src":"12792:16:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1375,"id":1378,"nodeType":"Return","src":"12785:23:8"}]},"documentation":{"id":1371,"nodeType":"StructuredDocumentation","src":"12663:50:8","text":" @notice 获取所有vault数量"},"functionSelector":"74d4e491","implemented":true,"kind":"function","modifiers":[],"name":"getVaultCount","nameLocation":"12727:13:8","parameters":{"id":1372,"nodeType":"ParameterList","parameters":[],"src":"12740:2:8"},"returnParameters":{"id":1375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1374,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1380,"src":"12766:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1373,"name":"uint256","nodeType":"ElementaryTypeName","src":"12766:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12765:9:8"},"scope":1513,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1436,"nodeType":"FunctionDefinition","src":"12970:376:8","nodes":[],"body":{"id":1435,"nodeType":"Block","src":"13099:247:8","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1392,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1383,"src":"13117:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1393,"name":"_end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"13126:4:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13117:13:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1395,"name":"_end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"13134:4:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":1396,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":461,"src":"13142:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13152:6:8","memberName":"length","nodeType":"MemberAccess","src":"13142:16:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13134:24:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13117:41:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c69642072616e6765","id":1400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13160:15:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_86f5232cd420b5d8e89c0911fc290331f6cfd7bd7824383c43ece46e2a1c20ec","typeString":"literal_string \"Invalid range\""},"value":"Invalid range"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_86f5232cd420b5d8e89c0911fc290331f6cfd7bd7824383c43ece46e2a1c20ec","typeString":"literal_string \"Invalid range\""}],"id":1391,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"13109:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13109:67:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1402,"nodeType":"ExpressionStatement","src":"13109:67:8"},{"expression":{"id":1411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1403,"name":"vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1389,"src":"13195:6:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1407,"name":"_end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"13218:4:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1408,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1383,"src":"13225:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13218:13:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1406,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"13204:13:8","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":1404,"name":"address","nodeType":"ElementaryTypeName","src":"13208:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1405,"nodeType":"ArrayTypeName","src":"13208:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":1410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13204:28:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"13195:37:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1412,"nodeType":"ExpressionStatement","src":"13195:37:8"},{"body":{"id":1433,"nodeType":"Block","src":"13282:58:8","statements":[{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1423,"name":"vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1389,"src":"13296:6:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1427,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1424,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1414,"src":"13303:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1425,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1383,"src":"13307:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13303:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13296:18:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1428,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":461,"src":"13317:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":1430,"indexExpression":{"id":1429,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1414,"src":"13327:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13317:12:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13296:33:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1432,"nodeType":"ExpressionStatement","src":"13296:33:8"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1417,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1414,"src":"13267:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1418,"name":"_end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"13271:4:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13267:8:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1434,"initializationExpression":{"assignments":[1414],"declarations":[{"constant":false,"id":1414,"mutability":"mutable","name":"i","nameLocation":"13255:1:8","nodeType":"VariableDeclaration","scope":1434,"src":"13247:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1413,"name":"uint256","nodeType":"ElementaryTypeName","src":"13247:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1416,"initialValue":{"id":1415,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1383,"src":"13259:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13247:18:8"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":1421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13277:3:8","subExpression":{"id":1420,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1414,"src":"13277:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1422,"nodeType":"ExpressionStatement","src":"13277:3:8"},"nodeType":"ForStatement","src":"13242:98:8"}]},"documentation":{"id":1381,"nodeType":"StructuredDocumentation","src":"12825:140:8","text":" @notice 获取指定范围的vault地址\n @param _start 起始索引\n @param _end 结束索引(不包含)"},"functionSelector":"b98cca37","implemented":true,"kind":"function","modifiers":[],"name":"getVaults","nameLocation":"12979:9:8","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1383,"mutability":"mutable","name":"_start","nameLocation":"12997:6:8","nodeType":"VariableDeclaration","scope":1436,"src":"12989:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1382,"name":"uint256","nodeType":"ElementaryTypeName","src":"12989:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1385,"mutability":"mutable","name":"_end","nameLocation":"13013:4:8","nodeType":"VariableDeclaration","scope":1436,"src":"13005:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"13005:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12988:30:8"},"returnParameters":{"id":1390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1389,"mutability":"mutable","name":"vaults","nameLocation":"13086:6:8","nodeType":"VariableDeclaration","scope":1436,"src":"13069:23:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1387,"name":"address","nodeType":"ElementaryTypeName","src":"13069:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1388,"nodeType":"ArrayTypeName","src":"13069:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"13068:25:8"},"scope":1513,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1446,"nodeType":"FunctionDefinition","src":"13411:98:8","nodes":[],"body":{"id":1445,"nodeType":"Block","src":"13476:33:8","nodes":[],"statements":[{"expression":{"id":1443,"name":"allVaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":461,"src":"13493:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":1442,"id":1444,"nodeType":"Return","src":"13486:16:8"}]},"documentation":{"id":1437,"nodeType":"StructuredDocumentation","src":"13356:50:8","text":" @notice 获取所有vault地址"},"functionSelector":"97331bf9","implemented":true,"kind":"function","modifiers":[],"name":"getAllVaults","nameLocation":"13420:12:8","parameters":{"id":1438,"nodeType":"ParameterList","parameters":[],"src":"13432:2:8"},"returnParameters":{"id":1442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1441,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1446,"src":"13458:16:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1439,"name":"address","nodeType":"ElementaryTypeName","src":"13458:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1440,"nodeType":"ArrayTypeName","src":"13458:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"13457:18:8"},"scope":1513,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1507,"nodeType":"FunctionDefinition","src":"13607:676:8","nodes":[],"body":{"id":1506,"nodeType":"Block","src":"13925:358:8","nodes":[],"statements":[{"expression":{"id":1474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1470,"name":"exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1452,"src":"13935:6:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1471,"name":"isVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":466,"src":"13944:7:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1473,"indexExpression":{"id":1472,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1449,"src":"13952:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13944:15:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13935:24:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1475,"nodeType":"ExpressionStatement","src":"13935:24:8"},{"condition":{"id":1477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"13973:7:8","subExpression":{"id":1476,"name":"exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1452,"src":"13974:6:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1489,"nodeType":"IfStatement","src":"13969:51:8","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13990:5:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13997:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":1480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14000:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":1481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14003:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":1482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14006:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":1483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14009:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":1484,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14012:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":1485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14015:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":1486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14018:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1487,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"13989:31:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0,int_const 0,int_const 0,int_const 0,int_const 0,int_const 0,int_const 0,int_const 0)"}},"functionReturnParameters":1469,"id":1488,"nodeType":"Return","src":"13982:38:8"}},{"expression":{"id":1504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1490,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1454,"src":"14044:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1491,"name":"idleAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1456,"src":"14069:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1492,"name":"managedAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1458,"src":"14093:13:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1493,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1460,"src":"14120:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1494,"name":"hardCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1462,"src":"14145:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1495,"name":"wusdPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1464,"src":"14166:9:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1496,"name":"ytPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1466,"src":"14189:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1497,"name":"nextRedemptionTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1468,"src":"14210:18:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1498,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"14030:208:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1500,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1449,"src":"14254:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1499,"name":"YTAssetVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2714,"src":"14241:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_YTAssetVault_$2714_$","typeString":"type(contract YTAssetVault)"}},"id":1501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14241:20:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_YTAssetVault_$2714","typeString":"contract YTAssetVault"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14262:12:8","memberName":"getVaultInfo","nodeType":"MemberAccess","referencedDeclaration":2708,"src":"14241:33:8","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function () view external returns (uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"}},"id":1503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14241:35:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"}},"src":"14030:246:8","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1505,"nodeType":"ExpressionStatement","src":"14030:246:8"}]},"documentation":{"id":1447,"nodeType":"StructuredDocumentation","src":"13519:83:8","text":" @notice 获取vault详细信息\n @param _vault vault地址"},"functionSelector":"90229af7","implemented":true,"kind":"function","modifiers":[],"name":"getVaultInfo","nameLocation":"13616:12:8","parameters":{"id":1450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1449,"mutability":"mutable","name":"_vault","nameLocation":"13637:6:8","nodeType":"VariableDeclaration","scope":1507,"src":"13629:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1448,"name":"address","nodeType":"ElementaryTypeName","src":"13629:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13628:16:8"},"returnParameters":{"id":1469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1452,"mutability":"mutable","name":"exists","nameLocation":"13682:6:8","nodeType":"VariableDeclaration","scope":1507,"src":"13677:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1451,"name":"bool","nodeType":"ElementaryTypeName","src":"13677:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1454,"mutability":"mutable","name":"totalAssets","nameLocation":"13706:11:8","nodeType":"VariableDeclaration","scope":1507,"src":"13698:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1453,"name":"uint256","nodeType":"ElementaryTypeName","src":"13698:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1456,"mutability":"mutable","name":"idleAssets","nameLocation":"13735:10:8","nodeType":"VariableDeclaration","scope":1507,"src":"13727:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1455,"name":"uint256","nodeType":"ElementaryTypeName","src":"13727:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1458,"mutability":"mutable","name":"managedAssets","nameLocation":"13763:13:8","nodeType":"VariableDeclaration","scope":1507,"src":"13755:21:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1457,"name":"uint256","nodeType":"ElementaryTypeName","src":"13755:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1460,"mutability":"mutable","name":"totalSupply","nameLocation":"13794:11:8","nodeType":"VariableDeclaration","scope":1507,"src":"13786:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1459,"name":"uint256","nodeType":"ElementaryTypeName","src":"13786:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1462,"mutability":"mutable","name":"hardCap","nameLocation":"13823:7:8","nodeType":"VariableDeclaration","scope":1507,"src":"13815:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1461,"name":"uint256","nodeType":"ElementaryTypeName","src":"13815:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1464,"mutability":"mutable","name":"wusdPrice","nameLocation":"13848:9:8","nodeType":"VariableDeclaration","scope":1507,"src":"13840:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1463,"name":"uint256","nodeType":"ElementaryTypeName","src":"13840:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1466,"mutability":"mutable","name":"ytPrice","nameLocation":"13875:7:8","nodeType":"VariableDeclaration","scope":1507,"src":"13867:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1465,"name":"uint256","nodeType":"ElementaryTypeName","src":"13867:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1468,"mutability":"mutable","name":"nextRedemptionTime","nameLocation":"13900:18:8","nodeType":"VariableDeclaration","scope":1507,"src":"13892:26:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1467,"name":"uint256","nodeType":"ElementaryTypeName","src":"13892:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13667:257:8"},"scope":1513,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1512,"nodeType":"VariableDeclaration","src":"14434:25:8","nodes":[],"constant":false,"documentation":{"id":1508,"nodeType":"StructuredDocumentation","src":"14293:136:8","text":" @dev 预留存储空间,用于未来升级时添加新的状态变量\n 50个slot = 50 * 32 bytes = 1600 bytes"},"mutability":"mutable","name":"__gap","nameLocation":"14454:5:8","scope":1513,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":1509,"name":"uint256","nodeType":"ElementaryTypeName","src":"14434:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1511,"length":{"hexValue":"3530","id":1510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14442:2:8","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"14434:11:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":443,"name":"Initializable","nameLocations":["538:13:8"],"nodeType":"IdentifierPath","referencedDeclaration":10652,"src":"538:13:8"},"id":444,"nodeType":"InheritanceSpecifier","src":"538:13:8"},{"baseName":{"id":445,"name":"UUPSUpgradeable","nameLocations":["553:15:8"],"nodeType":"IdentifierPath","referencedDeclaration":10834,"src":"553:15:8"},"id":446,"nodeType":"InheritanceSpecifier","src":"553:15:8"},{"baseName":{"id":447,"name":"OwnableUpgradeable","nameLocations":["570:18:8"],"nodeType":"IdentifierPath","referencedDeclaration":10384,"src":"570:18:8"},"id":448,"nodeType":"InheritanceSpecifier","src":"570:18:8"}],"canonicalName":"YTAssetFactory","contractDependencies":[12230],"contractKind":"contract","documentation":{"id":442,"nodeType":"StructuredDocumentation","src":"382:128:8","text":" @title YTAssetFactory\n @notice 用于批量创建和管理YT资产金库合约的工厂\n @dev UUPS可升级合约"},"fullyImplemented":true,"linearizedBaseContracts":[1513,10384,11497,10834,12055,10652],"name":"YTAssetFactory","nameLocation":"520:14:8","scope":1514,"usedErrors":[450,452,454,10220,10225,10401,10404,10679,10684,12250,12263,13148,13441],"usedEvents":[483,487,491,497,505,511,10231,10409,12028]}],"license":"MIT"}},"contracts/vault/YTAssetVault.sol":{"id":9,"ast":{"absolutePath":"contracts/vault/YTAssetVault.sol","id":2715,"exportedSymbols":{"ContextUpgradeable":[11497],"ERC1967Utils":[12524],"ERC20Upgradeable":[11451],"IERC1363":[12016],"IERC1822Proxiable":[12055],"IERC20":[12648],"IERC20Errors":[12097],"IERC20Metadata":[12674],"Initializable":[10652],"PausableUpgradeable":[11657],"ReentrancyGuardUpgradeable":[11786],"SafeERC20":[13138],"UUPSUpgradeable":[10834],"YTAssetVault":[2714]},"nodeType":"SourceUnit","src":"32:19400:9","nodes":[{"id":1515,"nodeType":"PragmaDirective","src":"32:23:9","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":1516,"nodeType":"ImportDirective","src":"57:78:9","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","nameLocation":"-1:-1:-1","scope":2715,"sourceUnit":11452,"symbolAliases":[],"unitAlias":""},{"id":1517,"nodeType":"ImportDirective","src":"136:75:9","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":2715,"sourceUnit":10653,"symbolAliases":[],"unitAlias":""},{"id":1518,"nodeType":"ImportDirective","src":"212:77:9","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":2715,"sourceUnit":10835,"symbolAliases":[],"unitAlias":""},{"id":1519,"nodeType":"ImportDirective","src":"290:82:9","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","nameLocation":"-1:-1:-1","scope":2715,"sourceUnit":11787,"symbolAliases":[],"unitAlias":""},{"id":1520,"nodeType":"ImportDirective","src":"373:75:9","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":2715,"sourceUnit":11658,"symbolAliases":[],"unitAlias":""},{"id":1521,"nodeType":"ImportDirective","src":"449:56:9","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","nameLocation":"-1:-1:-1","scope":2715,"sourceUnit":12649,"symbolAliases":[],"unitAlias":""},{"id":1522,"nodeType":"ImportDirective","src":"506:65:9","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","nameLocation":"-1:-1:-1","scope":2715,"sourceUnit":13139,"symbolAliases":[],"unitAlias":""},{"id":2714,"nodeType":"ContractDefinition","src":"739:18692:9","nodes":[{"id":1537,"nodeType":"UsingForDirective","src":"891:27:9","nodes":[],"global":false,"libraryName":{"id":1534,"name":"SafeERC20","nameLocations":["897:9:9"],"nodeType":"IdentifierPath","referencedDeclaration":13138,"src":"897:9:9"},"typeName":{"id":1536,"nodeType":"UserDefinedTypeName","pathNode":{"id":1535,"name":"IERC20","nameLocations":["911:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":12648,"src":"911:6:9"},"referencedDeclaration":12648,"src":"911:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}}},{"id":1539,"nodeType":"ErrorDefinition","src":"924:18:9","nodes":[],"errorSelector":"ee90c468","name":"Forbidden","nameLocation":"930:9:9","parameters":{"id":1538,"nodeType":"ParameterList","parameters":[],"src":"939:2:9"}},{"id":1541,"nodeType":"ErrorDefinition","src":"947:24:9","nodes":[],"errorSelector":"3895e792","name":"HardCapExceeded","nameLocation":"953:15:9","parameters":{"id":1540,"nodeType":"ParameterList","parameters":[],"src":"968:2:9"}},{"id":1543,"nodeType":"ErrorDefinition","src":"976:22:9","nodes":[],"errorSelector":"2c5211c6","name":"InvalidAmount","nameLocation":"982:13:9","parameters":{"id":1542,"nodeType":"ParameterList","parameters":[],"src":"995:2:9"}},{"id":1545,"nodeType":"ErrorDefinition","src":"1003:23:9","nodes":[],"errorSelector":"34d07a32","name":"InvalidHardCap","nameLocation":"1009:14:9","parameters":{"id":1544,"nodeType":"ParameterList","parameters":[],"src":"1023:2:9"}},{"id":1547,"nodeType":"ErrorDefinition","src":"1031:21:9","nodes":[],"errorSelector":"00bfc921","name":"InvalidPrice","nameLocation":"1037:12:9","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[],"src":"1049:2:9"}},{"id":1549,"nodeType":"ErrorDefinition","src":"1057:25:9","nodes":[],"errorSelector":"84e77123","name":"InsufficientWUSD","nameLocation":"1063:16:9","parameters":{"id":1548,"nodeType":"ParameterList","parameters":[],"src":"1079:2:9"}},{"id":1551,"nodeType":"ErrorDefinition","src":"1087:24:9","nodes":[],"errorSelector":"7035ce07","name":"InsufficientYTA","nameLocation":"1093:15:9","parameters":{"id":1550,"nodeType":"ParameterList","parameters":[],"src":"1108:2:9"}},{"id":1553,"nodeType":"ErrorDefinition","src":"1116:26:9","nodes":[],"errorSelector":"c9b546cc","name":"StillInLockPeriod","nameLocation":"1122:17:9","parameters":{"id":1552,"nodeType":"ParameterList","parameters":[],"src":"1139:2:9"}},{"id":1555,"nodeType":"ErrorDefinition","src":"1147:24:9","nodes":[],"errorSelector":"4b13b31e","name":"RequestNotFound","nameLocation":"1153:15:9","parameters":{"id":1554,"nodeType":"ParameterList","parameters":[],"src":"1168:2:9"}},{"id":1557,"nodeType":"ErrorDefinition","src":"1176:32:9","nodes":[],"errorSelector":"a6bc74c4","name":"RequestAlreadyProcessed","nameLocation":"1182:23:9","parameters":{"id":1556,"nodeType":"ParameterList","parameters":[],"src":"1205:2:9"}},{"id":1559,"nodeType":"ErrorDefinition","src":"1213:25:9","nodes":[],"errorSelector":"7862e959","name":"InvalidBatchSize","nameLocation":"1219:16:9","parameters":{"id":1558,"nodeType":"ParameterList","parameters":[],"src":"1235:2:9"}},{"id":1562,"nodeType":"VariableDeclaration","src":"1283:22:9","nodes":[],"constant":false,"documentation":{"id":1560,"nodeType":"StructuredDocumentation","src":"1248:30:9","text":"@notice 工厂合约地址"},"functionSelector":"c45a0155","mutability":"mutable","name":"factory","nameLocation":"1298:7:9","scope":2714,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1561,"name":"address","nodeType":"ElementaryTypeName","src":"1283:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":1565,"nodeType":"VariableDeclaration","src":"1348:22:9","nodes":[],"constant":false,"documentation":{"id":1563,"nodeType":"StructuredDocumentation","src":"1316:27:9","text":"@notice 管理员地址"},"functionSelector":"481c6a75","mutability":"mutable","name":"manager","nameLocation":"1363:7:9","scope":2714,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1564,"name":"address","nodeType":"ElementaryTypeName","src":"1348:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":1568,"nodeType":"VariableDeclaration","src":"1444:22:9","nodes":[],"constant":false,"documentation":{"id":1566,"nodeType":"StructuredDocumentation","src":"1381:58:9","text":"@notice YT代币硬顶最大可铸造的YT数量"},"functionSelector":"fb86a404","mutability":"mutable","name":"hardCap","nameLocation":"1459:7:9","scope":2714,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1567,"name":"uint256","nodeType":"ElementaryTypeName","src":"1444:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":1571,"nodeType":"VariableDeclaration","src":"1528:28:9","nodes":[],"constant":false,"documentation":{"id":1569,"nodeType":"StructuredDocumentation","src":"1477:46:9","text":"@notice 已提取用于管理的WUSD数量"},"functionSelector":"f4a0877f","mutability":"mutable","name":"managedAssets","nameLocation":"1543:13:9","scope":2714,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1570,"name":"uint256","nodeType":"ElementaryTypeName","src":"1528:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":1574,"nodeType":"VariableDeclaration","src":"1600:26:9","nodes":[],"constant":false,"documentation":{"id":1572,"nodeType":"StructuredDocumentation","src":"1567:28:9","text":"@notice WUSD代币地址"},"functionSelector":"c62db206","mutability":"mutable","name":"wusdAddress","nameLocation":"1615:11:9","scope":2714,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1573,"name":"address","nodeType":"ElementaryTypeName","src":"1600:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":1577,"nodeType":"VariableDeclaration","src":"1680:24:9","nodes":[],"constant":false,"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"1637:38:9","text":"@notice WUSD价格精度1e30"},"functionSelector":"61b4fbde","mutability":"mutable","name":"wusdPrice","nameLocation":"1695:9:9","scope":2714,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1576,"name":"uint256","nodeType":"ElementaryTypeName","src":"1680:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":1580,"nodeType":"VariableDeclaration","src":"1756:22:9","nodes":[],"constant":false,"documentation":{"id":1578,"nodeType":"StructuredDocumentation","src":"1715:36:9","text":"@notice YT价格精度1e30"},"functionSelector":"adcc40cb","mutability":"mutable","name":"ytPrice","nameLocation":"1771:7:9","scope":2714,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1579,"name":"uint256","nodeType":"ElementaryTypeName","src":"1756:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":1584,"nodeType":"VariableDeclaration","src":"1818:46:9","nodes":[],"constant":true,"documentation":{"id":1581,"nodeType":"StructuredDocumentation","src":"1789:24:9","text":"@notice 价格精度"},"functionSelector":"95082d25","mutability":"constant","name":"PRICE_PRECISION","nameLocation":"1842:15:9","scope":2714,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1582,"name":"uint256","nodeType":"ElementaryTypeName","src":"1818:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653330","id":1583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1860:4:9","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000000000000000_by_1","typeString":"int_const 1000000000000000000000000000000"},"value":"1e30"},"visibility":"public"},{"id":1587,"nodeType":"VariableDeclaration","src":"1943:33:9","nodes":[],"constant":false,"documentation":{"id":1585,"nodeType":"StructuredDocumentation","src":"1875:63:9","text":"@notice 下一个赎回开放时间(所有用户统一)"},"functionSelector":"6d1b7711","mutability":"mutable","name":"nextRedemptionTime","nameLocation":"1958:18:9","scope":2714,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1586,"name":"uint256","nodeType":"ElementaryTypeName","src":"1943:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":1601,"nodeType":"StructDefinition","src":"2025:321:9","nodes":[],"canonicalName":"YTAssetVault.WithdrawRequest","documentation":{"id":1588,"nodeType":"StructuredDocumentation","src":"1987:33:9","text":"@notice 提现请求结构体"},"members":[{"constant":false,"id":1590,"mutability":"mutable","name":"user","nameLocation":"2066:4:9","nodeType":"VariableDeclaration","scope":1601,"src":"2058:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1589,"name":"address","nodeType":"ElementaryTypeName","src":"2058:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1592,"mutability":"mutable","name":"ytAmount","nameLocation":"2114:8:9","nodeType":"VariableDeclaration","scope":1601,"src":"2106:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1591,"name":"uint256","nodeType":"ElementaryTypeName","src":"2106:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1594,"mutability":"mutable","name":"wusdAmount","nameLocation":"2158:10:9","nodeType":"VariableDeclaration","scope":1601,"src":"2150:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1593,"name":"uint256","nodeType":"ElementaryTypeName","src":"2150:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1596,"mutability":"mutable","name":"requestTime","nameLocation":"2210:11:9","nodeType":"VariableDeclaration","scope":1601,"src":"2202:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1595,"name":"uint256","nodeType":"ElementaryTypeName","src":"2202:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1598,"mutability":"mutable","name":"queueIndex","nameLocation":"2258:10:9","nodeType":"VariableDeclaration","scope":1601,"src":"2250:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1597,"name":"uint256","nodeType":"ElementaryTypeName","src":"2250:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1600,"mutability":"mutable","name":"processed","nameLocation":"2303:9:9","nodeType":"VariableDeclaration","scope":1601,"src":"2298:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1599,"name":"bool","nodeType":"ElementaryTypeName","src":"2298:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"WithdrawRequest","nameLocation":"2032:15:9","scope":2714,"visibility":"public"},{"id":1607,"nodeType":"VariableDeclaration","src":"2397:59:9","nodes":[],"constant":false,"documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"2356:36:9","text":"@notice 请求ID => 请求详情"},"functionSelector":"992a7dfb","mutability":"mutable","name":"withdrawRequests","nameLocation":"2440:16:9","scope":2714,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_WithdrawRequest_$1601_storage_$","typeString":"mapping(uint256 => struct YTAssetVault.WithdrawRequest)"},"typeName":{"id":1606,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":1603,"name":"uint256","nodeType":"ElementaryTypeName","src":"2405:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"2397:35:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_WithdrawRequest_$1601_storage_$","typeString":"mapping(uint256 => struct YTAssetVault.WithdrawRequest)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1605,"nodeType":"UserDefinedTypeName","pathNode":{"id":1604,"name":"WithdrawRequest","nameLocations":["2416:15:9"],"nodeType":"IdentifierPath","referencedDeclaration":1601,"src":"2416:15:9"},"referencedDeclaration":1601,"src":"2416:15:9","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawRequest_$1601_storage_ptr","typeString":"struct YTAssetVault.WithdrawRequest"}}},"visibility":"public"},{"id":1613,"nodeType":"VariableDeclaration","src":"2529:52:9","nodes":[],"constant":false,"documentation":{"id":1608,"nodeType":"StructuredDocumentation","src":"2467:57:9","text":"@notice 用户地址 => 用户的所有请求ID列表"},"mutability":"mutable","name":"userRequestIds","nameLocation":"2567:14:9","scope":2714,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(address => uint256[])"},"typeName":{"id":1612,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":1609,"name":"address","nodeType":"ElementaryTypeName","src":"2537:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2529:29:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(address => uint256[])"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"baseType":{"id":1610,"name":"uint256","nodeType":"ElementaryTypeName","src":"2548:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1611,"nodeType":"ArrayTypeName","src":"2548:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"visibility":"private"},{"id":1616,"nodeType":"VariableDeclaration","src":"2626:31:9","nodes":[],"constant":false,"documentation":{"id":1614,"nodeType":"StructuredDocumentation","src":"2592:29:9","text":"@notice 请求ID计数器"},"functionSelector":"8db5888a","mutability":"mutable","name":"requestIdCounter","nameLocation":"2641:16:9","scope":2714,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1615,"name":"uint256","nodeType":"ElementaryTypeName","src":"2626:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":1619,"nodeType":"VariableDeclaration","src":"2712:33:9","nodes":[],"constant":false,"documentation":{"id":1617,"nodeType":"StructuredDocumentation","src":"2668:39:9","text":"@notice 已处理到的队列位置"},"functionSelector":"5985aa91","mutability":"mutable","name":"processedUpToIndex","nameLocation":"2727:18:9","scope":2714,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1618,"name":"uint256","nodeType":"ElementaryTypeName","src":"2712:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":1622,"nodeType":"VariableDeclaration","src":"2842:35:9","nodes":[],"constant":false,"documentation":{"id":1620,"nodeType":"StructuredDocumentation","src":"2756:81:9","text":"@notice 当前待处理的请求数量(实时维护,避免循环计算)"},"functionSelector":"ca1d4dbf","mutability":"mutable","name":"pendingRequestsCount","nameLocation":"2857:20:9","scope":2714,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1621,"name":"uint256","nodeType":"ElementaryTypeName","src":"2842:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":1626,"nodeType":"EventDefinition","src":"2888:37:9","nodes":[],"anonymous":false,"eventSelector":"917681cdf3d8a5ef720fb56128d5382782db742feb1d89fc6d376111254537b1","name":"HardCapSet","nameLocation":"2894:10:9","parameters":{"id":1625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1624,"indexed":false,"mutability":"mutable","name":"newHardCap","nameLocation":"2913:10:9","nodeType":"VariableDeclaration","scope":1626,"src":"2905:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1623,"name":"uint256","nodeType":"ElementaryTypeName","src":"2905:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2904:20:9"}},{"id":1630,"nodeType":"EventDefinition","src":"2930:45:9","nodes":[],"anonymous":false,"eventSelector":"60a0f5b9f9e81e98216071b85826681c796256fe3d1354ecb675580fba64fa69","name":"ManagerSet","nameLocation":"2936:10:9","parameters":{"id":1629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1628,"indexed":true,"mutability":"mutable","name":"newManager","nameLocation":"2963:10:9","nodeType":"VariableDeclaration","scope":1630,"src":"2947:26:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1627,"name":"address","nodeType":"ElementaryTypeName","src":"2947:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2946:28:9"}},{"id":1636,"nodeType":"EventDefinition","src":"2980:58:9","nodes":[],"anonymous":false,"eventSelector":"9c7d81f5c562ad9c8121c58f01611d162a1a92cd745d05620728cbf3b497d946","name":"AssetsWithdrawn","nameLocation":"2986:15:9","parameters":{"id":1635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1632,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"3018:2:9","nodeType":"VariableDeclaration","scope":1636,"src":"3002:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1631,"name":"address","nodeType":"ElementaryTypeName","src":"3002:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1634,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"3030:6:9","nodeType":"VariableDeclaration","scope":1636,"src":"3022:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1633,"name":"uint256","nodeType":"ElementaryTypeName","src":"3022:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3001:36:9"}},{"id":1640,"nodeType":"EventDefinition","src":"3043:38:9","nodes":[],"anonymous":false,"eventSelector":"c9f7a13e1c4c85a54db88e66f7e4e45fd1c96aa33d720e0c7d737d2fe0c35589","name":"AssetsDeposited","nameLocation":"3049:15:9","parameters":{"id":1639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1638,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"3073:6:9","nodeType":"VariableDeclaration","scope":1640,"src":"3065:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1637,"name":"uint256","nodeType":"ElementaryTypeName","src":"3065:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3064:16:9"}},{"id":1648,"nodeType":"EventDefinition","src":"3086:74:9","nodes":[],"anonymous":false,"eventSelector":"15819dd2fd9f6418b142e798d08a18d0bf06ea368f4480b7b0d3f75bd966bc48","name":"PriceUpdated","nameLocation":"3092:12:9","parameters":{"id":1647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1642,"indexed":false,"mutability":"mutable","name":"wusdPrice","nameLocation":"3113:9:9","nodeType":"VariableDeclaration","scope":1648,"src":"3105:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1641,"name":"uint256","nodeType":"ElementaryTypeName","src":"3105:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1644,"indexed":false,"mutability":"mutable","name":"ytPrice","nameLocation":"3132:7:9","nodeType":"VariableDeclaration","scope":1648,"src":"3124:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1643,"name":"uint256","nodeType":"ElementaryTypeName","src":"3124:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1646,"indexed":false,"mutability":"mutable","name":"timestamp","nameLocation":"3149:9:9","nodeType":"VariableDeclaration","scope":1648,"src":"3141:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1645,"name":"uint256","nodeType":"ElementaryTypeName","src":"3141:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3104:55:9"}},{"id":1656,"nodeType":"EventDefinition","src":"3165:70:9","nodes":[],"anonymous":false,"eventSelector":"1cbc5ab135991bd2b6a4b034a04aa2aa086dac1371cb9b16b8b5e2ed6b036bed","name":"Buy","nameLocation":"3171:3:9","parameters":{"id":1655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1650,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"3191:4:9","nodeType":"VariableDeclaration","scope":1656,"src":"3175:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1649,"name":"address","nodeType":"ElementaryTypeName","src":"3175:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1652,"indexed":false,"mutability":"mutable","name":"wusdAmount","nameLocation":"3205:10:9","nodeType":"VariableDeclaration","scope":1656,"src":"3197:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1651,"name":"uint256","nodeType":"ElementaryTypeName","src":"3197:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1654,"indexed":false,"mutability":"mutable","name":"ytAmount","nameLocation":"3225:8:9","nodeType":"VariableDeclaration","scope":1656,"src":"3217:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1653,"name":"uint256","nodeType":"ElementaryTypeName","src":"3217:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3174:60:9"}},{"id":1664,"nodeType":"EventDefinition","src":"3240:71:9","nodes":[],"anonymous":false,"eventSelector":"ed7a144fad14804d5c249145e3e0e2b63a9eb455b76aee5bc92d711e9bba3e4a","name":"Sell","nameLocation":"3246:4:9","parameters":{"id":1663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"3267:4:9","nodeType":"VariableDeclaration","scope":1664,"src":"3251:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1657,"name":"address","nodeType":"ElementaryTypeName","src":"3251:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1660,"indexed":false,"mutability":"mutable","name":"ytAmount","nameLocation":"3281:8:9","nodeType":"VariableDeclaration","scope":1664,"src":"3273:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1659,"name":"uint256","nodeType":"ElementaryTypeName","src":"3273:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1662,"indexed":false,"mutability":"mutable","name":"wusdAmount","nameLocation":"3299:10:9","nodeType":"VariableDeclaration","scope":1664,"src":"3291:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1661,"name":"uint256","nodeType":"ElementaryTypeName","src":"3291:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3250:60:9"}},{"id":1668,"nodeType":"EventDefinition","src":"3316:55:9","nodes":[],"anonymous":false,"eventSelector":"416fcf16acb00f8607906e6ef2dc1a381d4bf32971ab1c3d2f73e4160718df48","name":"NextRedemptionTimeSet","nameLocation":"3322:21:9","parameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"indexed":false,"mutability":"mutable","name":"newRedemptionTime","nameLocation":"3352:17:9","nodeType":"VariableDeclaration","scope":1668,"src":"3344:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1665,"name":"uint256","nodeType":"ElementaryTypeName","src":"3344:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3343:27:9"}},{"id":1680,"nodeType":"EventDefinition","src":"3376:136:9","nodes":[],"anonymous":false,"eventSelector":"20f7dfd9f0abf903e86253c3c8003c824588449e922c1950794a7e95482fde9f","name":"WithdrawRequestCreated","nameLocation":"3382:22:9","parameters":{"id":1679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1670,"indexed":true,"mutability":"mutable","name":"requestId","nameLocation":"3421:9:9","nodeType":"VariableDeclaration","scope":1680,"src":"3405:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1669,"name":"uint256","nodeType":"ElementaryTypeName","src":"3405:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1672,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"3448:4:9","nodeType":"VariableDeclaration","scope":1680,"src":"3432:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1671,"name":"address","nodeType":"ElementaryTypeName","src":"3432:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1674,"indexed":false,"mutability":"mutable","name":"ytAmount","nameLocation":"3462:8:9","nodeType":"VariableDeclaration","scope":1680,"src":"3454:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1673,"name":"uint256","nodeType":"ElementaryTypeName","src":"3454:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1676,"indexed":false,"mutability":"mutable","name":"wusdAmount","nameLocation":"3480:10:9","nodeType":"VariableDeclaration","scope":1680,"src":"3472:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1675,"name":"uint256","nodeType":"ElementaryTypeName","src":"3472:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1678,"indexed":false,"mutability":"mutable","name":"queueIndex","nameLocation":"3500:10:9","nodeType":"VariableDeclaration","scope":1680,"src":"3492:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1677,"name":"uint256","nodeType":"ElementaryTypeName","src":"3492:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3404:107:9"}},{"id":1688,"nodeType":"EventDefinition","src":"3517:100:9","nodes":[],"anonymous":false,"eventSelector":"a6f8d99476ac27e3ad3ba71b521ed76898081c2e37dfe7bbc219456306b8b070","name":"WithdrawRequestProcessed","nameLocation":"3523:24:9","parameters":{"id":1687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1682,"indexed":true,"mutability":"mutable","name":"requestId","nameLocation":"3564:9:9","nodeType":"VariableDeclaration","scope":1688,"src":"3548:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1681,"name":"uint256","nodeType":"ElementaryTypeName","src":"3548:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1684,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"3591:4:9","nodeType":"VariableDeclaration","scope":1688,"src":"3575:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1683,"name":"address","nodeType":"ElementaryTypeName","src":"3575:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1686,"indexed":false,"mutability":"mutable","name":"wusdAmount","nameLocation":"3605:10:9","nodeType":"VariableDeclaration","scope":1688,"src":"3597:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1685,"name":"uint256","nodeType":"ElementaryTypeName","src":"3597:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3547:69:9"}},{"id":1698,"nodeType":"EventDefinition","src":"3622:113:9","nodes":[],"anonymous":false,"eventSelector":"59d088174aee33f5ff817f6507a076513b43d5b623c805aaca6d79677742f6e7","name":"BatchProcessed","nameLocation":"3628:14:9","parameters":{"id":1697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1690,"indexed":false,"mutability":"mutable","name":"startIndex","nameLocation":"3651:10:9","nodeType":"VariableDeclaration","scope":1698,"src":"3643:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1689,"name":"uint256","nodeType":"ElementaryTypeName","src":"3643:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1692,"indexed":false,"mutability":"mutable","name":"endIndex","nameLocation":"3671:8:9","nodeType":"VariableDeclaration","scope":1698,"src":"3663:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1691,"name":"uint256","nodeType":"ElementaryTypeName","src":"3663:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1694,"indexed":false,"mutability":"mutable","name":"processedCount","nameLocation":"3689:14:9","nodeType":"VariableDeclaration","scope":1698,"src":"3681:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1693,"name":"uint256","nodeType":"ElementaryTypeName","src":"3681:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1696,"indexed":false,"mutability":"mutable","name":"totalWusdDistributed","nameLocation":"3713:20:9","nodeType":"VariableDeclaration","scope":1698,"src":"3705:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1695,"name":"uint256","nodeType":"ElementaryTypeName","src":"3705:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3642:92:9"}},{"id":1710,"nodeType":"ModifierDefinition","src":"3745:96:9","nodes":[],"body":{"id":1709,"nodeType":"Block","src":"3768:73:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1700,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3782:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3786:6:9","memberName":"sender","nodeType":"MemberAccess","src":"3782:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1702,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1562,"src":"3796:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3782:21:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1707,"nodeType":"IfStatement","src":"3778:45:9","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1704,"name":"Forbidden","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1539,"src":"3812:9:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3812:11:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1706,"nodeType":"RevertStatement","src":"3805:18:9"}},{"id":1708,"nodeType":"PlaceholderStatement","src":"3833:1:9"}]},"name":"onlyFactory","nameLocation":"3754:11:9","parameters":{"id":1699,"nodeType":"ParameterList","parameters":[],"src":"3765:2:9"},"virtual":false,"visibility":"internal"},{"id":1722,"nodeType":"ModifierDefinition","src":"3851:96:9","nodes":[],"body":{"id":1721,"nodeType":"Block","src":"3874:73:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1712,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3888:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3892:6:9","memberName":"sender","nodeType":"MemberAccess","src":"3888:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1714,"name":"manager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1565,"src":"3902:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3888:21:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1719,"nodeType":"IfStatement","src":"3884:45:9","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1716,"name":"Forbidden","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1539,"src":"3918:9:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3918:11:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1718,"nodeType":"RevertStatement","src":"3911:18:9"}},{"id":1720,"nodeType":"PlaceholderStatement","src":"3939:1:9"}]},"name":"onlyManager","nameLocation":"3860:11:9","parameters":{"id":1711,"nodeType":"ParameterList","parameters":[],"src":"3871:2:9"},"virtual":false,"visibility":"internal"},{"id":1806,"nodeType":"FunctionDefinition","src":"4512:974:9","nodes":[],"body":{"id":1805,"nodeType":"Block","src":"4795:691:9","nodes":[],"statements":[{"expression":{"id":1754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1744,"name":"wusdAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1574,"src":"4805:11:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1745,"name":"_wusd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1733,"src":"4819:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4836:1:9","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":1747,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4828:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1746,"name":"address","nodeType":"ElementaryTypeName","src":"4828:7:9","typeDescriptions":{}}},"id":1749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4828:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4819:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1752,"name":"_wusd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1733,"src":"4912:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4819:98:9","trueExpression":{"hexValue":"307837436430313763613564646238363836314641393833613334623546343935433646383938633431","id":1751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4854:42:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0x7Cd017ca5ddb86861FA983a34b5F495C6F898c41"},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4805:112:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1755,"nodeType":"ExpressionStatement","src":"4805:112:9"},{"expression":{"arguments":[{"id":1757,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1725,"src":"4949:5:9","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":1758,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1727,"src":"4956:7:9","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1756,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10902,"src":"4936:12:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":1759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4936:28:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1760,"nodeType":"ExpressionStatement","src":"4936:28:9"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1761,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10706,"src":"4974:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4974:24:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1763,"nodeType":"ExpressionStatement","src":"4974:24:9"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1764,"name":"__ReentrancyGuard_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11697,"src":"5008:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5008:24:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1766,"nodeType":"ExpressionStatement","src":"5008:24:9"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1767,"name":"__Pausable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11561,"src":"5042:15:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5042:17:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1769,"nodeType":"ExpressionStatement","src":"5042:17:9"},{"expression":{"id":1773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1770,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1562,"src":"5078:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":1771,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5088:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5092:6:9","memberName":"sender","nodeType":"MemberAccess","src":"5088:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5078:20:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1774,"nodeType":"ExpressionStatement","src":"5078:20:9"},{"expression":{"id":1777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1775,"name":"manager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1565,"src":"5108:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1776,"name":"_manager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1729,"src":"5118:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5108:18:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1778,"nodeType":"ExpressionStatement","src":"5108:18:9"},{"expression":{"id":1781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1779,"name":"hardCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1568,"src":"5136:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1780,"name":"_hardCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1731,"src":"5146:8:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5136:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1782,"nodeType":"ExpressionStatement","src":"5136:18:9"},{"expression":{"id":1790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1783,"name":"wusdPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1577,"src":"5246:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1784,"name":"_initialWusdPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1737,"src":"5258:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5279:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5258:22:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1788,"name":"_initialWusdPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1737,"src":"5301:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5258:60:9","trueExpression":{"id":1787,"name":"PRICE_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1584,"src":"5283:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5246:72:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1791,"nodeType":"ExpressionStatement","src":"5246:72:9"},{"expression":{"id":1799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1792,"name":"ytPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1580,"src":"5328:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1793,"name":"_initialYtPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1739,"src":"5338:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5357:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5338:20:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1797,"name":"_initialYtPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1739,"src":"5379:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5338:56:9","trueExpression":{"id":1796,"name":"PRICE_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1584,"src":"5361:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5328:66:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1800,"nodeType":"ExpressionStatement","src":"5328:66:9"},{"expression":{"id":1803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1801,"name":"nextRedemptionTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1587,"src":"5443:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1802,"name":"_redemptionTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1735,"src":"5464:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5443:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1804,"nodeType":"ExpressionStatement","src":"5443:36:9"}]},"documentation":{"id":1723,"nodeType":"StructuredDocumentation","src":"3957:550:9","text":" @notice 初始化金库\n @param _name YT代币名称\n @param _symbol YT代币符号\n @param _manager 管理员地址\n @param _hardCap 硬顶限制\n @param _wusd WUSD代币地址可选传0则使用默认地址\n @param _redemptionTime 赎回时间Unix时间戳\n @param _initialWusdPrice 初始WUSD价格精度1e30传0则使用默认值1.0\n @param _initialYtPrice 初始YT价格精度1e30传0则使用默认值1.0\n \n @dev 价格精度为1e30"},"functionSelector":"8dc9bf28","implemented":true,"kind":"function","modifiers":[{"id":1742,"kind":"modifierInvocation","modifierName":{"id":1741,"name":"initializer","nameLocations":["4783:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":10492,"src":"4783:11:9"},"nodeType":"ModifierInvocation","src":"4783:11:9"}],"name":"initialize","nameLocation":"4521:10:9","parameters":{"id":1740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1725,"mutability":"mutable","name":"_name","nameLocation":"4555:5:9","nodeType":"VariableDeclaration","scope":1806,"src":"4541:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1724,"name":"string","nodeType":"ElementaryTypeName","src":"4541:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1727,"mutability":"mutable","name":"_symbol","nameLocation":"4584:7:9","nodeType":"VariableDeclaration","scope":1806,"src":"4570:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1726,"name":"string","nodeType":"ElementaryTypeName","src":"4570:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"_manager","nameLocation":"4609:8:9","nodeType":"VariableDeclaration","scope":1806,"src":"4601:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1728,"name":"address","nodeType":"ElementaryTypeName","src":"4601:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1731,"mutability":"mutable","name":"_hardCap","nameLocation":"4635:8:9","nodeType":"VariableDeclaration","scope":1806,"src":"4627:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1730,"name":"uint256","nodeType":"ElementaryTypeName","src":"4627:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1733,"mutability":"mutable","name":"_wusd","nameLocation":"4661:5:9","nodeType":"VariableDeclaration","scope":1806,"src":"4653:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1732,"name":"address","nodeType":"ElementaryTypeName","src":"4653:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1735,"mutability":"mutable","name":"_redemptionTime","nameLocation":"4684:15:9","nodeType":"VariableDeclaration","scope":1806,"src":"4676:23:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1734,"name":"uint256","nodeType":"ElementaryTypeName","src":"4676:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1737,"mutability":"mutable","name":"_initialWusdPrice","nameLocation":"4717:17:9","nodeType":"VariableDeclaration","scope":1806,"src":"4709:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1736,"name":"uint256","nodeType":"ElementaryTypeName","src":"4709:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1739,"mutability":"mutable","name":"_initialYtPrice","nameLocation":"4752:15:9","nodeType":"VariableDeclaration","scope":1806,"src":"4744:23:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1738,"name":"uint256","nodeType":"ElementaryTypeName","src":"4744:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4531:242:9"},"returnParameters":{"id":1743,"nodeType":"ParameterList","parameters":[],"src":"4795:0:9"},"scope":2714,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1816,"nodeType":"FunctionDefinition","src":"5619:86:9","nodes":[],"body":{"id":1815,"nodeType":"Block","src":"5703:2:9","nodes":[],"statements":[]},"baseFunctions":[10788],"documentation":{"id":1807,"nodeType":"StructuredDocumentation","src":"5496:118:9","text":" @notice 授权升级仅factory可调用\n @param newImplementation 新实现合约地址"},"implemented":true,"kind":"function","modifiers":[{"id":1813,"kind":"modifierInvocation","modifierName":{"id":1812,"name":"onlyFactory","nameLocations":["5691:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":1710,"src":"5691:11:9"},"nodeType":"ModifierInvocation","src":"5691:11:9"}],"name":"_authorizeUpgrade","nameLocation":"5628:17:9","overrides":{"id":1811,"nodeType":"OverrideSpecifier","overrides":[],"src":"5682:8:9"},"parameters":{"id":1810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1809,"mutability":"mutable","name":"newImplementation","nameLocation":"5654:17:9","nodeType":"VariableDeclaration","scope":1816,"src":"5646:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1808,"name":"address","nodeType":"ElementaryTypeName","src":"5646:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5645:27:9"},"returnParameters":{"id":1814,"nodeType":"ParameterList","parameters":[],"src":"5703:0:9"},"scope":2714,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1841,"nodeType":"FunctionDefinition","src":"5798:192:9","nodes":[],"body":{"id":1840,"nodeType":"Block","src":"5857:133:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1824,"name":"_hardCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1819,"src":"5871:8:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1825,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10987,"src":"5882:11:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":1826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5882:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5871:24:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1831,"nodeType":"IfStatement","src":"5867:53:9","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1828,"name":"InvalidHardCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1545,"src":"5904:14:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5904:16:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1830,"nodeType":"RevertStatement","src":"5897:23:9"}},{"expression":{"id":1834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1832,"name":"hardCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1568,"src":"5930:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1833,"name":"_hardCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1819,"src":"5940:8:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5930:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1835,"nodeType":"ExpressionStatement","src":"5930:18:9"},{"eventCall":{"arguments":[{"id":1837,"name":"_hardCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1819,"src":"5974:8:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1836,"name":"HardCapSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1626,"src":"5963:10:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":1838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5963:20:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1839,"nodeType":"EmitStatement","src":"5958:25:9"}]},"documentation":{"id":1817,"nodeType":"StructuredDocumentation","src":"5715:78:9","text":" @notice 设置硬顶\n @param _hardCap 新的硬顶值"},"functionSelector":"d18d944b","implemented":true,"kind":"function","modifiers":[{"id":1822,"kind":"modifierInvocation","modifierName":{"id":1821,"name":"onlyFactory","nameLocations":["5845:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":1710,"src":"5845:11:9"},"nodeType":"ModifierInvocation","src":"5845:11:9"}],"name":"setHardCap","nameLocation":"5807:10:9","parameters":{"id":1820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1819,"mutability":"mutable","name":"_hardCap","nameLocation":"5826:8:9","nodeType":"VariableDeclaration","scope":1841,"src":"5818:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1818,"name":"uint256","nodeType":"ElementaryTypeName","src":"5818:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5817:18:9"},"returnParameters":{"id":1823,"nodeType":"ParameterList","parameters":[],"src":"5857:0:9"},"scope":2714,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1858,"nodeType":"FunctionDefinition","src":"6089:129:9","nodes":[],"body":{"id":1857,"nodeType":"Block","src":"6148:70:9","nodes":[],"statements":[{"expression":{"id":1851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1849,"name":"manager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1565,"src":"6158:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1850,"name":"_manager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1844,"src":"6168:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6158:18:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1852,"nodeType":"ExpressionStatement","src":"6158:18:9"},{"eventCall":{"arguments":[{"id":1854,"name":"_manager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1844,"src":"6202:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1853,"name":"ManagerSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1630,"src":"6191:10:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6191:20:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1856,"nodeType":"EmitStatement","src":"6186:25:9"}]},"documentation":{"id":1842,"nodeType":"StructuredDocumentation","src":"6000:84:9","text":" @notice 设置管理员\n @param _manager 新管理员地址"},"functionSelector":"d0ebdbe7","implemented":true,"kind":"function","modifiers":[{"id":1847,"kind":"modifierInvocation","modifierName":{"id":1846,"name":"onlyFactory","nameLocations":["6136:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":1710,"src":"6136:11:9"},"nodeType":"ModifierInvocation","src":"6136:11:9"}],"name":"setManager","nameLocation":"6098:10:9","parameters":{"id":1845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1844,"mutability":"mutable","name":"_manager","nameLocation":"6117:8:9","nodeType":"VariableDeclaration","scope":1858,"src":"6109:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1843,"name":"address","nodeType":"ElementaryTypeName","src":"6109:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6108:18:9"},"returnParameters":{"id":1848,"nodeType":"ParameterList","parameters":[],"src":"6148:0:9"},"scope":2714,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1868,"nodeType":"FunctionDefinition","src":"6358:63:9","nodes":[],"body":{"id":1867,"nodeType":"Block","src":"6396:25:9","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1864,"name":"_pause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11632,"src":"6406:6:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6406:8:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1866,"nodeType":"ExpressionStatement","src":"6406:8:9"}]},"documentation":{"id":1859,"nodeType":"StructuredDocumentation","src":"6228:125:9","text":" @notice 暂停合约仅factory可调用\n @dev 暂停后,所有资金流动操作将被禁止"},"functionSelector":"8456cb59","implemented":true,"kind":"function","modifiers":[{"id":1862,"kind":"modifierInvocation","modifierName":{"id":1861,"name":"onlyFactory","nameLocations":["6384:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":1710,"src":"6384:11:9"},"nodeType":"ModifierInvocation","src":"6384:11:9"}],"name":"pause","nameLocation":"6367:5:9","parameters":{"id":1860,"nodeType":"ParameterList","parameters":[],"src":"6372:2:9"},"returnParameters":{"id":1863,"nodeType":"ParameterList","parameters":[],"src":"6396:0:9"},"scope":2714,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1878,"nodeType":"FunctionDefinition","src":"6500:67:9","nodes":[],"body":{"id":1877,"nodeType":"Block","src":"6540:27:9","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1874,"name":"_unpause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11656,"src":"6550:8:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6550:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1876,"nodeType":"ExpressionStatement","src":"6550:10:9"}]},"documentation":{"id":1869,"nodeType":"StructuredDocumentation","src":"6431:64:9","text":" @notice 恢复合约仅factory可调用"},"functionSelector":"3f4ba83a","implemented":true,"kind":"function","modifiers":[{"id":1872,"kind":"modifierInvocation","modifierName":{"id":1871,"name":"onlyFactory","nameLocations":["6528:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":1710,"src":"6528:11:9"},"nodeType":"ModifierInvocation","src":"6528:11:9"}],"name":"unpause","nameLocation":"6509:7:9","parameters":{"id":1870,"nodeType":"ParameterList","parameters":[],"src":"6516:2:9"},"returnParameters":{"id":1873,"nodeType":"ParameterList","parameters":[],"src":"6540:0:9"},"scope":2714,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1895,"nodeType":"FunctionDefinition","src":"6827:195:9","nodes":[],"body":{"id":1894,"nodeType":"Block","src":"6908:114:9","nodes":[],"statements":[{"expression":{"id":1888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1886,"name":"nextRedemptionTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1587,"src":"6918:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1887,"name":"_nextRedemptionTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1881,"src":"6939:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6918:40:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1889,"nodeType":"ExpressionStatement","src":"6918:40:9"},{"eventCall":{"arguments":[{"id":1891,"name":"_nextRedemptionTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1881,"src":"6995:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1890,"name":"NextRedemptionTimeSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1668,"src":"6973:21:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":1892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6973:42:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1893,"nodeType":"EmitStatement","src":"6968:47:9"}]},"documentation":{"id":1879,"nodeType":"StructuredDocumentation","src":"6577:245:9","text":" @notice 设置下一个赎回开放时间仅factory可调用\n @param _nextRedemptionTime 下一个赎回时间Unix时间戳\n @dev 所有用户统一在此时间后才能赎回,类似基金的赎回日"},"functionSelector":"792fbf3b","implemented":true,"kind":"function","modifiers":[{"id":1884,"kind":"modifierInvocation","modifierName":{"id":1883,"name":"onlyFactory","nameLocations":["6896:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":1710,"src":"6896:11:9"},"nodeType":"ModifierInvocation","src":"6896:11:9"}],"name":"setNextRedemptionTime","nameLocation":"6836:21:9","parameters":{"id":1882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1881,"mutability":"mutable","name":"_nextRedemptionTime","nameLocation":"6866:19:9","nodeType":"VariableDeclaration","scope":1895,"src":"6858:27:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1880,"name":"uint256","nodeType":"ElementaryTypeName","src":"6858:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6857:29:9"},"returnParameters":{"id":1885,"nodeType":"ParameterList","parameters":[],"src":"6908:0:9"},"scope":2714,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1932,"nodeType":"FunctionDefinition","src":"7201:301:9","nodes":[],"body":{"id":1931,"nodeType":"Block","src":"7282:220:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1905,"name":"_wusdPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"7296:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7310:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7296:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1908,"name":"_ytPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1900,"src":"7315:8:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7327:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7315:13:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7296:32:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1915,"nodeType":"IfStatement","src":"7292:59:9","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1912,"name":"InvalidPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1547,"src":"7337:12:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7337:14:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1914,"nodeType":"RevertStatement","src":"7330:21:9"}},{"expression":{"id":1918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1916,"name":"wusdPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1577,"src":"7370:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1917,"name":"_wusdPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"7382:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7370:22:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1919,"nodeType":"ExpressionStatement","src":"7370:22:9"},{"expression":{"id":1922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1920,"name":"ytPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1580,"src":"7402:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1921,"name":"_ytPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1900,"src":"7412:8:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7402:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1923,"nodeType":"ExpressionStatement","src":"7402:18:9"},{"eventCall":{"arguments":[{"id":1925,"name":"_wusdPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"7457:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1926,"name":"_ytPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1900,"src":"7469:8:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1927,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7479:5:9","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7485:9:9","memberName":"timestamp","nodeType":"MemberAccess","src":"7479:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1924,"name":"PriceUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1648,"src":"7444:12:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256)"}},"id":1929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7444:51:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1930,"nodeType":"EmitStatement","src":"7439:56:9"}]},"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"7032:164:9","text":" @notice 更新价格仅manager可调用\n @param _wusdPrice WUSD价格精度1e30\n @param _ytPrice YT价格精度1e30"},"functionSelector":"ef88d7f0","implemented":true,"kind":"function","modifiers":[{"id":1903,"kind":"modifierInvocation","modifierName":{"id":1902,"name":"onlyFactory","nameLocations":["7270:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":1710,"src":"7270:11:9"},"nodeType":"ModifierInvocation","src":"7270:11:9"}],"name":"updatePrices","nameLocation":"7210:12:9","parameters":{"id":1901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1898,"mutability":"mutable","name":"_wusdPrice","nameLocation":"7231:10:9","nodeType":"VariableDeclaration","scope":1932,"src":"7223:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1897,"name":"uint256","nodeType":"ElementaryTypeName","src":"7223:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1900,"mutability":"mutable","name":"_ytPrice","nameLocation":"7251:8:9","nodeType":"VariableDeclaration","scope":1932,"src":"7243:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1899,"name":"uint256","nodeType":"ElementaryTypeName","src":"7243:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7222:38:9"},"returnParameters":{"id":1904,"nodeType":"ParameterList","parameters":[],"src":"7282:0:9"},"scope":2714,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2002,"nodeType":"FunctionDefinition","src":"7720:701:9","nodes":[],"body":{"id":2001,"nodeType":"Block","src":"7863:558:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1944,"name":"_wusdAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1935,"src":"7877:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7892:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7877:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1950,"nodeType":"IfStatement","src":"7873:44:9","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1947,"name":"InvalidAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1543,"src":"7902:13:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7902:15:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1949,"nodeType":"RevertStatement","src":"7895:22:9"}},{"expression":{"id":1958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1951,"name":"ytAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1942,"src":"7977:8:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1952,"name":"_wusdAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1935,"src":"7989:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1953,"name":"wusdPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1577,"src":"8003:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7989:23:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1955,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7988:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1956,"name":"ytPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1580,"src":"8016:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7988:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7977:46:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1959,"nodeType":"ExpressionStatement","src":"7977:46:9"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1960,"name":"hardCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1568,"src":"8070:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8080:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8070:11:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1963,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10987,"src":"8085:11:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":1964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8085:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1965,"name":"ytAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1942,"src":"8101:8:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8085:24:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1967,"name":"hardCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1568,"src":"8112:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8085:34:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8070:49:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1974,"nodeType":"IfStatement","src":"8066:104:9","trueBody":{"id":1973,"nodeType":"Block","src":"8121:49:9","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1970,"name":"HardCapExceeded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1541,"src":"8142:15:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8142:17:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1972,"nodeType":"RevertStatement","src":"8135:24:9"}]}},{"expression":{"arguments":[{"expression":{"id":1979,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8247:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8251:6:9","memberName":"sender","nodeType":"MemberAccess","src":"8247:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":1983,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8267:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_YTAssetVault_$2714","typeString":"contract YTAssetVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_YTAssetVault_$2714","typeString":"contract YTAssetVault"}],"id":1982,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8259:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1981,"name":"address","nodeType":"ElementaryTypeName","src":"8259:7:9","typeDescriptions":{}}},"id":1984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8259:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1985,"name":"_wusdAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1935,"src":"8274:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1976,"name":"wusdAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1574,"src":"8217:11:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1975,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"8210:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":1977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8210:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":1978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8230:16:9","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":12746,"src":"8210:36:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$12648_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":1986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8210:76:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1987,"nodeType":"ExpressionStatement","src":"8210:76:9"},{"expression":{"arguments":[{"expression":{"id":1989,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8331:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8335:6:9","memberName":"sender","nodeType":"MemberAccess","src":"8331:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1991,"name":"ytAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1942,"src":"8343:8:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1988,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"8325:5:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8325:27:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1993,"nodeType":"ExpressionStatement","src":"8325:27:9"},{"eventCall":{"arguments":[{"expression":{"id":1995,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8380:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8384:6:9","memberName":"sender","nodeType":"MemberAccess","src":"8380:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1997,"name":"_wusdAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1935,"src":"8392:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1998,"name":"ytAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1942,"src":"8405:8:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1994,"name":"Buy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1656,"src":"8376:3:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":1999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8376:38:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2000,"nodeType":"EmitStatement","src":"8371:43:9"}]},"documentation":{"id":1933,"nodeType":"StructuredDocumentation","src":"7512:203:9","text":" @notice 用WUSD购买YT\n @param _wusdAmount 支付的WUSD数量\n @return ytAmount 实际获得的YT数量\n @dev 首次购买时YT价格 = WUSD价格1:1兑换"},"functionSelector":"a2874172","implemented":true,"kind":"function","modifiers":[{"id":1938,"kind":"modifierInvocation","modifierName":{"id":1937,"name":"nonReentrant","nameLocations":["7787:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":11726,"src":"7787:12:9"},"nodeType":"ModifierInvocation","src":"7787:12:9"},{"id":1940,"kind":"modifierInvocation","modifierName":{"id":1939,"name":"whenNotPaused","nameLocations":["7809:13:9"],"nodeType":"IdentifierPath","referencedDeclaration":11547,"src":"7809:13:9"},"nodeType":"ModifierInvocation","src":"7809:13:9"}],"name":"depositYT","nameLocation":"7729:9:9","parameters":{"id":1936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1935,"mutability":"mutable","name":"_wusdAmount","nameLocation":"7747:11:9","nodeType":"VariableDeclaration","scope":2002,"src":"7739:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1934,"name":"uint256","nodeType":"ElementaryTypeName","src":"7739:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7738:21:9"},"returnParameters":{"id":1943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1942,"mutability":"mutable","name":"ytAmount","nameLocation":"7848:8:9","nodeType":"VariableDeclaration","scope":2002,"src":"7840:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1941,"name":"uint256","nodeType":"ElementaryTypeName","src":"7840:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7839:18:9"},"scope":2714,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2098,"nodeType":"FunctionDefinition","src":"8704:1316:9","nodes":[],"body":{"id":2097,"nodeType":"Block","src":"8847:1173:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2014,"name":"_ytAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2005,"src":"8861:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8874:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8861:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2020,"nodeType":"IfStatement","src":"8857:42:9","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2017,"name":"InvalidAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1543,"src":"8884:13:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8884:15:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2019,"nodeType":"RevertStatement","src":"8877:22:9"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":2022,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8923:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8927:6:9","memberName":"sender","nodeType":"MemberAccess","src":"8923:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2021,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11007,"src":"8913:9:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":2024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8913:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2025,"name":"_ytAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2005,"src":"8937:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8913:33:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2030,"nodeType":"IfStatement","src":"8909:63:9","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2027,"name":"InsufficientYTA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1551,"src":"8955:15:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8955:17:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2029,"nodeType":"RevertStatement","src":"8948:24:9"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2031,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"9043:5:9","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9049:9:9","memberName":"timestamp","nodeType":"MemberAccess","src":"9043:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2033,"name":"nextRedemptionTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1587,"src":"9061:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9043:36:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2039,"nodeType":"IfStatement","src":"9039:93:9","trueBody":{"id":2038,"nodeType":"Block","src":"9081:51:9","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2035,"name":"StillInLockPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1553,"src":"9102:17:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9102:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2037,"nodeType":"RevertStatement","src":"9095:26:9"}]}},{"assignments":[2041],"declarations":[{"constant":false,"id":2041,"mutability":"mutable","name":"wusdAmount","nameLocation":"9201:10:9","nodeType":"VariableDeclaration","scope":2097,"src":"9193:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2040,"name":"uint256","nodeType":"ElementaryTypeName","src":"9193:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2048,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2042,"name":"_ytAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2005,"src":"9215:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2043,"name":"ytPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1580,"src":"9227:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9215:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2045,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9214:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2046,"name":"wusdPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1577,"src":"9238:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9214:33:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9193:54:9"},{"expression":{"arguments":[{"expression":{"id":2050,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9298:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9302:6:9","memberName":"sender","nodeType":"MemberAccess","src":"9298:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2052,"name":"_ytAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2005,"src":"9310:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2049,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11316,"src":"9292:5:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9292:28:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2054,"nodeType":"ExpressionStatement","src":"9292:28:9"},{"expression":{"id":2057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2055,"name":"requestId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2012,"src":"9369:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2056,"name":"requestIdCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1616,"src":"9381:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9369:28:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2058,"nodeType":"ExpressionStatement","src":"9369:28:9"},{"expression":{"id":2072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2059,"name":"withdrawRequests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"9407:16:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_WithdrawRequest_$1601_storage_$","typeString":"mapping(uint256 => struct YTAssetVault.WithdrawRequest storage ref)"}},"id":2061,"indexExpression":{"id":2060,"name":"requestId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2012,"src":"9424:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9407:27:9","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawRequest_$1601_storage","typeString":"struct YTAssetVault.WithdrawRequest storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":2063,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9473:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9477:6:9","memberName":"sender","nodeType":"MemberAccess","src":"9473:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2065,"name":"_ytAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2005,"src":"9507:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2066,"name":"wusdAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"9542:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2067,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"9579:5:9","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9585:9:9","memberName":"timestamp","nodeType":"MemberAccess","src":"9579:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2069,"name":"requestId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2012,"src":"9620:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":2070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9654:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2062,"name":"WithdrawRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1601,"src":"9437:15:9","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_WithdrawRequest_$1601_storage_ptr_$","typeString":"type(struct YTAssetVault.WithdrawRequest storage pointer)"}},"id":2071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["9467:4:9","9497:8:9","9530:10:9","9566:11:9","9608:10:9","9643:9:9"],"names":["user","ytAmount","wusdAmount","requestTime","queueIndex","processed"],"nodeType":"FunctionCall","src":"9437:233:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawRequest_$1601_memory_ptr","typeString":"struct YTAssetVault.WithdrawRequest memory"}},"src":"9407:263:9","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawRequest_$1601_storage","typeString":"struct YTAssetVault.WithdrawRequest storage ref"}},"id":2073,"nodeType":"ExpressionStatement","src":"9407:263:9"},{"expression":{"arguments":[{"id":2079,"name":"requestId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2012,"src":"9756:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":2074,"name":"userRequestIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1613,"src":"9724:14:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(address => uint256[] storage ref)"}},"id":2077,"indexExpression":{"expression":{"id":2075,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9739:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9743:6:9","memberName":"sender","nodeType":"MemberAccess","src":"9739:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9724:26:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":2078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9751:4:9","memberName":"push","nodeType":"MemberAccess","src":"9724:31:9","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$","typeString":"function (uint256[] storage pointer,uint256)"}},"id":2080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9724:42:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2081,"nodeType":"ExpressionStatement","src":"9724:42:9"},{"expression":{"id":2083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9812:18:9","subExpression":{"id":2082,"name":"requestIdCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1616,"src":"9812:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2084,"nodeType":"ExpressionStatement","src":"9812:18:9"},{"expression":{"id":2086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9888:22:9","subExpression":{"id":2085,"name":"pendingRequestsCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1622,"src":"9888:20:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2087,"nodeType":"ExpressionStatement","src":"9888:22:9"},{"eventCall":{"arguments":[{"id":2089,"name":"requestId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2012,"src":"9957:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2090,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9968:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9972:6:9","memberName":"sender","nodeType":"MemberAccess","src":"9968:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2092,"name":"_ytAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2005,"src":"9980:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2093,"name":"wusdAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2041,"src":"9991:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2094,"name":"requestId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2012,"src":"10003:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2088,"name":"WithdrawRequestCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1680,"src":"9934:22:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,address,uint256,uint256,uint256)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9934:79:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2096,"nodeType":"EmitStatement","src":"9929:84:9"}]},"documentation":{"id":2003,"nodeType":"StructuredDocumentation","src":"8431:268:9","text":" @notice 提交YT提现请求需要等到统一赎回时间\n @param _ytAmount 卖出的YT数量\n @return requestId 提现请求ID\n @dev 用户提交请求后YT会立即销毁但WUSD需要等待批量处理后才能领取"},"functionSelector":"7229bc3c","implemented":true,"kind":"function","modifiers":[{"id":2008,"kind":"modifierInvocation","modifierName":{"id":2007,"name":"nonReentrant","nameLocations":["8770:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":11726,"src":"8770:12:9"},"nodeType":"ModifierInvocation","src":"8770:12:9"},{"id":2010,"kind":"modifierInvocation","modifierName":{"id":2009,"name":"whenNotPaused","nameLocations":["8792:13:9"],"nodeType":"IdentifierPath","referencedDeclaration":11547,"src":"8792:13:9"},"nodeType":"ModifierInvocation","src":"8792:13:9"}],"name":"withdrawYT","nameLocation":"8713:10:9","parameters":{"id":2006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2005,"mutability":"mutable","name":"_ytAmount","nameLocation":"8732:9:9","nodeType":"VariableDeclaration","scope":2098,"src":"8724:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2004,"name":"uint256","nodeType":"ElementaryTypeName","src":"8724:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8723:19:9"},"returnParameters":{"id":2013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2012,"mutability":"mutable","name":"requestId","nameLocation":"8831:9:9","nodeType":"VariableDeclaration","scope":2098,"src":"8823:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2011,"name":"uint256","nodeType":"ElementaryTypeName","src":"8823:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8822:19:9"},"scope":2714,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2273,"nodeType":"FunctionDefinition","src":"10395:2404:9","nodes":[],"body":{"id":2272,"nodeType":"Block","src":"10583:2216:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2112,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10659:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10663:6:9","memberName":"sender","nodeType":"MemberAccess","src":"10659:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2114,"name":"manager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1565,"src":"10673:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10659:21:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2116,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10684:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10688:6:9","memberName":"sender","nodeType":"MemberAccess","src":"10684:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2118,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1562,"src":"10698:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10684:21:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10659:46:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2125,"nodeType":"IfStatement","src":"10655:95:9","trueBody":{"id":2124,"nodeType":"Block","src":"10707:43:9","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2121,"name":"Forbidden","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1539,"src":"10728:9:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10728:11:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2123,"nodeType":"RevertStatement","src":"10721:18:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2126,"name":"_batchSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2101,"src":"10772:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10786:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10772:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2132,"nodeType":"IfStatement","src":"10768:46:9","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2129,"name":"InvalidBatchSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1559,"src":"10796:16:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10796:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2131,"nodeType":"RevertStatement","src":"10789:25:9"}},{"assignments":[2134],"declarations":[{"constant":false,"id":2134,"mutability":"mutable","name":"availableWUSD","nameLocation":"10841:13:9","nodeType":"VariableDeclaration","scope":2272,"src":"10833:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2133,"name":"uint256","nodeType":"ElementaryTypeName","src":"10833:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2144,"initialValue":{"arguments":[{"arguments":[{"id":2141,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"10895:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_YTAssetVault_$2714","typeString":"contract YTAssetVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_YTAssetVault_$2714","typeString":"contract YTAssetVault"}],"id":2140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10887:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2139,"name":"address","nodeType":"ElementaryTypeName","src":"10887:7:9","typeDescriptions":{}}},"id":2142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10887:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":2136,"name":"wusdAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1574,"src":"10864:11:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2135,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"10857:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":2137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10857:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":2138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10877:9:9","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":12605,"src":"10857:29:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":2143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10857:44:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10833:68:9"},{"assignments":[2146],"declarations":[{"constant":false,"id":2146,"mutability":"mutable","name":"startIndex","nameLocation":"10919:10:9","nodeType":"VariableDeclaration","scope":2272,"src":"10911:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2145,"name":"uint256","nodeType":"ElementaryTypeName","src":"10911:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2148,"initialValue":{"id":2147,"name":"processedUpToIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1619,"src":"10932:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10911:39:9"},{"body":{"id":2223,"nodeType":"Block","src":"11064:1040:9","statements":[{"assignments":[2165],"declarations":[{"constant":false,"id":2165,"mutability":"mutable","name":"request","nameLocation":"11102:7:9","nodeType":"VariableDeclaration","scope":2223,"src":"11078:31:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawRequest_$1601_storage_ptr","typeString":"struct YTAssetVault.WithdrawRequest"},"typeName":{"id":2164,"nodeType":"UserDefinedTypeName","pathNode":{"id":2163,"name":"WithdrawRequest","nameLocations":["11078:15:9"],"nodeType":"IdentifierPath","referencedDeclaration":1601,"src":"11078:15:9"},"referencedDeclaration":1601,"src":"11078:15:9","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawRequest_$1601_storage_ptr","typeString":"struct YTAssetVault.WithdrawRequest"}},"visibility":"internal"}],"id":2169,"initialValue":{"baseExpression":{"id":2166,"name":"withdrawRequests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"11112:16:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_WithdrawRequest_$1601_storage_$","typeString":"mapping(uint256 => struct YTAssetVault.WithdrawRequest storage ref)"}},"id":2168,"indexExpression":{"id":2167,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2150,"src":"11129:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11112:19:9","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawRequest_$1601_storage","typeString":"struct YTAssetVault.WithdrawRequest storage ref"}},"nodeType":"VariableDeclarationStatement","src":"11078:53:9"},{"condition":{"expression":{"id":2170,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2165,"src":"11202:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawRequest_$1601_storage_ptr","typeString":"struct YTAssetVault.WithdrawRequest storage pointer"}},"id":2171,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11210:9:9","memberName":"processed","nodeType":"MemberAccess","referencedDeclaration":1600,"src":"11202:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2174,"nodeType":"IfStatement","src":"11198:64:9","trueBody":{"id":2173,"nodeType":"Block","src":"11221:41:9","statements":[{"id":2172,"nodeType":"Continue","src":"11239:8:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2175,"name":"availableWUSD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"11336:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":2176,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2165,"src":"11353:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawRequest_$1601_storage_ptr","typeString":"struct YTAssetVault.WithdrawRequest storage pointer"}},"id":2177,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11361:10:9","memberName":"wusdAmount","nodeType":"MemberAccess","referencedDeclaration":1594,"src":"11353:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11336:35:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2221,"nodeType":"Block","src":"12011:83:9","statements":[{"id":2220,"nodeType":"Break","src":"12074:5:9"}]},"id":2222,"nodeType":"IfStatement","src":"11332:762:9","trueBody":{"id":2219,"nodeType":"Block","src":"11373:632:9","statements":[{"expression":{"arguments":[{"expression":{"id":2183,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2165,"src":"11463:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawRequest_$1601_storage_ptr","typeString":"struct YTAssetVault.WithdrawRequest storage pointer"}},"id":2184,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11471:4:9","memberName":"user","nodeType":"MemberAccess","referencedDeclaration":1590,"src":"11463:12:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2185,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2165,"src":"11477:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawRequest_$1601_storage_ptr","typeString":"struct YTAssetVault.WithdrawRequest storage pointer"}},"id":2186,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11485:10:9","memberName":"wusdAmount","nodeType":"MemberAccess","referencedDeclaration":1594,"src":"11477:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":2180,"name":"wusdAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1574,"src":"11437:11:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2179,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"11430:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11430:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11450:12:9","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":12719,"src":"11430:32:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$12648_$","typeString":"function (contract IERC20,address,uint256)"}},"id":2187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11430:66:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2188,"nodeType":"ExpressionStatement","src":"11430:66:9"},{"expression":{"id":2193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2189,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2165,"src":"11569:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawRequest_$1601_storage_ptr","typeString":"struct YTAssetVault.WithdrawRequest storage pointer"}},"id":2191,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11577:9:9","memberName":"processed","nodeType":"MemberAccess","referencedDeclaration":1600,"src":"11569:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11589:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"11569:24:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2194,"nodeType":"ExpressionStatement","src":"11569:24:9"},{"expression":{"id":2198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2195,"name":"availableWUSD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"11660:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"expression":{"id":2196,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2165,"src":"11677:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawRequest_$1601_storage_ptr","typeString":"struct YTAssetVault.WithdrawRequest storage pointer"}},"id":2197,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11685:10:9","memberName":"wusdAmount","nodeType":"MemberAccess","referencedDeclaration":1594,"src":"11677:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11660:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2199,"nodeType":"ExpressionStatement","src":"11660:35:9"},{"expression":{"id":2203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2200,"name":"totalDistributed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2110,"src":"11713:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"id":2201,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2165,"src":"11733:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawRequest_$1601_storage_ptr","typeString":"struct YTAssetVault.WithdrawRequest storage pointer"}},"id":2202,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11741:10:9","memberName":"wusdAmount","nodeType":"MemberAccess","referencedDeclaration":1594,"src":"11733:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11713:38:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2204,"nodeType":"ExpressionStatement","src":"11713:38:9"},{"expression":{"id":2206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"11769:16:9","subExpression":{"id":2205,"name":"processedCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"11769:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2207,"nodeType":"ExpressionStatement","src":"11769:16:9"},{"expression":{"id":2209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"11867:22:9","subExpression":{"id":2208,"name":"pendingRequestsCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1622,"src":"11867:20:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2210,"nodeType":"ExpressionStatement","src":"11867:22:9"},{"eventCall":{"arguments":[{"id":2212,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2150,"src":"11954:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2213,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2165,"src":"11957:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawRequest_$1601_storage_ptr","typeString":"struct YTAssetVault.WithdrawRequest storage pointer"}},"id":2214,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11965:4:9","memberName":"user","nodeType":"MemberAccess","referencedDeclaration":1590,"src":"11957:12:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2215,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2165,"src":"11971:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawRequest_$1601_storage_ptr","typeString":"struct YTAssetVault.WithdrawRequest storage pointer"}},"id":2216,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11979:10:9","memberName":"wusdAmount","nodeType":"MemberAccess","referencedDeclaration":1594,"src":"11971:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2211,"name":"WithdrawRequestProcessed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"11929:24:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$__$","typeString":"function (uint256,address,uint256)"}},"id":2217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11929:61:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2218,"nodeType":"EmitStatement","src":"11924:66:9"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2153,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2150,"src":"11006:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2154,"name":"requestIdCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1616,"src":"11010:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11006:20:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2156,"name":"processedCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"11030:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2157,"name":"_batchSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2101,"src":"11047:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11030:27:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11006:51:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2224,"initializationExpression":{"assignments":[2150],"declarations":[{"constant":false,"id":2150,"mutability":"mutable","name":"i","nameLocation":"10982:1:9","nodeType":"VariableDeclaration","scope":2224,"src":"10974:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2149,"name":"uint256","nodeType":"ElementaryTypeName","src":"10974:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2152,"initialValue":{"id":2151,"name":"processedUpToIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1619,"src":"10986:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10974:30:9"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"11059:3:9","subExpression":{"id":2160,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2150,"src":"11059:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2162,"nodeType":"ExpressionStatement","src":"11059:3:9"},"nodeType":"ForStatement","src":"10969:1135:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2225,"name":"processedCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"12195:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12212:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12195:18:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2264,"nodeType":"IfStatement","src":"12191:498:9","trueBody":{"id":2263,"nodeType":"Block","src":"12215:474:9","statements":[{"body":{"id":2261,"nodeType":"Block","src":"12342:337:9","statements":[{"condition":{"id":2242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"12364:30:9","subExpression":{"expression":{"baseExpression":{"id":2238,"name":"withdrawRequests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"12365:16:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_WithdrawRequest_$1601_storage_$","typeString":"mapping(uint256 => struct YTAssetVault.WithdrawRequest storage ref)"}},"id":2240,"indexExpression":{"id":2239,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2229,"src":"12382:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12365:19:9","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawRequest_$1601_storage","typeString":"struct YTAssetVault.WithdrawRequest storage ref"}},"id":2241,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12385:9:9","memberName":"processed","nodeType":"MemberAccess","referencedDeclaration":1600,"src":"12365:29:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2249,"nodeType":"IfStatement","src":"12360:126:9","trueBody":{"id":2248,"nodeType":"Block","src":"12396:90:9","statements":[{"expression":{"id":2245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2243,"name":"processedUpToIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1619,"src":"12418:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2244,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2229,"src":"12439:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12418:22:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2246,"nodeType":"ExpressionStatement","src":"12418:22:9"},{"id":2247,"nodeType":"Break","src":"12462:5:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2250,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2229,"src":"12560:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2251,"name":"requestIdCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1616,"src":"12565:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12584:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12565:20:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12560:25:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2260,"nodeType":"IfStatement","src":"12556:109:9","trueBody":{"id":2259,"nodeType":"Block","src":"12587:78:9","statements":[{"expression":{"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2255,"name":"processedUpToIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1619,"src":"12609:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2256,"name":"requestIdCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1616,"src":"12630:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12609:37:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2258,"nodeType":"ExpressionStatement","src":"12609:37:9"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2232,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2229,"src":"12315:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2233,"name":"requestIdCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1616,"src":"12319:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12315:20:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2262,"initializationExpression":{"assignments":[2229],"declarations":[{"constant":false,"id":2229,"mutability":"mutable","name":"i","nameLocation":"12291:1:9","nodeType":"VariableDeclaration","scope":2262,"src":"12283:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2228,"name":"uint256","nodeType":"ElementaryTypeName","src":"12283:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2231,"initialValue":{"id":2230,"name":"processedUpToIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1619,"src":"12295:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12283:30:9"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12337:3:9","subExpression":{"id":2235,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2229,"src":"12337:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2237,"nodeType":"ExpressionStatement","src":"12337:3:9"},"nodeType":"ForStatement","src":"12278:401:9"}]}},{"eventCall":{"arguments":[{"id":2266,"name":"startIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2146,"src":"12727:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2267,"name":"processedUpToIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1619,"src":"12739:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2268,"name":"processedCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"12759:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2269,"name":"totalDistributed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2110,"src":"12775:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2265,"name":"BatchProcessed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1698,"src":"12712:14:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256,uint256)"}},"id":2270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12712:80:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2271,"nodeType":"EmitStatement","src":"12707:85:9"}]},"documentation":{"id":2099,"nodeType":"StructuredDocumentation","src":"10030:360:9","text":" @notice 批量处理提现请求仅manager或factory可调用\n @param _batchSize 本批次最多处理的请求数量\n @return processedCount 实际处理的请求数量\n @return totalDistributed 实际分发的WUSD总量\n @dev 按照请求ID顺序即时间先后依次处理遇到资金不足时停止"},"functionSelector":"29a26445","implemented":true,"kind":"function","modifiers":[{"id":2104,"kind":"modifierInvocation","modifierName":{"id":2103,"name":"nonReentrant","nameLocations":["10475:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":11726,"src":"10475:12:9"},"nodeType":"ModifierInvocation","src":"10475:12:9"},{"id":2106,"kind":"modifierInvocation","modifierName":{"id":2105,"name":"whenNotPaused","nameLocations":["10497:13:9"],"nodeType":"IdentifierPath","referencedDeclaration":11547,"src":"10497:13:9"},"nodeType":"ModifierInvocation","src":"10497:13:9"}],"name":"processBatchWithdrawals","nameLocation":"10404:23:9","parameters":{"id":2102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2101,"mutability":"mutable","name":"_batchSize","nameLocation":"10436:10:9","nodeType":"VariableDeclaration","scope":2273,"src":"10428:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2100,"name":"uint256","nodeType":"ElementaryTypeName","src":"10428:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10427:20:9"},"returnParameters":{"id":2111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2108,"mutability":"mutable","name":"processedCount","nameLocation":"10536:14:9","nodeType":"VariableDeclaration","scope":2273,"src":"10528:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"10528:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2110,"mutability":"mutable","name":"totalDistributed","nameLocation":"10560:16:9","nodeType":"VariableDeclaration","scope":2273,"src":"10552:24:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2109,"name":"uint256","nodeType":"ElementaryTypeName","src":"10552:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10527:50:9"},"scope":2714,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2287,"nodeType":"FunctionDefinition","src":"12954:128:9","nodes":[],"body":{"id":2286,"nodeType":"Block","src":"13037:45:9","nodes":[],"statements":[{"expression":{"baseExpression":{"id":2282,"name":"userRequestIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1613,"src":"13054:14:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(address => uint256[] storage ref)"}},"id":2284,"indexExpression":{"id":2283,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2276,"src":"13069:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13054:21:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"functionReturnParameters":2281,"id":2285,"nodeType":"Return","src":"13047:28:9"}]},"documentation":{"id":2274,"nodeType":"StructuredDocumentation","src":"12809:140:9","text":" @notice 查询用户的所有提现请求ID\n @param _user 用户地址\n @return 用户的所有请求ID数组"},"functionSelector":"60df7c6c","implemented":true,"kind":"function","modifiers":[],"name":"getUserRequestIds","nameLocation":"12963:17:9","parameters":{"id":2277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2276,"mutability":"mutable","name":"_user","nameLocation":"12989:5:9","nodeType":"VariableDeclaration","scope":2287,"src":"12981:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2275,"name":"address","nodeType":"ElementaryTypeName","src":"12981:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12980:15:9"},"returnParameters":{"id":2281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2287,"src":"13019:16:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2278,"name":"uint256","nodeType":"ElementaryTypeName","src":"13019:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2279,"nodeType":"ArrayTypeName","src":"13019:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"13018:18:9"},"scope":2714,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":2308,"nodeType":"FunctionDefinition","src":"13221:224:9","nodes":[],"body":{"id":2307,"nodeType":"Block","src":"13323:122:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2296,"name":"_requestId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2290,"src":"13337:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":2297,"name":"requestIdCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1616,"src":"13351:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13337:30:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2302,"nodeType":"IfStatement","src":"13333:60:9","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2299,"name":"RequestNotFound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1555,"src":"13376:15:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13376:17:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2301,"nodeType":"RevertStatement","src":"13369:24:9"}},{"expression":{"baseExpression":{"id":2303,"name":"withdrawRequests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"13410:16:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_WithdrawRequest_$1601_storage_$","typeString":"mapping(uint256 => struct YTAssetVault.WithdrawRequest storage ref)"}},"id":2305,"indexExpression":{"id":2304,"name":"_requestId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2290,"src":"13427:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13410:28:9","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawRequest_$1601_storage","typeString":"struct YTAssetVault.WithdrawRequest storage ref"}},"functionReturnParameters":2295,"id":2306,"nodeType":"Return","src":"13403:35:9"}]},"documentation":{"id":2288,"nodeType":"StructuredDocumentation","src":"13092:124:9","text":" @notice 查询指定请求的详情\n @param _requestId 请求ID\n @return request 请求详情"},"functionSelector":"f34d4c63","implemented":true,"kind":"function","modifiers":[],"name":"getRequestDetails","nameLocation":"13230:17:9","parameters":{"id":2291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2290,"mutability":"mutable","name":"_requestId","nameLocation":"13256:10:9","nodeType":"VariableDeclaration","scope":2308,"src":"13248:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2289,"name":"uint256","nodeType":"ElementaryTypeName","src":"13248:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13247:20:9"},"returnParameters":{"id":2295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2294,"mutability":"mutable","name":"request","nameLocation":"13314:7:9","nodeType":"VariableDeclaration","scope":2308,"src":"13291:30:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawRequest_$1601_memory_ptr","typeString":"struct YTAssetVault.WithdrawRequest"},"typeName":{"id":2293,"nodeType":"UserDefinedTypeName","pathNode":{"id":2292,"name":"WithdrawRequest","nameLocations":["13291:15:9"],"nodeType":"IdentifierPath","referencedDeclaration":1601,"src":"13291:15:9"},"referencedDeclaration":1601,"src":"13291:15:9","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawRequest_$1601_storage_ptr","typeString":"struct YTAssetVault.WithdrawRequest"}},"visibility":"internal"}],"src":"13290:32:9"},"scope":2714,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":2317,"nodeType":"FunctionDefinition","src":"13634:111:9","nodes":[],"body":{"id":2316,"nodeType":"Block","src":"13701:44:9","nodes":[],"statements":[{"expression":{"id":2314,"name":"pendingRequestsCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1622,"src":"13718:20:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2313,"id":2315,"nodeType":"Return","src":"13711:27:9"}]},"documentation":{"id":2309,"nodeType":"StructuredDocumentation","src":"13455:174:9","text":" @notice 获取待处理的请求数量\n @return 待处理的请求总数\n @dev 使用实时维护的计数器O(1)复杂度避免gas爆炸"},"functionSelector":"188c26cc","implemented":true,"kind":"function","modifiers":[],"name":"getPendingRequestsCount","nameLocation":"13643:23:9","parameters":{"id":2310,"nodeType":"ParameterList","parameters":[],"src":"13666:2:9"},"returnParameters":{"id":2313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2312,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2317,"src":"13692:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2311,"name":"uint256","nodeType":"ElementaryTypeName","src":"13692:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13691:9:9"},"scope":2714,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":2416,"nodeType":"FunctionDefinition","src":"13918:858:9","nodes":[],"body":{"id":2415,"nodeType":"Block","src":"14030:746:9","nodes":[],"statements":[{"assignments":[2331],"declarations":[{"constant":false,"id":2331,"mutability":"mutable","name":"requestIds","nameLocation":"14057:10:9","nodeType":"VariableDeclaration","scope":2415,"src":"14040:27:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2329,"name":"uint256","nodeType":"ElementaryTypeName","src":"14040:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2330,"nodeType":"ArrayTypeName","src":"14040:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":2335,"initialValue":{"baseExpression":{"id":2332,"name":"userRequestIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1613,"src":"14070:14:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$","typeString":"mapping(address => uint256[] storage ref)"}},"id":2334,"indexExpression":{"id":2333,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2320,"src":"14085:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14070:21:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"14040:51:9"},{"assignments":[2337],"declarations":[{"constant":false,"id":2337,"mutability":"mutable","name":"pendingCount","nameLocation":"14166:12:9","nodeType":"VariableDeclaration","scope":2415,"src":"14158:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2336,"name":"uint256","nodeType":"ElementaryTypeName","src":"14158:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2339,"initialValue":{"hexValue":"30","id":2338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14181:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"14158:24:9"},{"body":{"id":2363,"nodeType":"Block","src":"14240:119:9","statements":[{"condition":{"id":2357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14258:42:9","subExpression":{"expression":{"baseExpression":{"id":2351,"name":"withdrawRequests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"14259:16:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_WithdrawRequest_$1601_storage_$","typeString":"mapping(uint256 => struct YTAssetVault.WithdrawRequest storage ref)"}},"id":2355,"indexExpression":{"baseExpression":{"id":2352,"name":"requestIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2331,"src":"14276:10:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2354,"indexExpression":{"id":2353,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2341,"src":"14287:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14276:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14259:31:9","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawRequest_$1601_storage","typeString":"struct YTAssetVault.WithdrawRequest storage ref"}},"id":2356,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14291:9:9","memberName":"processed","nodeType":"MemberAccess","referencedDeclaration":1600,"src":"14259:41:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2362,"nodeType":"IfStatement","src":"14254:95:9","trueBody":{"id":2361,"nodeType":"Block","src":"14302:47:9","statements":[{"expression":{"id":2359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"14320:14:9","subExpression":{"id":2358,"name":"pendingCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2337,"src":"14320:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2360,"nodeType":"ExpressionStatement","src":"14320:14:9"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2344,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2341,"src":"14212:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2345,"name":"requestIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2331,"src":"14216:10:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14227:6:9","memberName":"length","nodeType":"MemberAccess","src":"14216:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14212:21:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2364,"initializationExpression":{"assignments":[2341],"declarations":[{"constant":false,"id":2341,"mutability":"mutable","name":"i","nameLocation":"14205:1:9","nodeType":"VariableDeclaration","scope":2364,"src":"14197:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2340,"name":"uint256","nodeType":"ElementaryTypeName","src":"14197:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2343,"initialValue":{"hexValue":"30","id":2342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14209:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"14197:13:9"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"14235:3:9","subExpression":{"id":2348,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2341,"src":"14235:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2350,"nodeType":"ExpressionStatement","src":"14235:3:9"},"nodeType":"ForStatement","src":"14192:167:9"},{"expression":{"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2365,"name":"pendingRequests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2325,"src":"14407:15:9","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WithdrawRequest_$1601_memory_ptr_$dyn_memory_ptr","typeString":"struct YTAssetVault.WithdrawRequest memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2370,"name":"pendingCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2337,"src":"14447:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2369,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"14425:21:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_WithdrawRequest_$1601_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct YTAssetVault.WithdrawRequest memory[] memory)"},"typeName":{"baseType":{"id":2367,"nodeType":"UserDefinedTypeName","pathNode":{"id":2366,"name":"WithdrawRequest","nameLocations":["14429:15:9"],"nodeType":"IdentifierPath","referencedDeclaration":1601,"src":"14429:15:9"},"referencedDeclaration":1601,"src":"14429:15:9","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawRequest_$1601_storage_ptr","typeString":"struct YTAssetVault.WithdrawRequest"}},"id":2368,"nodeType":"ArrayTypeName","src":"14429:17:9","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WithdrawRequest_$1601_storage_$dyn_storage_ptr","typeString":"struct YTAssetVault.WithdrawRequest[]"}}},"id":2371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14425:35:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WithdrawRequest_$1601_memory_ptr_$dyn_memory_ptr","typeString":"struct YTAssetVault.WithdrawRequest memory[] memory"}},"src":"14407:53:9","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WithdrawRequest_$1601_memory_ptr_$dyn_memory_ptr","typeString":"struct YTAssetVault.WithdrawRequest memory[] memory"}},"id":2373,"nodeType":"ExpressionStatement","src":"14407:53:9"},{"assignments":[2375],"declarations":[{"constant":false,"id":2375,"mutability":"mutable","name":"index","nameLocation":"14478:5:9","nodeType":"VariableDeclaration","scope":2415,"src":"14470:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2374,"name":"uint256","nodeType":"ElementaryTypeName","src":"14470:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2377,"initialValue":{"hexValue":"30","id":2376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14486:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"14470:17:9"},{"body":{"id":2413,"nodeType":"Block","src":"14545:225:9","statements":[{"assignments":[2390],"declarations":[{"constant":false,"id":2390,"mutability":"mutable","name":"requestId","nameLocation":"14567:9:9","nodeType":"VariableDeclaration","scope":2413,"src":"14559:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2389,"name":"uint256","nodeType":"ElementaryTypeName","src":"14559:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2394,"initialValue":{"baseExpression":{"id":2391,"name":"requestIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2331,"src":"14579:10:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2393,"indexExpression":{"id":2392,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2379,"src":"14590:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14579:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14559:33:9"},{"condition":{"id":2399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14610:38:9","subExpression":{"expression":{"baseExpression":{"id":2395,"name":"withdrawRequests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"14611:16:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_WithdrawRequest_$1601_storage_$","typeString":"mapping(uint256 => struct YTAssetVault.WithdrawRequest storage ref)"}},"id":2397,"indexExpression":{"id":2396,"name":"requestId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2390,"src":"14628:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14611:27:9","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawRequest_$1601_storage","typeString":"struct YTAssetVault.WithdrawRequest storage ref"}},"id":2398,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14639:9:9","memberName":"processed","nodeType":"MemberAccess","referencedDeclaration":1600,"src":"14611:37:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2412,"nodeType":"IfStatement","src":"14606:154:9","trueBody":{"id":2411,"nodeType":"Block","src":"14650:110:9","statements":[{"expression":{"id":2406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2400,"name":"pendingRequests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2325,"src":"14668:15:9","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WithdrawRequest_$1601_memory_ptr_$dyn_memory_ptr","typeString":"struct YTAssetVault.WithdrawRequest memory[] memory"}},"id":2402,"indexExpression":{"id":2401,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2375,"src":"14684:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14668:22:9","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawRequest_$1601_memory_ptr","typeString":"struct YTAssetVault.WithdrawRequest memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":2403,"name":"withdrawRequests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"14693:16:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_WithdrawRequest_$1601_storage_$","typeString":"mapping(uint256 => struct YTAssetVault.WithdrawRequest storage ref)"}},"id":2405,"indexExpression":{"id":2404,"name":"requestId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2390,"src":"14710:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14693:27:9","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawRequest_$1601_storage","typeString":"struct YTAssetVault.WithdrawRequest storage ref"}},"src":"14668:52:9","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawRequest_$1601_memory_ptr","typeString":"struct YTAssetVault.WithdrawRequest memory"}},"id":2407,"nodeType":"ExpressionStatement","src":"14668:52:9"},{"expression":{"id":2409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"14738:7:9","subExpression":{"id":2408,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2375,"src":"14738:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2410,"nodeType":"ExpressionStatement","src":"14738:7:9"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2382,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2379,"src":"14517:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2383,"name":"requestIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2331,"src":"14521:10:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14532:6:9","memberName":"length","nodeType":"MemberAccess","src":"14521:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14517:21:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2414,"initializationExpression":{"assignments":[2379],"declarations":[{"constant":false,"id":2379,"mutability":"mutable","name":"i","nameLocation":"14510:1:9","nodeType":"VariableDeclaration","scope":2414,"src":"14502:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2378,"name":"uint256","nodeType":"ElementaryTypeName","src":"14502:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2381,"initialValue":{"hexValue":"30","id":2380,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14514:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"14502:13:9"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":2387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"14540:3:9","subExpression":{"id":2386,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2379,"src":"14540:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2388,"nodeType":"ExpressionStatement","src":"14540:3:9"},"nodeType":"ForStatement","src":"14497:273:9"}]},"documentation":{"id":2318,"nodeType":"StructuredDocumentation","src":"13755:158:9","text":" @notice 获取用户待处理的请求\n @param _user 用户地址\n @return pendingRequests 用户待处理的请求详情数组"},"functionSelector":"e3992fc0","implemented":true,"kind":"function","modifiers":[],"name":"getUserPendingRequests","nameLocation":"13927:22:9","parameters":{"id":2321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2320,"mutability":"mutable","name":"_user","nameLocation":"13958:5:9","nodeType":"VariableDeclaration","scope":2416,"src":"13950:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2319,"name":"address","nodeType":"ElementaryTypeName","src":"13950:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13949:15:9"},"returnParameters":{"id":2326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2325,"mutability":"mutable","name":"pendingRequests","nameLocation":"14013:15:9","nodeType":"VariableDeclaration","scope":2416,"src":"13988:40:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WithdrawRequest_$1601_memory_ptr_$dyn_memory_ptr","typeString":"struct YTAssetVault.WithdrawRequest[]"},"typeName":{"baseType":{"id":2323,"nodeType":"UserDefinedTypeName","pathNode":{"id":2322,"name":"WithdrawRequest","nameLocations":["13988:15:9"],"nodeType":"IdentifierPath","referencedDeclaration":1601,"src":"13988:15:9"},"referencedDeclaration":1601,"src":"13988:15:9","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawRequest_$1601_storage_ptr","typeString":"struct YTAssetVault.WithdrawRequest"}},"id":2324,"nodeType":"ArrayTypeName","src":"13988:17:9","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WithdrawRequest_$1601_storage_$dyn_storage_ptr","typeString":"struct YTAssetVault.WithdrawRequest[]"}},"visibility":"internal"}],"src":"13987:42:9"},"scope":2714,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":2439,"nodeType":"FunctionDefinition","src":"15051:291:9","nodes":[],"body":{"id":2438,"nodeType":"Block","src":"15202:140:9","nodes":[],"statements":[{"expression":{"id":2428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2426,"name":"currentIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2420,"src":"15212:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2427,"name":"processedUpToIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1619,"src":"15227:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15212:33:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2429,"nodeType":"ExpressionStatement","src":"15212:33:9"},{"expression":{"id":2432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2430,"name":"totalRequests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2422,"src":"15255:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2431,"name":"requestIdCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1616,"src":"15271:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15255:32:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2433,"nodeType":"ExpressionStatement","src":"15255:32:9"},{"expression":{"id":2436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2434,"name":"pendingRequests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2424,"src":"15297:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2435,"name":"pendingRequestsCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1622,"src":"15315:20:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15297:38:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2437,"nodeType":"ExpressionStatement","src":"15297:38:9"}]},"documentation":{"id":2417,"nodeType":"StructuredDocumentation","src":"14786:260:9","text":" @notice 获取队列处理进度\n @return currentIndex 当前处理到的位置\n @return totalRequests 总请求数\n @return pendingRequests 待处理请求数\n @dev 使用实时维护的计数器,避免循环计算"},"functionSelector":"532e20b5","implemented":true,"kind":"function","modifiers":[],"name":"getQueueProgress","nameLocation":"15060:16:9","parameters":{"id":2418,"nodeType":"ParameterList","parameters":[],"src":"15076:2:9"},"returnParameters":{"id":2425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2420,"mutability":"mutable","name":"currentIndex","nameLocation":"15119:12:9","nodeType":"VariableDeclaration","scope":2439,"src":"15111:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2419,"name":"uint256","nodeType":"ElementaryTypeName","src":"15111:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2422,"mutability":"mutable","name":"totalRequests","nameLocation":"15149:13:9","nodeType":"VariableDeclaration","scope":2439,"src":"15141:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2421,"name":"uint256","nodeType":"ElementaryTypeName","src":"15141:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2424,"mutability":"mutable","name":"pendingRequests","nameLocation":"15180:15:9","nodeType":"VariableDeclaration","scope":2439,"src":"15172:23:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2423,"name":"uint256","nodeType":"ElementaryTypeName","src":"15172:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15101:100:9"},"scope":2714,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":2459,"nodeType":"FunctionDefinition","src":"15505:229:9","nodes":[],"body":{"id":2458,"nodeType":"Block","src":"15589:145:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2445,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"15603:5:9","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15609:9:9","memberName":"timestamp","nodeType":"MemberAccess","src":"15603:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":2447,"name":"nextRedemptionTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1587,"src":"15622:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15603:37:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2452,"nodeType":"IfStatement","src":"15599:76:9","trueBody":{"id":2451,"nodeType":"Block","src":"15642:33:9","statements":[{"expression":{"hexValue":"30","id":2449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15663:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2444,"id":2450,"nodeType":"Return","src":"15656:8:9"}]}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2453,"name":"nextRedemptionTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1587,"src":"15691:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":2454,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"15712:5:9","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15718:9:9","memberName":"timestamp","nodeType":"MemberAccess","src":"15712:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15691:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2444,"id":2457,"nodeType":"Return","src":"15684:43:9"}]},"documentation":{"id":2440,"nodeType":"StructuredDocumentation","src":"15352:148:9","text":" @notice 查询距离下次赎回开放还需等待多久\n @return remainingTime 剩余时间0表示可以赎回"},"functionSelector":"5caa814f","implemented":true,"kind":"function","modifiers":[],"name":"getTimeUntilNextRedemption","nameLocation":"15514:26:9","parameters":{"id":2441,"nodeType":"ParameterList","parameters":[],"src":"15540:2:9"},"returnParameters":{"id":2444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2443,"mutability":"mutable","name":"remainingTime","nameLocation":"15574:13:9","nodeType":"VariableDeclaration","scope":2459,"src":"15566:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2442,"name":"uint256","nodeType":"ElementaryTypeName","src":"15566:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15565:23:9"},"scope":2714,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":2471,"nodeType":"FunctionDefinition","src":"15840:114:9","nodes":[],"body":{"id":2470,"nodeType":"Block","src":"15893:61:9","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2465,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"15910:5:9","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15916:9:9","memberName":"timestamp","nodeType":"MemberAccess","src":"15910:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":2467,"name":"nextRedemptionTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1587,"src":"15929:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15910:37:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2464,"id":2469,"nodeType":"Return","src":"15903:44:9"}]},"documentation":{"id":2460,"nodeType":"StructuredDocumentation","src":"15744:91:9","text":" @notice 检查当前是否可以赎回\n @return 是否可以赎回"},"functionSelector":"a747f072","implemented":true,"kind":"function","modifiers":[],"name":"canRedeemNow","nameLocation":"15849:12:9","parameters":{"id":2461,"nodeType":"ParameterList","parameters":[],"src":"15861:2:9"},"returnParameters":{"id":2464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2463,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2471,"src":"15887:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2462,"name":"bool","nodeType":"ElementaryTypeName","src":"15887:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15886:6:9"},"scope":2714,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":2529,"nodeType":"FunctionDefinition","src":"16090:470:9","nodes":[],"body":{"id":2528,"nodeType":"Block","src":"16199:361:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2485,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2476,"src":"16213:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16224:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16213:12:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2491,"nodeType":"IfStatement","src":"16209:40:9","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2488,"name":"InvalidAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1543,"src":"16234:13:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16234:15:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2490,"nodeType":"RevertStatement","src":"16227:22:9"}},{"assignments":[2493],"declarations":[{"constant":false,"id":2493,"mutability":"mutable","name":"availableAssets","nameLocation":"16276:15:9","nodeType":"VariableDeclaration","scope":2528,"src":"16268:23:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2492,"name":"uint256","nodeType":"ElementaryTypeName","src":"16268:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2503,"initialValue":{"arguments":[{"arguments":[{"id":2500,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"16332:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_YTAssetVault_$2714","typeString":"contract YTAssetVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_YTAssetVault_$2714","typeString":"contract YTAssetVault"}],"id":2499,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16324:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2498,"name":"address","nodeType":"ElementaryTypeName","src":"16324:7:9","typeDescriptions":{}}},"id":2501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16324:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":2495,"name":"wusdAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1574,"src":"16301:11:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2494,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"16294:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":2496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16294:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":2497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16314:9:9","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":12605,"src":"16294:29:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":2502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16294:44:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16268:70:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2504,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2476,"src":"16352:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2505,"name":"availableAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2493,"src":"16362:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16352:25:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2510,"nodeType":"IfStatement","src":"16348:53:9","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2507,"name":"InvalidAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1543,"src":"16386:13:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16386:15:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2509,"nodeType":"RevertStatement","src":"16379:22:9"}},{"expression":{"id":2513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2511,"name":"managedAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1571,"src":"16420:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2512,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2476,"src":"16437:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16420:24:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2514,"nodeType":"ExpressionStatement","src":"16420:24:9"},{"expression":{"arguments":[{"id":2519,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2474,"src":"16487:3:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2520,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2476,"src":"16492:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":2516,"name":"wusdAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1574,"src":"16461:11:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2515,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"16454:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":2517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16454:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":2518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16474:12:9","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":12719,"src":"16454:32:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$12648_$","typeString":"function (contract IERC20,address,uint256)"}},"id":2521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16454:46:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2522,"nodeType":"ExpressionStatement","src":"16454:46:9"},{"eventCall":{"arguments":[{"id":2524,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2474,"src":"16540:3:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2525,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2476,"src":"16545:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2523,"name":"AssetsWithdrawn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1636,"src":"16524:15:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16524:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2527,"nodeType":"EmitStatement","src":"16519:34:9"}]},"documentation":{"id":2472,"nodeType":"StructuredDocumentation","src":"15964:121:9","text":" @notice 提取WUSD用于外部投资\n @param _to 接收地址\n @param _amount 提取数量"},"functionSelector":"11a270cc","implemented":true,"kind":"function","modifiers":[{"id":2479,"kind":"modifierInvocation","modifierName":{"id":2478,"name":"onlyManager","nameLocations":["16160:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":1722,"src":"16160:11:9"},"nodeType":"ModifierInvocation","src":"16160:11:9"},{"id":2481,"kind":"modifierInvocation","modifierName":{"id":2480,"name":"nonReentrant","nameLocations":["16172:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":11726,"src":"16172:12:9"},"nodeType":"ModifierInvocation","src":"16172:12:9"},{"id":2483,"kind":"modifierInvocation","modifierName":{"id":2482,"name":"whenNotPaused","nameLocations":["16185:13:9"],"nodeType":"IdentifierPath","referencedDeclaration":11547,"src":"16185:13:9"},"nodeType":"ModifierInvocation","src":"16185:13:9"}],"name":"withdrawForManagement","nameLocation":"16099:21:9","parameters":{"id":2477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2474,"mutability":"mutable","name":"_to","nameLocation":"16129:3:9","nodeType":"VariableDeclaration","scope":2529,"src":"16121:11:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2473,"name":"address","nodeType":"ElementaryTypeName","src":"16121:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2476,"mutability":"mutable","name":"_amount","nameLocation":"16142:7:9","nodeType":"VariableDeclaration","scope":2529,"src":"16134:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2475,"name":"uint256","nodeType":"ElementaryTypeName","src":"16134:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16120:30:9"},"returnParameters":{"id":2484,"nodeType":"ParameterList","parameters":[],"src":"16199:0:9"},"scope":2714,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2580,"nodeType":"FunctionDefinition","src":"16709:679:9","nodes":[],"body":{"id":2579,"nodeType":"Block","src":"16804:584:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2541,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2532,"src":"16818:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16829:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16818:12:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2547,"nodeType":"IfStatement","src":"16814:40:9","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2544,"name":"InvalidAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1543,"src":"16839:13:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16839:15:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2546,"nodeType":"RevertStatement","src":"16832:22:9"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2548,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2532,"src":"16925:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":2549,"name":"managedAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1571,"src":"16936:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16925:24:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2560,"nodeType":"Block","src":"17092:110:9","statements":[{"expression":{"id":2558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2556,"name":"managedAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1571,"src":"17167:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":2557,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2532,"src":"17184:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17167:24:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2559,"nodeType":"ExpressionStatement","src":"17167:24:9"}]},"id":2561,"nodeType":"IfStatement","src":"16921:281:9","trueBody":{"id":2555,"nodeType":"Block","src":"16951:135:9","statements":[{"expression":{"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2551,"name":"managedAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1571,"src":"17058:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17074:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17058:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2554,"nodeType":"ExpressionStatement","src":"17058:17:9"}]}},{"expression":{"arguments":[{"expression":{"id":2566,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"17298:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17302:6:9","memberName":"sender","nodeType":"MemberAccess","src":"17298:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2570,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"17318:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_YTAssetVault_$2714","typeString":"contract YTAssetVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_YTAssetVault_$2714","typeString":"contract YTAssetVault"}],"id":2569,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17310:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2568,"name":"address","nodeType":"ElementaryTypeName","src":"17310:7:9","typeDescriptions":{}}},"id":2571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17310:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2572,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2532,"src":"17325:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":2563,"name":"wusdAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1574,"src":"17268:11:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2562,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"17261:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":2564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17261:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":2565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17281:16:9","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":12746,"src":"17261:36:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$12648_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":2573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17261:72:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2574,"nodeType":"ExpressionStatement","src":"17261:72:9"},{"eventCall":{"arguments":[{"id":2576,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2532,"src":"17373:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2575,"name":"AssetsDeposited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1640,"src":"17357:15:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17357:24:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2578,"nodeType":"EmitStatement","src":"17352:29:9"}]},"documentation":{"id":2530,"nodeType":"StructuredDocumentation","src":"16570:134:9","text":" @notice 将管理的资产归还到金库(可以归还更多,产生收益)\n @param _amount 归还数量"},"functionSelector":"73a33877","implemented":true,"kind":"function","modifiers":[{"id":2535,"kind":"modifierInvocation","modifierName":{"id":2534,"name":"onlyManager","nameLocations":["16765:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":1722,"src":"16765:11:9"},"nodeType":"ModifierInvocation","src":"16765:11:9"},{"id":2537,"kind":"modifierInvocation","modifierName":{"id":2536,"name":"nonReentrant","nameLocations":["16777:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":11726,"src":"16777:12:9"},"nodeType":"ModifierInvocation","src":"16777:12:9"},{"id":2539,"kind":"modifierInvocation","modifierName":{"id":2538,"name":"whenNotPaused","nameLocations":["16790:13:9"],"nodeType":"IdentifierPath","referencedDeclaration":11547,"src":"16790:13:9"},"nodeType":"ModifierInvocation","src":"16790:13:9"}],"name":"depositManagedAssets","nameLocation":"16718:20:9","parameters":{"id":2533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2532,"mutability":"mutable","name":"_amount","nameLocation":"16747:7:9","nodeType":"VariableDeclaration","scope":2580,"src":"16739:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2531,"name":"uint256","nodeType":"ElementaryTypeName","src":"16739:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16738:17:9"},"returnParameters":{"id":2540,"nodeType":"ParameterList","parameters":[],"src":"16804:0:9"},"scope":2714,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2599,"nodeType":"FunctionDefinition","src":"17536:137:9","nodes":[],"body":{"id":2598,"nodeType":"Block","src":"17589:84:9","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":2592,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"17644:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_YTAssetVault_$2714","typeString":"contract YTAssetVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_YTAssetVault_$2714","typeString":"contract YTAssetVault"}],"id":2591,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17636:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2590,"name":"address","nodeType":"ElementaryTypeName","src":"17636:7:9","typeDescriptions":{}}},"id":2593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17636:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":2587,"name":"wusdAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1574,"src":"17613:11:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2586,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"17606:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":2588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17606:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":2589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17626:9:9","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":12605,"src":"17606:29:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":2594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17606:44:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":2595,"name":"managedAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1571,"src":"17653:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17606:60:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2585,"id":2597,"nodeType":"Return","src":"17599:67:9"}]},"documentation":{"id":2581,"nodeType":"StructuredDocumentation","src":"17398:133:9","text":" @notice 获取总资产(包含被管理的资产)\n @return 总资产 = 合约余额 + 被管理的资产"},"functionSelector":"01e1d114","implemented":true,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"17545:11:9","parameters":{"id":2582,"nodeType":"ParameterList","parameters":[],"src":"17556:2:9"},"returnParameters":{"id":2585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2584,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2599,"src":"17580:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2583,"name":"uint256","nodeType":"ElementaryTypeName","src":"17580:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17579:9:9"},"scope":2714,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":2616,"nodeType":"FunctionDefinition","src":"17813:120:9","nodes":[],"body":{"id":2615,"nodeType":"Block","src":"17865:68:9","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":2611,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"17920:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_YTAssetVault_$2714","typeString":"contract YTAssetVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_YTAssetVault_$2714","typeString":"contract YTAssetVault"}],"id":2610,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17912:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2609,"name":"address","nodeType":"ElementaryTypeName","src":"17912:7:9","typeDescriptions":{}}},"id":2612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17912:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":2606,"name":"wusdAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1574,"src":"17889:11:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2605,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"17882:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":2607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17882:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":2608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17902:9:9","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":12605,"src":"17882:29:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":2613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17882:44:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2604,"id":2614,"nodeType":"Return","src":"17875:51:9"}]},"documentation":{"id":2600,"nodeType":"StructuredDocumentation","src":"17683:125:9","text":" @notice 获取空闲资产(可用于提取的资产)\n @return 合约中实际持有的WUSD数量"},"functionSelector":"e16b03a3","implemented":true,"kind":"function","modifiers":[],"name":"idleAssets","nameLocation":"17822:10:9","parameters":{"id":2601,"nodeType":"ParameterList","parameters":[],"src":"17832:2:9"},"returnParameters":{"id":2604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2603,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2616,"src":"17856:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2602,"name":"uint256","nodeType":"ElementaryTypeName","src":"17856:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17855:9:9"},"scope":2714,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":2634,"nodeType":"FunctionDefinition","src":"18123:145:9","nodes":[],"body":{"id":2633,"nodeType":"Block","src":"18205:63:9","nodes":[],"statements":[{"expression":{"id":2631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2624,"name":"ytAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2622,"src":"18215:8:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2625,"name":"_wusdAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2619,"src":"18227:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2626,"name":"wusdPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1577,"src":"18241:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18227:23:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2628,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18226:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2629,"name":"ytPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1580,"src":"18254:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18226:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18215:46:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2632,"nodeType":"ExpressionStatement","src":"18215:46:9"}]},"documentation":{"id":2617,"nodeType":"StructuredDocumentation","src":"17943:175:9","text":" @notice 预览购买计算支付指定WUSD可获得的YT数量\n @param _wusdAmount 支付的WUSD数量\n @return ytAmount 可获得的YT数量"},"functionSelector":"48153279","implemented":true,"kind":"function","modifiers":[],"name":"previewBuy","nameLocation":"18132:10:9","parameters":{"id":2620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2619,"mutability":"mutable","name":"_wusdAmount","nameLocation":"18151:11:9","nodeType":"VariableDeclaration","scope":2634,"src":"18143:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2618,"name":"uint256","nodeType":"ElementaryTypeName","src":"18143:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18142:21:9"},"returnParameters":{"id":2623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2622,"mutability":"mutable","name":"ytAmount","nameLocation":"18195:8:9","nodeType":"VariableDeclaration","scope":2634,"src":"18187:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2621,"name":"uint256","nodeType":"ElementaryTypeName","src":"18187:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18186:18:9"},"scope":2714,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":2652,"nodeType":"FunctionDefinition","src":"18458:146:9","nodes":[],"body":{"id":2651,"nodeType":"Block","src":"18541:63:9","nodes":[],"statements":[{"expression":{"id":2649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2642,"name":"wusdAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2640,"src":"18551:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2643,"name":"_ytAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"18565:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2644,"name":"ytPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1580,"src":"18577:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18565:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2646,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18564:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2647,"name":"wusdPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1577,"src":"18588:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18564:33:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18551:46:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2650,"nodeType":"ExpressionStatement","src":"18551:46:9"}]},"documentation":{"id":2635,"nodeType":"StructuredDocumentation","src":"18278:175:9","text":" @notice 预览卖出计算卖出指定YT可获得的WUSD数量\n @param _ytAmount 卖出的YT数量\n @return wusdAmount 可获得的WUSD数量"},"functionSelector":"fb3dd95f","implemented":true,"kind":"function","modifiers":[],"name":"previewSell","nameLocation":"18467:11:9","parameters":{"id":2638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2637,"mutability":"mutable","name":"_ytAmount","nameLocation":"18487:9:9","nodeType":"VariableDeclaration","scope":2652,"src":"18479:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2636,"name":"uint256","nodeType":"ElementaryTypeName","src":"18479:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18478:19:9"},"returnParameters":{"id":2641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2640,"mutability":"mutable","name":"wusdAmount","nameLocation":"18529:10:9","nodeType":"VariableDeclaration","scope":2652,"src":"18521:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2639,"name":"uint256","nodeType":"ElementaryTypeName","src":"18521:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18520:20:9"},"scope":2714,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":2708,"nodeType":"FunctionDefinition","src":"18664:588:9","nodes":[],"body":{"id":2707,"nodeType":"Block","src":"18955:297:9","nodes":[],"statements":[{"expression":{"id":2675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2672,"name":"_totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2656,"src":"18965:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":2673,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2599,"src":"18980:11:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":2674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18980:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18965:28:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2676,"nodeType":"ExpressionStatement","src":"18965:28:9"},{"expression":{"id":2680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2677,"name":"_idleAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2658,"src":"19003:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":2678,"name":"idleAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2616,"src":"19017:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":2679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19017:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19003:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2681,"nodeType":"ExpressionStatement","src":"19003:26:9"},{"expression":{"id":2684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2682,"name":"_managedAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2660,"src":"19039:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2683,"name":"managedAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1571,"src":"19056:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19039:30:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2685,"nodeType":"ExpressionStatement","src":"19039:30:9"},{"expression":{"id":2689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2686,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2662,"src":"19079:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":2687,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10987,"src":"19094:11:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":2688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19094:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19079:28:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2690,"nodeType":"ExpressionStatement","src":"19079:28:9"},{"expression":{"id":2693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2691,"name":"_hardCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2664,"src":"19117:8:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2692,"name":"hardCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1568,"src":"19128:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19117:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2694,"nodeType":"ExpressionStatement","src":"19117:18:9"},{"expression":{"id":2697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2695,"name":"_wusdPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2666,"src":"19145:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2696,"name":"wusdPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1577,"src":"19158:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19145:22:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2698,"nodeType":"ExpressionStatement","src":"19145:22:9"},{"expression":{"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2699,"name":"_ytPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2668,"src":"19177:8:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2700,"name":"ytPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1580,"src":"19188:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19177:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2702,"nodeType":"ExpressionStatement","src":"19177:18:9"},{"expression":{"id":2705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2703,"name":"_nextRedemptionTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2670,"src":"19205:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2704,"name":"nextRedemptionTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1587,"src":"19227:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19205:40:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2706,"nodeType":"ExpressionStatement","src":"19205:40:9"}]},"documentation":{"id":2653,"nodeType":"StructuredDocumentation","src":"18614:45:9","text":" @notice 获取金库信息"},"functionSelector":"7f98aa71","implemented":true,"kind":"function","modifiers":[],"name":"getVaultInfo","nameLocation":"18673:12:9","parameters":{"id":2654,"nodeType":"ParameterList","parameters":[],"src":"18685:2:9"},"returnParameters":{"id":2671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2656,"mutability":"mutable","name":"_totalAssets","nameLocation":"18728:12:9","nodeType":"VariableDeclaration","scope":2708,"src":"18720:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2655,"name":"uint256","nodeType":"ElementaryTypeName","src":"18720:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2658,"mutability":"mutable","name":"_idleAssets","nameLocation":"18758:11:9","nodeType":"VariableDeclaration","scope":2708,"src":"18750:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2657,"name":"uint256","nodeType":"ElementaryTypeName","src":"18750:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2660,"mutability":"mutable","name":"_managedAssets","nameLocation":"18787:14:9","nodeType":"VariableDeclaration","scope":2708,"src":"18779:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2659,"name":"uint256","nodeType":"ElementaryTypeName","src":"18779:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2662,"mutability":"mutable","name":"_totalSupply","nameLocation":"18819:12:9","nodeType":"VariableDeclaration","scope":2708,"src":"18811:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2661,"name":"uint256","nodeType":"ElementaryTypeName","src":"18811:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2664,"mutability":"mutable","name":"_hardCap","nameLocation":"18849:8:9","nodeType":"VariableDeclaration","scope":2708,"src":"18841:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2663,"name":"uint256","nodeType":"ElementaryTypeName","src":"18841:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2666,"mutability":"mutable","name":"_wusdPrice","nameLocation":"18875:10:9","nodeType":"VariableDeclaration","scope":2708,"src":"18867:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2665,"name":"uint256","nodeType":"ElementaryTypeName","src":"18867:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2668,"mutability":"mutable","name":"_ytPrice","nameLocation":"18903:8:9","nodeType":"VariableDeclaration","scope":2708,"src":"18895:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2667,"name":"uint256","nodeType":"ElementaryTypeName","src":"18895:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2670,"mutability":"mutable","name":"_nextRedemptionTime","nameLocation":"18929:19:9","nodeType":"VariableDeclaration","scope":2708,"src":"18921:27:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2669,"name":"uint256","nodeType":"ElementaryTypeName","src":"18921:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18710:244:9"},"scope":2714,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":2713,"nodeType":"VariableDeclaration","src":"19403:25:9","nodes":[],"constant":false,"documentation":{"id":2709,"nodeType":"StructuredDocumentation","src":"19262:136:9","text":" @dev 预留存储空间,用于未来升级时添加新的状态变量\n 50个slot = 50 * 32 bytes = 1600 bytes"},"mutability":"mutable","name":"__gap","nameLocation":"19423:5:9","scope":2714,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":2710,"name":"uint256","nodeType":"ElementaryTypeName","src":"19403:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2712,"length":{"hexValue":"3530","id":2711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19411:2:9","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"19403:11:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":1524,"name":"Initializable","nameLocations":["769:13:9"],"nodeType":"IdentifierPath","referencedDeclaration":10652,"src":"769:13:9"},"id":1525,"nodeType":"InheritanceSpecifier","src":"769:13:9"},{"baseName":{"id":1526,"name":"ERC20Upgradeable","nameLocations":["789:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":11451,"src":"789:16:9"},"id":1527,"nodeType":"InheritanceSpecifier","src":"789:16:9"},{"baseName":{"id":1528,"name":"UUPSUpgradeable","nameLocations":["811:15:9"],"nodeType":"IdentifierPath","referencedDeclaration":10834,"src":"811:15:9"},"id":1529,"nodeType":"InheritanceSpecifier","src":"811:15:9"},{"baseName":{"id":1530,"name":"ReentrancyGuardUpgradeable","nameLocations":["832:26:9"],"nodeType":"IdentifierPath","referencedDeclaration":11786,"src":"832:26:9"},"id":1531,"nodeType":"InheritanceSpecifier","src":"832:26:9"},{"baseName":{"id":1532,"name":"PausableUpgradeable","nameLocations":["864:19:9"],"nodeType":"IdentifierPath","referencedDeclaration":11657,"src":"864:19:9"},"id":1533,"nodeType":"InheritanceSpecifier","src":"864:19:9"}],"canonicalName":"YTAssetVault","contractDependencies":[],"contractKind":"contract","documentation":{"id":1523,"nodeType":"StructuredDocumentation","src":"573:165:9","text":" @title YTAssetVault\n @notice 基于价格的资产金库用户根据WUSD和YT代币价格进行兑换\n @dev UUPS可升级合约YT是份额代币"},"fullyImplemented":true,"linearizedBaseContracts":[2714,11657,11786,10834,12055,11451,12097,12674,12648,11497,10652],"name":"YTAssetVault","nameLocation":"748:12:9","scope":2715,"usedErrors":[1539,1541,1543,1545,1547,1549,1551,1553,1555,1557,1559,10401,10404,10679,10684,11536,11539,11688,12067,12072,12077,12086,12091,12096,12250,12263,12686,13148,13441],"usedEvents":[1626,1630,1636,1640,1648,1656,1664,1668,1680,1688,1698,10409,11528,11533,12028,12582,12591]}],"license":"MIT"}},"contracts/ytLending/Configurator.sol":{"id":10,"ast":{"absolutePath":"contracts/ytLending/Configurator.sol","id":3264,"exportedSymbols":{"Configurator":[3263],"ConfiguratorStorage":[3279],"Context":[13428],"ContextUpgradeable":[11497],"ERC1967Utils":[12524],"IERC1363":[12016],"IERC1822Proxiable":[12055],"IERC20":[12648],"IERC20Metadata":[12674],"ILending":[232],"IPriceFeed":[246],"Initializable":[10652],"Lending":[5484],"LendingConfiguration":[5536],"LendingFactory":[5587],"LendingMath":[5987],"LendingStorage":[6058],"Ownable":[11934],"OwnableUpgradeable":[10384],"PausableUpgradeable":[11657],"ReentrancyGuardUpgradeable":[11786],"SafeERC20":[13138],"UUPSUpgradeable":[10834]},"nodeType":"SourceUnit","src":"32:7876:10","nodes":[{"id":2716,"nodeType":"PragmaDirective","src":"32:23:10","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":2717,"nodeType":"ImportDirective","src":"57:77:10","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":3264,"sourceUnit":10835,"symbolAliases":[],"unitAlias":""},{"id":2718,"nodeType":"ImportDirective","src":"135:75:10","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":3264,"sourceUnit":10385,"symbolAliases":[],"unitAlias":""},{"id":2719,"nodeType":"ImportDirective","src":"212:35:10","nodes":[],"absolutePath":"contracts/ytLending/ConfiguratorStorage.sol","file":"./ConfiguratorStorage.sol","nameLocation":"-1:-1:-1","scope":3264,"sourceUnit":3280,"symbolAliases":[],"unitAlias":""},{"id":2720,"nodeType":"ImportDirective","src":"248:30:10","nodes":[],"absolutePath":"contracts/ytLending/LendingFactory.sol","file":"./LendingFactory.sol","nameLocation":"-1:-1:-1","scope":3264,"sourceUnit":5588,"symbolAliases":[],"unitAlias":""},{"id":3263,"nodeType":"ContractDefinition","src":"350:7556:10","nodes":[{"id":2735,"nodeType":"EventDefinition","src":"453:103:10","nodes":[],"anonymous":false,"eventSelector":"cc826d20934cb90e9329d09ff55b4e43831c5bb3a3305fb536842ad49041e7d5","name":"SetFactory","nameLocation":"459:10:10","parameters":{"id":2734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2729,"indexed":true,"mutability":"mutable","name":"lendingProxy","nameLocation":"486:12:10","nodeType":"VariableDeclaration","scope":2735,"src":"470:28:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2728,"name":"address","nodeType":"ElementaryTypeName","src":"470:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2731,"indexed":true,"mutability":"mutable","name":"oldFactory","nameLocation":"516:10:10","nodeType":"VariableDeclaration","scope":2735,"src":"500:26:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2730,"name":"address","nodeType":"ElementaryTypeName","src":"500:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2733,"indexed":true,"mutability":"mutable","name":"newFactory","nameLocation":"544:10:10","nodeType":"VariableDeclaration","scope":2735,"src":"528:26:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2732,"name":"address","nodeType":"ElementaryTypeName","src":"528:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"469:86:10"}},{"id":2745,"nodeType":"EventDefinition","src":"561:117:10","nodes":[],"anonymous":false,"eventSelector":"c3a61d70fd0466b150794337cec2f61ed208422677b8551e4487499c4c21035b","name":"SetConfiguration","nameLocation":"567:16:10","parameters":{"id":2744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2737,"indexed":true,"mutability":"mutable","name":"lendingProxy","nameLocation":"600:12:10","nodeType":"VariableDeclaration","scope":2745,"src":"584:28:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2736,"name":"address","nodeType":"ElementaryTypeName","src":"584:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2740,"indexed":false,"mutability":"mutable","name":"oldConfiguration","nameLocation":"628:16:10","nodeType":"VariableDeclaration","scope":2745,"src":"614:30:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_memory_ptr","typeString":"struct LendingConfiguration.Configuration"},"typeName":{"id":2739,"nodeType":"UserDefinedTypeName","pathNode":{"id":2738,"name":"Configuration","nameLocations":["614:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":5535,"src":"614:13:10"},"referencedDeclaration":5535,"src":"614:13:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage_ptr","typeString":"struct LendingConfiguration.Configuration"}},"visibility":"internal"},{"constant":false,"id":2743,"indexed":false,"mutability":"mutable","name":"newConfiguration","nameLocation":"660:16:10","nodeType":"VariableDeclaration","scope":2745,"src":"646:30:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_memory_ptr","typeString":"struct LendingConfiguration.Configuration"},"typeName":{"id":2742,"nodeType":"UserDefinedTypeName","pathNode":{"id":2741,"name":"Configuration","nameLocations":["646:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":5535,"src":"646:13:10"},"referencedDeclaration":5535,"src":"646:13:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage_ptr","typeString":"struct LendingConfiguration.Configuration"}},"visibility":"internal"}],"src":"583:94:10"}},{"id":2752,"nodeType":"EventDefinition","src":"683:70:10","nodes":[],"anonymous":false,"eventSelector":"1f7dcc7122c2fe2d685db789d8cde941d28c9d5bf456dcd260705c8d4aef4ef8","name":"AddAsset","nameLocation":"689:8:10","parameters":{"id":2751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2747,"indexed":true,"mutability":"mutable","name":"lendingProxy","nameLocation":"714:12:10","nodeType":"VariableDeclaration","scope":2752,"src":"698:28:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2746,"name":"address","nodeType":"ElementaryTypeName","src":"698:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2750,"indexed":false,"mutability":"mutable","name":"assetConfig","nameLocation":"740:11:10","nodeType":"VariableDeclaration","scope":2752,"src":"728:23:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig"},"typeName":{"id":2749,"nodeType":"UserDefinedTypeName","pathNode":{"id":2748,"name":"AssetConfig","nameLocations":["728:11:10"],"nodeType":"IdentifierPath","referencedDeclaration":5502,"src":"728:11:10"},"referencedDeclaration":5502,"src":"728:11:10","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_storage_ptr","typeString":"struct LendingConfiguration.AssetConfig"}},"visibility":"internal"}],"src":"697:55:10"}},{"id":2762,"nodeType":"EventDefinition","src":"758:104:10","nodes":[],"anonymous":false,"eventSelector":"f0d2e933bc5a83ab653c27f5ae312ee5f4a394a45c34bb90e8c790bf0ed38341","name":"UpdateAsset","nameLocation":"764:11:10","parameters":{"id":2761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2754,"indexed":true,"mutability":"mutable","name":"lendingProxy","nameLocation":"792:12:10","nodeType":"VariableDeclaration","scope":2762,"src":"776:28:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2753,"name":"address","nodeType":"ElementaryTypeName","src":"776:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2757,"indexed":false,"mutability":"mutable","name":"oldAssetConfig","nameLocation":"818:14:10","nodeType":"VariableDeclaration","scope":2762,"src":"806:26:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig"},"typeName":{"id":2756,"nodeType":"UserDefinedTypeName","pathNode":{"id":2755,"name":"AssetConfig","nameLocations":["806:11:10"],"nodeType":"IdentifierPath","referencedDeclaration":5502,"src":"806:11:10"},"referencedDeclaration":5502,"src":"806:11:10","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_storage_ptr","typeString":"struct LendingConfiguration.AssetConfig"}},"visibility":"internal"},{"constant":false,"id":2760,"indexed":false,"mutability":"mutable","name":"newAssetConfig","nameLocation":"846:14:10","nodeType":"VariableDeclaration","scope":2762,"src":"834:26:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig"},"typeName":{"id":2759,"nodeType":"UserDefinedTypeName","pathNode":{"id":2758,"name":"AssetConfig","nameLocations":["834:11:10"],"nodeType":"IdentifierPath","referencedDeclaration":5502,"src":"834:11:10"},"referencedDeclaration":5502,"src":"834:11:10","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_storage_ptr","typeString":"struct LendingConfiguration.AssetConfig"}},"visibility":"internal"}],"src":"775:86:10"}},{"id":2768,"nodeType":"EventDefinition","src":"867:80:10","nodes":[],"anonymous":false,"eventSelector":"56aab5483cc40d7e4e6b3ce2831f55ce79d54c537d1c695c2d86656ce7a84307","name":"LendingDeployed","nameLocation":"873:15:10","parameters":{"id":2767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2764,"indexed":true,"mutability":"mutable","name":"lendingProxy","nameLocation":"905:12:10","nodeType":"VariableDeclaration","scope":2768,"src":"889:28:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2763,"name":"address","nodeType":"ElementaryTypeName","src":"889:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2766,"indexed":true,"mutability":"mutable","name":"newLending","nameLocation":"935:10:10","nodeType":"VariableDeclaration","scope":2768,"src":"919:26:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2765,"name":"address","nodeType":"ElementaryTypeName","src":"919:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"888:58:10"}},{"id":2770,"nodeType":"ErrorDefinition","src":"953:27:10","nodes":[],"errorSelector":"0dc149f0","name":"AlreadyInitialized","nameLocation":"959:18:10","parameters":{"id":2769,"nodeType":"ParameterList","parameters":[],"src":"977:2:10"}},{"id":2772,"nodeType":"ErrorDefinition","src":"985:26:10","nodes":[],"errorSelector":"67fa94e7","name":"AssetDoesNotExist","nameLocation":"991:17:10","parameters":{"id":2771,"nodeType":"ParameterList","parameters":[],"src":"1008:2:10"}},{"id":2774,"nodeType":"ErrorDefinition","src":"1016:35:10","nodes":[],"errorSelector":"e6bc1fa0","name":"ConfigurationAlreadyExists","nameLocation":"1022:26:10","parameters":{"id":2773,"nodeType":"ParameterList","parameters":[],"src":"1048:2:10"}},{"id":2776,"nodeType":"ErrorDefinition","src":"1056:23:10","nodes":[],"errorSelector":"e6c4247b","name":"InvalidAddress","nameLocation":"1062:14:10","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[],"src":"1076:2:10"}},{"id":2784,"nodeType":"FunctionDefinition","src":"1138:53:10","nodes":[],"body":{"id":2783,"nodeType":"Block","src":"1152:39:10","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2780,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10606,"src":"1162:20:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1162:22:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2782,"nodeType":"ExpressionStatement","src":"1162:22:10"}]},"documentation":{"id":2777,"nodeType":"StructuredDocumentation","src":"1085:48:10","text":"@custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2778,"nodeType":"ParameterList","parameters":[],"src":"1149:2:10"},"returnParameters":{"id":2779,"nodeType":"ParameterList","parameters":[],"src":"1152:0:10"},"scope":3263,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2798,"nodeType":"FunctionDefinition","src":"1197:120:10","nodes":[],"body":{"id":2797,"nodeType":"Block","src":"1240:77:10","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2789,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10706,"src":"1250:22:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1250:24:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2791,"nodeType":"ExpressionStatement","src":"1250:24:10"},{"expression":{"arguments":[{"expression":{"id":2793,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1299:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1303:6:10","memberName":"sender","nodeType":"MemberAccess","src":"1299:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2792,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10244,"src":"1284:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1284:26:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2796,"nodeType":"ExpressionStatement","src":"1284:26:10"}]},"functionSelector":"8129fc1c","implemented":true,"kind":"function","modifiers":[{"id":2787,"kind":"modifierInvocation","modifierName":{"id":2786,"name":"initializer","nameLocations":["1228:11:10"],"nodeType":"IdentifierPath","referencedDeclaration":10492,"src":"1228:11:10"},"nodeType":"ModifierInvocation","src":"1228:11:10"}],"name":"initialize","nameLocation":"1206:10:10","parameters":{"id":2785,"nodeType":"ParameterList","parameters":[],"src":"1216:2:10"},"returnParameters":{"id":2788,"nodeType":"ParameterList","parameters":[],"src":"1240:0:10"},"scope":3263,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2808,"nodeType":"FunctionDefinition","src":"1398:84:10","nodes":[],"body":{"id":2807,"nodeType":"Block","src":"1480:2:10","nodes":[],"statements":[]},"baseFunctions":[10788],"documentation":{"id":2799,"nodeType":"StructuredDocumentation","src":"1323:70:10","text":" @dev 授权升级函数 - 只有 owner 可以升级"},"implemented":true,"kind":"function","modifiers":[{"id":2805,"kind":"modifierInvocation","modifierName":{"id":2804,"name":"onlyOwner","nameLocations":["1470:9:10"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"1470:9:10"},"nodeType":"ModifierInvocation","src":"1470:9:10"}],"name":"_authorizeUpgrade","nameLocation":"1407:17:10","overrides":{"id":2803,"nodeType":"OverrideSpecifier","overrides":[],"src":"1461:8:10"},"parameters":{"id":2802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2801,"mutability":"mutable","name":"newImplementation","nameLocation":"1433:17:10","nodeType":"VariableDeclaration","scope":2808,"src":"1425:25:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2800,"name":"address","nodeType":"ElementaryTypeName","src":"1425:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1424:27:10"},"returnParameters":{"id":2806,"nodeType":"ParameterList","parameters":[],"src":"1480:0:10"},"scope":3263,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2847,"nodeType":"FunctionDefinition","src":"1633:319:10","nodes":[],"body":{"id":2846,"nodeType":"Block","src":"1714:238:10","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2818,"name":"newFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2813,"src":"1728:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1750:1:10","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":2820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1742:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2819,"name":"address","nodeType":"ElementaryTypeName","src":"1742:7:10","typeDescriptions":{}}},"id":2822,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1742:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1728:24:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2827,"nodeType":"IfStatement","src":"1724:53:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2824,"name":"InvalidAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2776,"src":"1761:14:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1761:16:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2826,"nodeType":"RevertStatement","src":"1754:23:10"}},{"assignments":[2829],"declarations":[{"constant":false,"id":2829,"mutability":"mutable","name":"oldFactory","nameLocation":"1804:10:10","nodeType":"VariableDeclaration","scope":2846,"src":"1796:18:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2828,"name":"address","nodeType":"ElementaryTypeName","src":"1796:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2833,"initialValue":{"baseExpression":{"id":2830,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"1817:7:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":2832,"indexExpression":{"id":2831,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2811,"src":"1825:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1817:21:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1796:42:10"},{"expression":{"id":2838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2834,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"1848:7:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":2836,"indexExpression":{"id":2835,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2811,"src":"1856:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1848:21:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2837,"name":"newFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2813,"src":"1872:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1848:34:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2839,"nodeType":"ExpressionStatement","src":"1848:34:10"},{"eventCall":{"arguments":[{"id":2841,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2811,"src":"1908:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2842,"name":"oldFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2829,"src":"1922:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2843,"name":"newFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2813,"src":"1934:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2840,"name":"SetFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2735,"src":"1897:10:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$","typeString":"function (address,address,address)"}},"id":2844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1897:48:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2845,"nodeType":"EmitStatement","src":"1892:53:10"}]},"documentation":{"id":2809,"nodeType":"StructuredDocumentation","src":"1488:140:10","text":" @notice 设置工厂合约地址\n @param lendingProxy Lending 代理地址\n @param newFactory 新工厂地址"},"functionSelector":"5e825564","implemented":true,"kind":"function","modifiers":[{"id":2816,"kind":"modifierInvocation","modifierName":{"id":2815,"name":"onlyOwner","nameLocations":["1704:9:10"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"1704:9:10"},"nodeType":"ModifierInvocation","src":"1704:9:10"}],"name":"setFactory","nameLocation":"1642:10:10","parameters":{"id":2814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2811,"mutability":"mutable","name":"lendingProxy","nameLocation":"1661:12:10","nodeType":"VariableDeclaration","scope":2847,"src":"1653:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2810,"name":"address","nodeType":"ElementaryTypeName","src":"1653:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2813,"mutability":"mutable","name":"newFactory","nameLocation":"1683:10:10","nodeType":"VariableDeclaration","scope":2847,"src":"1675:18:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2812,"name":"address","nodeType":"ElementaryTypeName","src":"1675:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1652:42:10"},"returnParameters":{"id":2817,"nodeType":"ParameterList","parameters":[],"src":"1714:0:10"},"scope":3263,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3038,"nodeType":"FunctionDefinition","src":"2097:2461:10","nodes":[],"body":{"id":3037,"nodeType":"Block","src":"2228:2330:10","nodes":[],"statements":[{"assignments":[2860],"declarations":[{"constant":false,"id":2860,"mutability":"mutable","name":"oldConfiguration","nameLocation":"2259:16:10","nodeType":"VariableDeclaration","scope":3037,"src":"2238:37:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_memory_ptr","typeString":"struct LendingConfiguration.Configuration"},"typeName":{"id":2859,"nodeType":"UserDefinedTypeName","pathNode":{"id":2858,"name":"Configuration","nameLocations":["2238:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":5535,"src":"2238:13:10"},"referencedDeclaration":5535,"src":"2238:13:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage_ptr","typeString":"struct LendingConfiguration.Configuration"}},"visibility":"internal"}],"id":2864,"initialValue":{"baseExpression":{"id":2861,"name":"configuratorParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"2278:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Configuration_$5535_storage_$","typeString":"mapping(address => struct LendingConfiguration.Configuration storage ref)"}},"id":2863,"indexExpression":{"id":2862,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2850,"src":"2297:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2278:32:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage","typeString":"struct LendingConfiguration.Configuration storage ref"}},"nodeType":"VariableDeclarationStatement","src":"2238:72:10"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2865,"name":"oldConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2860,"src":"2372:16:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_memory_ptr","typeString":"struct LendingConfiguration.Configuration memory"}},"id":2866,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2389:9:10","memberName":"baseToken","nodeType":"MemberAccess","referencedDeclaration":5504,"src":"2372:26:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2410:1:10","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":2868,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2402:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2867,"name":"address","nodeType":"ElementaryTypeName","src":"2402:7:10","typeDescriptions":{}}},"id":2870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2402:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2372:40:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2872,"name":"oldConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2860,"src":"2429:16:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_memory_ptr","typeString":"struct LendingConfiguration.Configuration memory"}},"id":2873,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2446:9:10","memberName":"baseToken","nodeType":"MemberAccess","referencedDeclaration":5504,"src":"2429:26:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2874,"name":"newConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2853,"src":"2459:16:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":2875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2476:9:10","memberName":"baseToken","nodeType":"MemberAccess","referencedDeclaration":5504,"src":"2459:26:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2429:56:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":2881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2877,"name":"oldConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2860,"src":"2502:16:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_memory_ptr","typeString":"struct LendingConfiguration.Configuration memory"}},"id":2878,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2519:18:10","memberName":"trackingIndexScale","nodeType":"MemberAccess","referencedDeclaration":5526,"src":"2502:35:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2879,"name":"newConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2853,"src":"2541:16:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":2880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2558:18:10","memberName":"trackingIndexScale","nodeType":"MemberAccess","referencedDeclaration":5526,"src":"2541:35:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"2502:74:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2429:147:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2883,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2428:149:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2372:205:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2888,"nodeType":"IfStatement","src":"2368:258:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2885,"name":"ConfigurationAlreadyExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"2598:26:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2598:28:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2887,"nodeType":"RevertStatement","src":"2591:35:10"}},{"expression":{"id":2892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"2673:39:10","subExpression":{"baseExpression":{"id":2889,"name":"configuratorParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"2680:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Configuration_$5535_storage_$","typeString":"mapping(address => struct LendingConfiguration.Configuration storage ref)"}},"id":2891,"indexExpression":{"id":2890,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2850,"src":"2699:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2680:32:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage","typeString":"struct LendingConfiguration.Configuration storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2893,"nodeType":"ExpressionStatement","src":"2673:39:10"},{"expression":{"id":2900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":2894,"name":"configuratorParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"2758:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Configuration_$5535_storage_$","typeString":"mapping(address => struct LendingConfiguration.Configuration storage ref)"}},"id":2896,"indexExpression":{"id":2895,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2850,"src":"2777:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2758:32:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage","typeString":"struct LendingConfiguration.Configuration storage ref"}},"id":2897,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2791:9:10","memberName":"baseToken","nodeType":"MemberAccess","referencedDeclaration":5504,"src":"2758:42:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2898,"name":"newConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2853,"src":"2803:16:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":2899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2820:9:10","memberName":"baseToken","nodeType":"MemberAccess","referencedDeclaration":5504,"src":"2803:26:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2758:71:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2901,"nodeType":"ExpressionStatement","src":"2758:71:10"},{"expression":{"id":2908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":2902,"name":"configuratorParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"2839:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Configuration_$5535_storage_$","typeString":"mapping(address => struct LendingConfiguration.Configuration storage ref)"}},"id":2904,"indexExpression":{"id":2903,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2850,"src":"2858:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2839:32:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage","typeString":"struct LendingConfiguration.Configuration storage ref"}},"id":2905,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2872:18:10","memberName":"baseTokenPriceFeed","nodeType":"MemberAccess","referencedDeclaration":5506,"src":"2839:51:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2906,"name":"newConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2853,"src":"2893:16:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":2907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2910:18:10","memberName":"baseTokenPriceFeed","nodeType":"MemberAccess","referencedDeclaration":5506,"src":"2893:35:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2839:89:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2909,"nodeType":"ExpressionStatement","src":"2839:89:10"},{"expression":{"id":2916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":2910,"name":"configuratorParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"2938:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Configuration_$5535_storage_$","typeString":"mapping(address => struct LendingConfiguration.Configuration storage ref)"}},"id":2912,"indexExpression":{"id":2911,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2850,"src":"2957:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2938:32:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage","typeString":"struct LendingConfiguration.Configuration storage ref"}},"id":2913,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2971:10:10","memberName":"supplyKink","nodeType":"MemberAccess","referencedDeclaration":5508,"src":"2938:43:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2914,"name":"newConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2853,"src":"2984:16:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":2915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3001:10:10","memberName":"supplyKink","nodeType":"MemberAccess","referencedDeclaration":5508,"src":"2984:27:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"2938:73:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":2917,"nodeType":"ExpressionStatement","src":"2938:73:10"},{"expression":{"id":2924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":2918,"name":"configuratorParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"3021:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Configuration_$5535_storage_$","typeString":"mapping(address => struct LendingConfiguration.Configuration storage ref)"}},"id":2920,"indexExpression":{"id":2919,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2850,"src":"3040:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3021:32:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage","typeString":"struct LendingConfiguration.Configuration storage ref"}},"id":2921,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3054:33:10","memberName":"supplyPerYearInterestRateSlopeLow","nodeType":"MemberAccess","referencedDeclaration":5510,"src":"3021:66:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2922,"name":"newConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2853,"src":"3090:16:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":2923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3107:33:10","memberName":"supplyPerYearInterestRateSlopeLow","nodeType":"MemberAccess","referencedDeclaration":5510,"src":"3090:50:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3021:119:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":2925,"nodeType":"ExpressionStatement","src":"3021:119:10"},{"expression":{"id":2932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":2926,"name":"configuratorParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"3150:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Configuration_$5535_storage_$","typeString":"mapping(address => struct LendingConfiguration.Configuration storage ref)"}},"id":2928,"indexExpression":{"id":2927,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2850,"src":"3169:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3150:32:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage","typeString":"struct LendingConfiguration.Configuration storage ref"}},"id":2929,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3183:34:10","memberName":"supplyPerYearInterestRateSlopeHigh","nodeType":"MemberAccess","referencedDeclaration":5512,"src":"3150:67:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2930,"name":"newConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2853,"src":"3220:16:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":2931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3237:34:10","memberName":"supplyPerYearInterestRateSlopeHigh","nodeType":"MemberAccess","referencedDeclaration":5512,"src":"3220:51:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3150:121:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":2933,"nodeType":"ExpressionStatement","src":"3150:121:10"},{"expression":{"id":2940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":2934,"name":"configuratorParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"3281:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Configuration_$5535_storage_$","typeString":"mapping(address => struct LendingConfiguration.Configuration storage ref)"}},"id":2936,"indexExpression":{"id":2935,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2850,"src":"3300:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3281:32:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage","typeString":"struct LendingConfiguration.Configuration storage ref"}},"id":2937,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3314:29:10","memberName":"supplyPerYearInterestRateBase","nodeType":"MemberAccess","referencedDeclaration":5514,"src":"3281:62:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2938,"name":"newConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2853,"src":"3346:16:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":2939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3363:29:10","memberName":"supplyPerYearInterestRateBase","nodeType":"MemberAccess","referencedDeclaration":5514,"src":"3346:46:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3281:111:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":2941,"nodeType":"ExpressionStatement","src":"3281:111:10"},{"expression":{"id":2948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":2942,"name":"configuratorParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"3402:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Configuration_$5535_storage_$","typeString":"mapping(address => struct LendingConfiguration.Configuration storage ref)"}},"id":2944,"indexExpression":{"id":2943,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2850,"src":"3421:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3402:32:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage","typeString":"struct LendingConfiguration.Configuration storage ref"}},"id":2945,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3435:10:10","memberName":"borrowKink","nodeType":"MemberAccess","referencedDeclaration":5516,"src":"3402:43:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2946,"name":"newConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2853,"src":"3448:16:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":2947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3465:10:10","memberName":"borrowKink","nodeType":"MemberAccess","referencedDeclaration":5516,"src":"3448:27:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3402:73:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":2949,"nodeType":"ExpressionStatement","src":"3402:73:10"},{"expression":{"id":2956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":2950,"name":"configuratorParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"3485:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Configuration_$5535_storage_$","typeString":"mapping(address => struct LendingConfiguration.Configuration storage ref)"}},"id":2952,"indexExpression":{"id":2951,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2850,"src":"3504:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3485:32:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage","typeString":"struct LendingConfiguration.Configuration storage ref"}},"id":2953,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3518:33:10","memberName":"borrowPerYearInterestRateSlopeLow","nodeType":"MemberAccess","referencedDeclaration":5518,"src":"3485:66:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2954,"name":"newConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2853,"src":"3554:16:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":2955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3571:33:10","memberName":"borrowPerYearInterestRateSlopeLow","nodeType":"MemberAccess","referencedDeclaration":5518,"src":"3554:50:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3485:119:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":2957,"nodeType":"ExpressionStatement","src":"3485:119:10"},{"expression":{"id":2964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":2958,"name":"configuratorParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"3614:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Configuration_$5535_storage_$","typeString":"mapping(address => struct LendingConfiguration.Configuration storage ref)"}},"id":2960,"indexExpression":{"id":2959,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2850,"src":"3633:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3614:32:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage","typeString":"struct LendingConfiguration.Configuration storage ref"}},"id":2961,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3647:34:10","memberName":"borrowPerYearInterestRateSlopeHigh","nodeType":"MemberAccess","referencedDeclaration":5520,"src":"3614:67:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2962,"name":"newConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2853,"src":"3684:16:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":2963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3701:34:10","memberName":"borrowPerYearInterestRateSlopeHigh","nodeType":"MemberAccess","referencedDeclaration":5520,"src":"3684:51:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3614:121:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":2965,"nodeType":"ExpressionStatement","src":"3614:121:10"},{"expression":{"id":2972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":2966,"name":"configuratorParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"3745:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Configuration_$5535_storage_$","typeString":"mapping(address => struct LendingConfiguration.Configuration storage ref)"}},"id":2968,"indexExpression":{"id":2967,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2850,"src":"3764:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3745:32:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage","typeString":"struct LendingConfiguration.Configuration storage ref"}},"id":2969,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3778:29:10","memberName":"borrowPerYearInterestRateBase","nodeType":"MemberAccess","referencedDeclaration":5522,"src":"3745:62:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2970,"name":"newConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2853,"src":"3810:16:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":2971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3827:29:10","memberName":"borrowPerYearInterestRateBase","nodeType":"MemberAccess","referencedDeclaration":5522,"src":"3810:46:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3745:111:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":2973,"nodeType":"ExpressionStatement","src":"3745:111:10"},{"expression":{"id":2980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":2974,"name":"configuratorParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"3866:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Configuration_$5535_storage_$","typeString":"mapping(address => struct LendingConfiguration.Configuration storage ref)"}},"id":2976,"indexExpression":{"id":2975,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2850,"src":"3885:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3866:32:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage","typeString":"struct LendingConfiguration.Configuration storage ref"}},"id":2977,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3899:21:10","memberName":"storeFrontPriceFactor","nodeType":"MemberAccess","referencedDeclaration":5524,"src":"3866:54:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2978,"name":"newConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2853,"src":"3923:16:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":2979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3940:21:10","memberName":"storeFrontPriceFactor","nodeType":"MemberAccess","referencedDeclaration":5524,"src":"3923:38:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3866:95:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":2981,"nodeType":"ExpressionStatement","src":"3866:95:10"},{"expression":{"id":2988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":2982,"name":"configuratorParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"3971:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Configuration_$5535_storage_$","typeString":"mapping(address => struct LendingConfiguration.Configuration storage ref)"}},"id":2984,"indexExpression":{"id":2983,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2850,"src":"3990:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3971:32:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage","typeString":"struct LendingConfiguration.Configuration storage ref"}},"id":2985,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4004:18:10","memberName":"trackingIndexScale","nodeType":"MemberAccess","referencedDeclaration":5526,"src":"3971:51:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2986,"name":"newConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2853,"src":"4025:16:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":2987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4042:18:10","memberName":"trackingIndexScale","nodeType":"MemberAccess","referencedDeclaration":5526,"src":"4025:35:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3971:89:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":2989,"nodeType":"ExpressionStatement","src":"3971:89:10"},{"expression":{"id":2996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":2990,"name":"configuratorParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"4070:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Configuration_$5535_storage_$","typeString":"mapping(address => struct LendingConfiguration.Configuration storage ref)"}},"id":2992,"indexExpression":{"id":2991,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2850,"src":"4089:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4070:32:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage","typeString":"struct LendingConfiguration.Configuration storage ref"}},"id":2993,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4103:13:10","memberName":"baseBorrowMin","nodeType":"MemberAccess","referencedDeclaration":5528,"src":"4070:46:10","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2994,"name":"newConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2853,"src":"4119:16:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":2995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4136:13:10","memberName":"baseBorrowMin","nodeType":"MemberAccess","referencedDeclaration":5528,"src":"4119:30:10","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"4070:79:10","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"id":2997,"nodeType":"ExpressionStatement","src":"4070:79:10"},{"expression":{"id":3004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":2998,"name":"configuratorParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"4159:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Configuration_$5535_storage_$","typeString":"mapping(address => struct LendingConfiguration.Configuration storage ref)"}},"id":3000,"indexExpression":{"id":2999,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2850,"src":"4178:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4159:32:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage","typeString":"struct LendingConfiguration.Configuration storage ref"}},"id":3001,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4192:14:10","memberName":"targetReserves","nodeType":"MemberAccess","referencedDeclaration":5530,"src":"4159:47:10","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3002,"name":"newConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2853,"src":"4209:16:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":3003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4226:14:10","memberName":"targetReserves","nodeType":"MemberAccess","referencedDeclaration":5530,"src":"4209:31:10","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"4159:81:10","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"id":3005,"nodeType":"ExpressionStatement","src":"4159:81:10"},{"body":{"id":3029,"nodeType":"Block","src":"4353:109:10","statements":[{"expression":{"arguments":[{"baseExpression":{"expression":{"id":3023,"name":"newConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2853,"src":"4418:16:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":3024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4435:12:10","memberName":"assetConfigs","nodeType":"MemberAccess","referencedDeclaration":5534,"src":"4418:29:10","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetConfig_$5502_calldata_ptr_$dyn_calldata_ptr","typeString":"struct LendingConfiguration.AssetConfig calldata[] calldata"}},"id":3026,"indexExpression":{"id":3025,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3007,"src":"4448:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4418:32:10","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_calldata_ptr","typeString":"struct LendingConfiguration.AssetConfig calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AssetConfig_$5502_calldata_ptr","typeString":"struct LendingConfiguration.AssetConfig calldata"}],"expression":{"expression":{"baseExpression":{"id":3018,"name":"configuratorParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"4367:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Configuration_$5535_storage_$","typeString":"mapping(address => struct LendingConfiguration.Configuration storage ref)"}},"id":3020,"indexExpression":{"id":3019,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2850,"src":"4386:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4367:32:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage","typeString":"struct LendingConfiguration.Configuration storage ref"}},"id":3021,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4400:12:10","memberName":"assetConfigs","nodeType":"MemberAccess","referencedDeclaration":5534,"src":"4367:45:10","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetConfig_$5502_storage_$dyn_storage","typeString":"struct LendingConfiguration.AssetConfig storage ref[] storage ref"}},"id":3022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4413:4:10","memberName":"push","nodeType":"MemberAccess","src":"4367:50:10","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_AssetConfig_$5502_storage_$dyn_storage_ptr_$_t_struct$_AssetConfig_$5502_storage_$returns$__$attached_to$_t_array$_t_struct$_AssetConfig_$5502_storage_$dyn_storage_ptr_$","typeString":"function (struct LendingConfiguration.AssetConfig storage ref[] storage pointer,struct LendingConfiguration.AssetConfig storage ref)"}},"id":3027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4367:84:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3028,"nodeType":"ExpressionStatement","src":"4367:84:10"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3010,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3007,"src":"4306:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":3011,"name":"newConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2853,"src":"4310:16:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":3012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4327:12:10","memberName":"assetConfigs","nodeType":"MemberAccess","referencedDeclaration":5534,"src":"4310:29:10","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetConfig_$5502_calldata_ptr_$dyn_calldata_ptr","typeString":"struct LendingConfiguration.AssetConfig calldata[] calldata"}},"id":3013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4340:6:10","memberName":"length","nodeType":"MemberAccess","src":"4310:36:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4306:40:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3030,"initializationExpression":{"assignments":[3007],"declarations":[{"constant":false,"id":3007,"mutability":"mutable","name":"i","nameLocation":"4299:1:10","nodeType":"VariableDeclaration","scope":3030,"src":"4294:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3006,"name":"uint","nodeType":"ElementaryTypeName","src":"4294:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3009,"initialValue":{"hexValue":"30","id":3008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4303:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4294:10:10"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":3016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4348:3:10","subExpression":{"id":3015,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3007,"src":"4348:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3017,"nodeType":"ExpressionStatement","src":"4348:3:10"},"nodeType":"ForStatement","src":"4289:173:10"},{"eventCall":{"arguments":[{"id":3032,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2850,"src":"4502:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3033,"name":"oldConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2860,"src":"4516:16:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_memory_ptr","typeString":"struct LendingConfiguration.Configuration memory"}},{"id":3034,"name":"newConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2853,"src":"4534:16:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_Configuration_$5535_memory_ptr","typeString":"struct LendingConfiguration.Configuration memory"},{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}],"id":3031,"name":"SetConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2745,"src":"4485:16:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_struct$_Configuration_$5535_memory_ptr_$_t_struct$_Configuration_$5535_memory_ptr_$returns$__$","typeString":"function (address,struct LendingConfiguration.Configuration memory,struct LendingConfiguration.Configuration memory)"}},"id":3035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4485:66:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3036,"nodeType":"EmitStatement","src":"4480:71:10"}]},"documentation":{"id":2848,"nodeType":"StructuredDocumentation","src":"1958:134:10","text":" @notice 设置市场配置\n @param lendingProxy Lending 代理地址\n @param newConfiguration 新配置"},"functionSelector":"65f7ef68","implemented":true,"kind":"function","modifiers":[{"id":2856,"kind":"modifierInvocation","modifierName":{"id":2855,"name":"onlyOwner","nameLocations":["2213:9:10"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"2213:9:10"},"nodeType":"ModifierInvocation","src":"2213:9:10"}],"name":"setConfiguration","nameLocation":"2106:16:10","parameters":{"id":2854,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2850,"mutability":"mutable","name":"lendingProxy","nameLocation":"2131:12:10","nodeType":"VariableDeclaration","scope":3038,"src":"2123:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2849,"name":"address","nodeType":"ElementaryTypeName","src":"2123:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2853,"mutability":"mutable","name":"newConfiguration","nameLocation":"2168:16:10","nodeType":"VariableDeclaration","scope":3038,"src":"2145:39:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration"},"typeName":{"id":2852,"nodeType":"UserDefinedTypeName","pathNode":{"id":2851,"name":"Configuration","nameLocations":["2145:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":5535,"src":"2145:13:10"},"referencedDeclaration":5535,"src":"2145:13:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage_ptr","typeString":"struct LendingConfiguration.Configuration"}},"visibility":"internal"}],"src":"2122:63:10"},"returnParameters":{"id":2857,"nodeType":"ParameterList","parameters":[],"src":"2228:0:10"},"scope":3263,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3063,"nodeType":"FunctionDefinition","src":"4701:246:10","nodes":[],"body":{"id":3062,"nodeType":"Block","src":"4817:130:10","nodes":[],"statements":[{"expression":{"arguments":[{"id":3054,"name":"assetConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3044,"src":"4878:11:10","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_calldata_ptr","typeString":"struct LendingConfiguration.AssetConfig calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AssetConfig_$5502_calldata_ptr","typeString":"struct LendingConfiguration.AssetConfig calldata"}],"expression":{"expression":{"baseExpression":{"id":3049,"name":"configuratorParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"4827:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Configuration_$5535_storage_$","typeString":"mapping(address => struct LendingConfiguration.Configuration storage ref)"}},"id":3051,"indexExpression":{"id":3050,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3041,"src":"4846:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4827:32:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage","typeString":"struct LendingConfiguration.Configuration storage ref"}},"id":3052,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4860:12:10","memberName":"assetConfigs","nodeType":"MemberAccess","referencedDeclaration":5534,"src":"4827:45:10","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetConfig_$5502_storage_$dyn_storage","typeString":"struct LendingConfiguration.AssetConfig storage ref[] storage ref"}},"id":3053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4873:4:10","memberName":"push","nodeType":"MemberAccess","src":"4827:50:10","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_AssetConfig_$5502_storage_$dyn_storage_ptr_$_t_struct$_AssetConfig_$5502_storage_$returns$__$attached_to$_t_array$_t_struct$_AssetConfig_$5502_storage_$dyn_storage_ptr_$","typeString":"function (struct LendingConfiguration.AssetConfig storage ref[] storage pointer,struct LendingConfiguration.AssetConfig storage ref)"}},"id":3055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4827:63:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3056,"nodeType":"ExpressionStatement","src":"4827:63:10"},{"eventCall":{"arguments":[{"id":3058,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3041,"src":"4914:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3059,"name":"assetConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3044,"src":"4928:11:10","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_calldata_ptr","typeString":"struct LendingConfiguration.AssetConfig calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_AssetConfig_$5502_calldata_ptr","typeString":"struct LendingConfiguration.AssetConfig calldata"}],"id":3057,"name":"AddAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"4905:8:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_struct$_AssetConfig_$5502_memory_ptr_$returns$__$","typeString":"function (address,struct LendingConfiguration.AssetConfig memory)"}},"id":3060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4905:35:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3061,"nodeType":"EmitStatement","src":"4900:40:10"}]},"documentation":{"id":3039,"nodeType":"StructuredDocumentation","src":"4564:132:10","text":" @notice 添加抵押资产\n @param lendingProxy Lending 代理地址\n @param assetConfig 资产配置"},"functionSelector":"ea31a447","implemented":true,"kind":"function","modifiers":[{"id":3047,"kind":"modifierInvocation","modifierName":{"id":3046,"name":"onlyOwner","nameLocations":["4802:9:10"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"4802:9:10"},"nodeType":"ModifierInvocation","src":"4802:9:10"}],"name":"addAsset","nameLocation":"4710:8:10","parameters":{"id":3045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3041,"mutability":"mutable","name":"lendingProxy","nameLocation":"4727:12:10","nodeType":"VariableDeclaration","scope":3063,"src":"4719:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3040,"name":"address","nodeType":"ElementaryTypeName","src":"4719:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3044,"mutability":"mutable","name":"assetConfig","nameLocation":"4762:11:10","nodeType":"VariableDeclaration","scope":3063,"src":"4741:32:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_calldata_ptr","typeString":"struct LendingConfiguration.AssetConfig"},"typeName":{"id":3043,"nodeType":"UserDefinedTypeName","pathNode":{"id":3042,"name":"AssetConfig","nameLocations":["4741:11:10"],"nodeType":"IdentifierPath","referencedDeclaration":5502,"src":"4741:11:10"},"referencedDeclaration":5502,"src":"4741:11:10","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_storage_ptr","typeString":"struct LendingConfiguration.AssetConfig"}},"visibility":"internal"}],"src":"4718:56:10"},"returnParameters":{"id":3048,"nodeType":"ParameterList","parameters":[],"src":"4817:0:10"},"scope":3263,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3108,"nodeType":"FunctionDefinition","src":"5096:465:10","nodes":[],"body":{"id":3107,"nodeType":"Block","src":"5218:343:10","nodes":[],"statements":[{"assignments":[3075],"declarations":[{"constant":false,"id":3075,"mutability":"mutable","name":"assetIndex","nameLocation":"5233:10:10","nodeType":"VariableDeclaration","scope":3107,"src":"5228:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3074,"name":"uint","nodeType":"ElementaryTypeName","src":"5228:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3081,"initialValue":{"arguments":[{"id":3077,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3066,"src":"5260:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3078,"name":"newAssetConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"5274:14:10","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_calldata_ptr","typeString":"struct LendingConfiguration.AssetConfig calldata"}},"id":3079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5289:5:10","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":5489,"src":"5274:20:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3076,"name":"getAssetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3248,"src":"5246:13:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":3080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5246:49:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5228:67:10"},{"assignments":[3084],"declarations":[{"constant":false,"id":3084,"mutability":"mutable","name":"oldAssetConfig","nameLocation":"5324:14:10","nodeType":"VariableDeclaration","scope":3107,"src":"5305:33:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig"},"typeName":{"id":3083,"nodeType":"UserDefinedTypeName","pathNode":{"id":3082,"name":"AssetConfig","nameLocations":["5305:11:10"],"nodeType":"IdentifierPath","referencedDeclaration":5502,"src":"5305:11:10"},"referencedDeclaration":5502,"src":"5305:11:10","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_storage_ptr","typeString":"struct LendingConfiguration.AssetConfig"}},"visibility":"internal"}],"id":3091,"initialValue":{"baseExpression":{"expression":{"baseExpression":{"id":3085,"name":"configuratorParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"5341:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Configuration_$5535_storage_$","typeString":"mapping(address => struct LendingConfiguration.Configuration storage ref)"}},"id":3087,"indexExpression":{"id":3086,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3066,"src":"5360:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5341:32:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage","typeString":"struct LendingConfiguration.Configuration storage ref"}},"id":3088,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5374:12:10","memberName":"assetConfigs","nodeType":"MemberAccess","referencedDeclaration":5534,"src":"5341:45:10","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetConfig_$5502_storage_$dyn_storage","typeString":"struct LendingConfiguration.AssetConfig storage ref[] storage ref"}},"id":3090,"indexExpression":{"id":3089,"name":"assetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3075,"src":"5387:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5341:57:10","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_storage","typeString":"struct LendingConfiguration.AssetConfig storage ref"}},"nodeType":"VariableDeclarationStatement","src":"5305:93:10"},{"expression":{"id":3099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":3092,"name":"configuratorParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"5408:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Configuration_$5535_storage_$","typeString":"mapping(address => struct LendingConfiguration.Configuration storage ref)"}},"id":3094,"indexExpression":{"id":3093,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3066,"src":"5427:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5408:32:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage","typeString":"struct LendingConfiguration.Configuration storage ref"}},"id":3095,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5441:12:10","memberName":"assetConfigs","nodeType":"MemberAccess","referencedDeclaration":5534,"src":"5408:45:10","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetConfig_$5502_storage_$dyn_storage","typeString":"struct LendingConfiguration.AssetConfig storage ref[] storage ref"}},"id":3097,"indexExpression":{"id":3096,"name":"assetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3075,"src":"5454:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5408:57:10","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_storage","typeString":"struct LendingConfiguration.AssetConfig storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3098,"name":"newAssetConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"5468:14:10","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_calldata_ptr","typeString":"struct LendingConfiguration.AssetConfig calldata"}},"src":"5408:74:10","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_storage","typeString":"struct LendingConfiguration.AssetConfig storage ref"}},"id":3100,"nodeType":"ExpressionStatement","src":"5408:74:10"},{"eventCall":{"arguments":[{"id":3102,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3066,"src":"5509:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3103,"name":"oldAssetConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3084,"src":"5523:14:10","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig memory"}},{"id":3104,"name":"newAssetConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3069,"src":"5539:14:10","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_calldata_ptr","typeString":"struct LendingConfiguration.AssetConfig calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig memory"},{"typeIdentifier":"t_struct$_AssetConfig_$5502_calldata_ptr","typeString":"struct LendingConfiguration.AssetConfig calldata"}],"id":3101,"name":"UpdateAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2762,"src":"5497:11:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_struct$_AssetConfig_$5502_memory_ptr_$_t_struct$_AssetConfig_$5502_memory_ptr_$returns$__$","typeString":"function (address,struct LendingConfiguration.AssetConfig memory,struct LendingConfiguration.AssetConfig memory)"}},"id":3105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5497:57:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3106,"nodeType":"EmitStatement","src":"5492:62:10"}]},"documentation":{"id":3064,"nodeType":"StructuredDocumentation","src":"4953:138:10","text":" @notice 更新资产配置\n @param lendingProxy Lending 代理地址\n @param newAssetConfig 新资产配置"},"functionSelector":"9a0fd808","implemented":true,"kind":"function","modifiers":[{"id":3072,"kind":"modifierInvocation","modifierName":{"id":3071,"name":"onlyOwner","nameLocations":["5203:9:10"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"5203:9:10"},"nodeType":"ModifierInvocation","src":"5203:9:10"}],"name":"updateAsset","nameLocation":"5105:11:10","parameters":{"id":3070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3066,"mutability":"mutable","name":"lendingProxy","nameLocation":"5125:12:10","nodeType":"VariableDeclaration","scope":3108,"src":"5117:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3065,"name":"address","nodeType":"ElementaryTypeName","src":"5117:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3069,"mutability":"mutable","name":"newAssetConfig","nameLocation":"5160:14:10","nodeType":"VariableDeclaration","scope":3108,"src":"5139:35:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_calldata_ptr","typeString":"struct LendingConfiguration.AssetConfig"},"typeName":{"id":3068,"nodeType":"UserDefinedTypeName","pathNode":{"id":3067,"name":"AssetConfig","nameLocations":["5139:11:10"],"nodeType":"IdentifierPath","referencedDeclaration":5502,"src":"5139:11:10"},"referencedDeclaration":5502,"src":"5139:11:10","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_storage_ptr","typeString":"struct LendingConfiguration.AssetConfig"}},"visibility":"internal"}],"src":"5116:59:10"},"returnParameters":{"id":3073,"nodeType":"ParameterList","parameters":[],"src":"5218:0:10"},"scope":3263,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3138,"nodeType":"FunctionDefinition","src":"5746:347:10","nodes":[],"body":{"id":3137,"nodeType":"Block","src":"5920:173:10","nodes":[],"statements":[{"assignments":[3121],"declarations":[{"constant":false,"id":3121,"mutability":"mutable","name":"assetIndex","nameLocation":"5935:10:10","nodeType":"VariableDeclaration","scope":3137,"src":"5930:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3120,"name":"uint","nodeType":"ElementaryTypeName","src":"5930:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3126,"initialValue":{"arguments":[{"id":3123,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3111,"src":"5962:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3124,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3113,"src":"5976:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3122,"name":"getAssetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3248,"src":"5948:13:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":3125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5948:34:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5930:52:10"},{"expression":{"id":3135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"baseExpression":{"id":3127,"name":"configuratorParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"5992:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Configuration_$5535_storage_$","typeString":"mapping(address => struct LendingConfiguration.Configuration storage ref)"}},"id":3129,"indexExpression":{"id":3128,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3111,"src":"6011:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5992:32:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage","typeString":"struct LendingConfiguration.Configuration storage ref"}},"id":3130,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6025:12:10","memberName":"assetConfigs","nodeType":"MemberAccess","referencedDeclaration":5534,"src":"5992:45:10","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetConfig_$5502_storage_$dyn_storage","typeString":"struct LendingConfiguration.AssetConfig storage ref[] storage ref"}},"id":3132,"indexExpression":{"id":3131,"name":"assetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3121,"src":"6038:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5992:57:10","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_storage","typeString":"struct LendingConfiguration.AssetConfig storage ref"}},"id":3133,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6050:22:10","memberName":"borrowCollateralFactor","nodeType":"MemberAccess","referencedDeclaration":5495,"src":"5992:80:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3134,"name":"newBorrowCF","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3115,"src":"6075:11:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"5992:94:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":3136,"nodeType":"ExpressionStatement","src":"5992:94:10"}]},"documentation":{"id":3109,"nodeType":"StructuredDocumentation","src":"5567:174:10","text":" @notice 更新资产抵押率\n @param lendingProxy Lending 代理地址\n @param asset 资产地址\n @param newBorrowCF 新借款抵押率"},"functionSelector":"b73585f1","implemented":true,"kind":"function","modifiers":[{"id":3118,"kind":"modifierInvocation","modifierName":{"id":3117,"name":"onlyOwner","nameLocations":["5905:9:10"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"5905:9:10"},"nodeType":"ModifierInvocation","src":"5905:9:10"}],"name":"updateAssetBorrowCollateralFactor","nameLocation":"5755:33:10","parameters":{"id":3116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3111,"mutability":"mutable","name":"lendingProxy","nameLocation":"5806:12:10","nodeType":"VariableDeclaration","scope":3138,"src":"5798:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3110,"name":"address","nodeType":"ElementaryTypeName","src":"5798:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3113,"mutability":"mutable","name":"asset","nameLocation":"5837:5:10","nodeType":"VariableDeclaration","scope":3138,"src":"5829:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3112,"name":"address","nodeType":"ElementaryTypeName","src":"5829:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3115,"mutability":"mutable","name":"newBorrowCF","nameLocation":"5860:11:10","nodeType":"VariableDeclaration","scope":3138,"src":"5853:18:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3114,"name":"uint64","nodeType":"ElementaryTypeName","src":"5853:6:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"5788:89:10"},"returnParameters":{"id":3119,"nodeType":"ParameterList","parameters":[],"src":"5920:0:10"},"scope":3263,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3168,"nodeType":"FunctionDefinition","src":"6279:324:10","nodes":[],"body":{"id":3167,"nodeType":"Block","src":"6442:161:10","nodes":[],"statements":[{"assignments":[3151],"declarations":[{"constant":false,"id":3151,"mutability":"mutable","name":"assetIndex","nameLocation":"6457:10:10","nodeType":"VariableDeclaration","scope":3167,"src":"6452:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3150,"name":"uint","nodeType":"ElementaryTypeName","src":"6452:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3156,"initialValue":{"arguments":[{"id":3153,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3141,"src":"6484:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3154,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3143,"src":"6498:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3152,"name":"getAssetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3248,"src":"6470:13:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":3155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6470:34:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6452:52:10"},{"expression":{"id":3165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"baseExpression":{"id":3157,"name":"configuratorParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"6514:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Configuration_$5535_storage_$","typeString":"mapping(address => struct LendingConfiguration.Configuration storage ref)"}},"id":3159,"indexExpression":{"id":3158,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3141,"src":"6533:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6514:32:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage","typeString":"struct LendingConfiguration.Configuration storage ref"}},"id":3160,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6547:12:10","memberName":"assetConfigs","nodeType":"MemberAccess","referencedDeclaration":5534,"src":"6514:45:10","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetConfig_$5502_storage_$dyn_storage","typeString":"struct LendingConfiguration.AssetConfig storage ref[] storage ref"}},"id":3162,"indexExpression":{"id":3161,"name":"assetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3151,"src":"6560:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6514:57:10","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_storage","typeString":"struct LendingConfiguration.AssetConfig storage ref"}},"id":3163,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6572:9:10","memberName":"supplyCap","nodeType":"MemberAccess","referencedDeclaration":5501,"src":"6514:67:10","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3164,"name":"newSupplyCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"6584:12:10","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"6514:82:10","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":3166,"nodeType":"ExpressionStatement","src":"6514:82:10"}]},"documentation":{"id":3139,"nodeType":"StructuredDocumentation","src":"6099:175:10","text":" @notice 更新资产供应上限\n @param lendingProxy Lending 代理地址\n @param asset 资产地址\n @param newSupplyCap 新供应上限"},"functionSelector":"a2ced7fd","implemented":true,"kind":"function","modifiers":[{"id":3148,"kind":"modifierInvocation","modifierName":{"id":3147,"name":"onlyOwner","nameLocations":["6427:9:10"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"6427:9:10"},"nodeType":"ModifierInvocation","src":"6427:9:10"}],"name":"updateAssetSupplyCap","nameLocation":"6288:20:10","parameters":{"id":3146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3141,"mutability":"mutable","name":"lendingProxy","nameLocation":"6326:12:10","nodeType":"VariableDeclaration","scope":3168,"src":"6318:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3140,"name":"address","nodeType":"ElementaryTypeName","src":"6318:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3143,"mutability":"mutable","name":"asset","nameLocation":"6357:5:10","nodeType":"VariableDeclaration","scope":3168,"src":"6349:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3142,"name":"address","nodeType":"ElementaryTypeName","src":"6349:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3145,"mutability":"mutable","name":"newSupplyCap","nameLocation":"6381:12:10","nodeType":"VariableDeclaration","scope":3168,"src":"6373:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3144,"name":"uint128","nodeType":"ElementaryTypeName","src":"6373:7:10","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"6308:91:10"},"returnParameters":{"id":3149,"nodeType":"ParameterList","parameters":[],"src":"6442:0:10"},"scope":3263,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3196,"nodeType":"FunctionDefinition","src":"6753:242:10","nodes":[],"body":{"id":3195,"nodeType":"Block","src":"6828:167:10","nodes":[],"statements":[{"assignments":[3179],"declarations":[{"constant":false,"id":3179,"mutability":"mutable","name":"newLending","nameLocation":"6846:10:10","nodeType":"VariableDeclaration","scope":3195,"src":"6838:18:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3178,"name":"address","nodeType":"ElementaryTypeName","src":"6838:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3187,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"baseExpression":{"id":3181,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3273,"src":"6874:7:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":3183,"indexExpression":{"id":3182,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3171,"src":"6882:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6874:21:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3180,"name":"LendingFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5587,"src":"6859:14:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingFactory_$5587_$","typeString":"type(contract LendingFactory)"}},"id":3184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6859:37:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_LendingFactory_$5587","typeString":"contract LendingFactory"}},"id":3185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6897:6:10","memberName":"deploy","nodeType":"MemberAccess","referencedDeclaration":5586,"src":"6859:44:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_address_$","typeString":"function () external returns (address)"}},"id":3186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6859:46:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6838:67:10"},{"eventCall":{"arguments":[{"id":3189,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3171,"src":"6936:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3190,"name":"newLending","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3179,"src":"6950:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3188,"name":"LendingDeployed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2768,"src":"6920:15:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":3191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6920:41:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3192,"nodeType":"EmitStatement","src":"6915:46:10"},{"expression":{"id":3193,"name":"newLending","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3179,"src":"6978:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3177,"id":3194,"nodeType":"Return","src":"6971:17:10"}]},"documentation":{"id":3169,"nodeType":"StructuredDocumentation","src":"6609:139:10","text":" @notice 部署新的 Lending 实现\n @param lendingProxy Lending 代理地址\n @return 新实现合约地址"},"functionSelector":"4c96a389","implemented":true,"kind":"function","modifiers":[{"id":3174,"kind":"modifierInvocation","modifierName":{"id":3173,"name":"onlyOwner","nameLocations":["6800:9:10"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"6800:9:10"},"nodeType":"ModifierInvocation","src":"6800:9:10"}],"name":"deploy","nameLocation":"6762:6:10","parameters":{"id":3172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3171,"mutability":"mutable","name":"lendingProxy","nameLocation":"6777:12:10","nodeType":"VariableDeclaration","scope":3196,"src":"6769:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3170,"name":"address","nodeType":"ElementaryTypeName","src":"6769:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6768:22:10"},"returnParameters":{"id":3177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3176,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3196,"src":"6819:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3175,"name":"address","nodeType":"ElementaryTypeName","src":"6819:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6818:9:10"},"scope":3263,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3248,"nodeType":"FunctionDefinition","src":"7181:442:10","nodes":[],"body":{"id":3247,"nodeType":"Block","src":"7268:355:10","nodes":[],"statements":[{"assignments":[3210],"declarations":[{"constant":false,"id":3210,"mutability":"mutable","name":"assetConfigs","nameLocation":"7299:12:10","nodeType":"VariableDeclaration","scope":3247,"src":"7278:33:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetConfig_$5502_memory_ptr_$dyn_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig[]"},"typeName":{"baseType":{"id":3208,"nodeType":"UserDefinedTypeName","pathNode":{"id":3207,"name":"AssetConfig","nameLocations":["7278:11:10"],"nodeType":"IdentifierPath","referencedDeclaration":5502,"src":"7278:11:10"},"referencedDeclaration":5502,"src":"7278:11:10","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_storage_ptr","typeString":"struct LendingConfiguration.AssetConfig"}},"id":3209,"nodeType":"ArrayTypeName","src":"7278:13:10","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetConfig_$5502_storage_$dyn_storage_ptr","typeString":"struct LendingConfiguration.AssetConfig[]"}},"visibility":"internal"}],"id":3215,"initialValue":{"expression":{"baseExpression":{"id":3211,"name":"configuratorParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"7314:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Configuration_$5535_storage_$","typeString":"mapping(address => struct LendingConfiguration.Configuration storage ref)"}},"id":3213,"indexExpression":{"id":3212,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3199,"src":"7333:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7314:32:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage","typeString":"struct LendingConfiguration.Configuration storage ref"}},"id":3214,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7347:12:10","memberName":"assetConfigs","nodeType":"MemberAccess","referencedDeclaration":5534,"src":"7314:45:10","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetConfig_$5502_storage_$dyn_storage","typeString":"struct LendingConfiguration.AssetConfig storage ref[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"7278:81:10"},{"assignments":[3217],"declarations":[{"constant":false,"id":3217,"mutability":"mutable","name":"numAssets","nameLocation":"7374:9:10","nodeType":"VariableDeclaration","scope":3247,"src":"7369:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3216,"name":"uint","nodeType":"ElementaryTypeName","src":"7369:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3220,"initialValue":{"expression":{"id":3218,"name":"assetConfigs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3210,"src":"7386:12:10","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetConfig_$5502_memory_ptr_$dyn_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig memory[] memory"}},"id":3219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7399:6:10","memberName":"length","nodeType":"MemberAccess","src":"7386:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7369:36:10"},{"body":{"id":3242,"nodeType":"Block","src":"7449:132:10","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":3228,"name":"assetConfigs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3210,"src":"7467:12:10","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetConfig_$5502_memory_ptr_$dyn_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig memory[] memory"}},"id":3230,"indexExpression":{"id":3229,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3222,"src":"7480:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7467:15:10","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig memory"}},"id":3231,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7483:5:10","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":5489,"src":"7467:21:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3232,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3201,"src":"7492:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7467:30:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3237,"nodeType":"IfStatement","src":"7463:77:10","trueBody":{"id":3236,"nodeType":"Block","src":"7499:41:10","statements":[{"expression":{"id":3234,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3222,"src":"7524:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3205,"id":3235,"nodeType":"Return","src":"7517:8:10"}]}},{"id":3241,"nodeType":"UncheckedBlock","src":"7553:18:10","statements":[{"expression":{"id":3239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7565:3:10","subExpression":{"id":3238,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3222,"src":"7565:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3240,"nodeType":"ExpressionStatement","src":"7565:3:10"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3225,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3222,"src":"7432:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3226,"name":"numAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3217,"src":"7436:9:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7432:13:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3243,"initializationExpression":{"assignments":[3222],"declarations":[{"constant":false,"id":3222,"mutability":"mutable","name":"i","nameLocation":"7425:1:10","nodeType":"VariableDeclaration","scope":3243,"src":"7420:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3221,"name":"uint","nodeType":"ElementaryTypeName","src":"7420:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3224,"initialValue":{"hexValue":"30","id":3223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7429:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7420:10:10"},"isSimpleCounterLoop":false,"nodeType":"ForStatement","src":"7415:166:10"},{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3244,"name":"AssetDoesNotExist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"7597:17:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7597:19:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3246,"nodeType":"RevertStatement","src":"7590:26:10"}]},"documentation":{"id":3197,"nodeType":"StructuredDocumentation","src":"7001:175:10","text":" @notice 获取资产索引\n @param lendingProxy Lending 代理地址\n @param asset 资产地址\n @return 资产在配置数组中的索引"},"functionSelector":"886fe70b","implemented":true,"kind":"function","modifiers":[],"name":"getAssetIndex","nameLocation":"7190:13:10","parameters":{"id":3202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3199,"mutability":"mutable","name":"lendingProxy","nameLocation":"7212:12:10","nodeType":"VariableDeclaration","scope":3248,"src":"7204:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3198,"name":"address","nodeType":"ElementaryTypeName","src":"7204:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3201,"mutability":"mutable","name":"asset","nameLocation":"7234:5:10","nodeType":"VariableDeclaration","scope":3248,"src":"7226:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3200,"name":"address","nodeType":"ElementaryTypeName","src":"7226:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7203:37:10"},"returnParameters":{"id":3205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3204,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3248,"src":"7262:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3203,"name":"uint","nodeType":"ElementaryTypeName","src":"7262:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7261:6:10"},"scope":3263,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":3262,"nodeType":"FunctionDefinition","src":"7755:149:10","nodes":[],"body":{"id":3261,"nodeType":"Block","src":"7848:56:10","nodes":[],"statements":[{"expression":{"baseExpression":{"id":3257,"name":"configuratorParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"7865:18:10","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Configuration_$5535_storage_$","typeString":"mapping(address => struct LendingConfiguration.Configuration storage ref)"}},"id":3259,"indexExpression":{"id":3258,"name":"lendingProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3251,"src":"7884:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7865:32:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage","typeString":"struct LendingConfiguration.Configuration storage ref"}},"functionReturnParameters":3256,"id":3260,"nodeType":"Return","src":"7858:39:10"}]},"documentation":{"id":3249,"nodeType":"StructuredDocumentation","src":"7629:121:10","text":" @notice 获取市场配置\n @param lendingProxy Lending 代理地址\n @return 配置信息"},"functionSelector":"c44b11f7","implemented":true,"kind":"function","modifiers":[],"name":"getConfiguration","nameLocation":"7764:16:10","parameters":{"id":3252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3251,"mutability":"mutable","name":"lendingProxy","nameLocation":"7789:12:10","nodeType":"VariableDeclaration","scope":3262,"src":"7781:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3250,"name":"address","nodeType":"ElementaryTypeName","src":"7781:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7780:22:10"},"returnParameters":{"id":3256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3255,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3262,"src":"7826:20:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_memory_ptr","typeString":"struct LendingConfiguration.Configuration"},"typeName":{"id":3254,"nodeType":"UserDefinedTypeName","pathNode":{"id":3253,"name":"Configuration","nameLocations":["7826:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":5535,"src":"7826:13:10"},"referencedDeclaration":5535,"src":"7826:13:10","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage_ptr","typeString":"struct LendingConfiguration.Configuration"}},"visibility":"internal"}],"src":"7825:22:10"},"scope":3263,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":2722,"name":"ConfiguratorStorage","nameLocations":["380:19:10"],"nodeType":"IdentifierPath","referencedDeclaration":3279,"src":"380:19:10"},"id":2723,"nodeType":"InheritanceSpecifier","src":"380:19:10"},{"baseName":{"id":2724,"name":"UUPSUpgradeable","nameLocations":["406:15:10"],"nodeType":"IdentifierPath","referencedDeclaration":10834,"src":"406:15:10"},"id":2725,"nodeType":"InheritanceSpecifier","src":"406:15:10"},{"baseName":{"id":2726,"name":"OwnableUpgradeable","nameLocations":["427:18:10"],"nodeType":"IdentifierPath","referencedDeclaration":10384,"src":"427:18:10"},"id":2727,"nodeType":"InheritanceSpecifier","src":"427:18:10"}],"canonicalName":"Configurator","contractDependencies":[],"contractKind":"contract","documentation":{"id":2721,"nodeType":"StructuredDocumentation","src":"280:69:10","text":" @title Configurator\n @notice 借贷池配置管理合约"},"fullyImplemented":true,"linearizedBaseContracts":[3263,10384,11497,10834,12055,10652,3279,5536],"name":"Configurator","nameLocation":"359:12:10","scope":3264,"usedErrors":[2770,2772,2774,2776,10220,10225,10401,10404,10679,10684,12250,12263,13148,13441],"usedEvents":[2735,2745,2752,2762,2768,10231,10409,12028]}],"license":"MIT"}},"contracts/ytLending/ConfiguratorStorage.sol":{"id":11,"ast":{"absolutePath":"contracts/ytLending/ConfiguratorStorage.sol","id":3280,"exportedSymbols":{"ConfiguratorStorage":[3279],"LendingConfiguration":[5536]},"nodeType":"SourceUnit","src":"32:417:11","nodes":[{"id":3265,"nodeType":"PragmaDirective","src":"32:23:11","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":3266,"nodeType":"ImportDirective","src":"57:36:11","nodes":[],"absolutePath":"contracts/ytLending/LendingConfiguration.sol","file":"./LendingConfiguration.sol","nameLocation":"-1:-1:-1","scope":3280,"sourceUnit":5537,"symbolAliases":[],"unitAlias":""},{"id":3279,"nodeType":"ContractDefinition","src":"170:277:11","nodes":[{"id":3273,"nodeType":"VariableDeclaration","src":"288:42:11","nodes":[],"constant":false,"functionSelector":"395c0fda","mutability":"mutable","name":"factory","nameLocation":"323:7:11","scope":3279,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"typeName":{"id":3272,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3270,"name":"address","nodeType":"ElementaryTypeName","src":"296:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"288:27:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3271,"name":"address","nodeType":"ElementaryTypeName","src":"307:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"public"},{"id":3278,"nodeType":"VariableDeclaration","src":"385:59:11","nodes":[],"constant":false,"functionSelector":"961544d5","mutability":"mutable","name":"configuratorParams","nameLocation":"426:18:11","scope":3279,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Configuration_$5535_storage_$","typeString":"mapping(address => struct LendingConfiguration.Configuration)"},"typeName":{"id":3277,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3274,"name":"address","nodeType":"ElementaryTypeName","src":"393:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"385:33:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Configuration_$5535_storage_$","typeString":"mapping(address => struct LendingConfiguration.Configuration)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3276,"nodeType":"UserDefinedTypeName","pathNode":{"id":3275,"name":"Configuration","nameLocations":["404:13:11"],"nodeType":"IdentifierPath","referencedDeclaration":5535,"src":"404:13:11"},"referencedDeclaration":5535,"src":"404:13:11","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage_ptr","typeString":"struct LendingConfiguration.Configuration"}}},"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":3268,"name":"LendingConfiguration","nameLocations":["211:20:11"],"nodeType":"IdentifierPath","referencedDeclaration":5536,"src":"211:20:11"},"id":3269,"nodeType":"InheritanceSpecifier","src":"211:20:11"}],"canonicalName":"ConfiguratorStorage","contractDependencies":[],"contractKind":"contract","documentation":{"id":3267,"nodeType":"StructuredDocumentation","src":"95:74:11","text":" @title ConfiguratorStorage\n @notice Configurator 存储定义"},"fullyImplemented":true,"linearizedBaseContracts":[3279,5536],"name":"ConfiguratorStorage","nameLocation":"188:19:11","scope":3280,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"contracts/ytLending/Lending.sol":{"id":12,"ast":{"absolutePath":"contracts/ytLending/Lending.sol","id":5485,"exportedSymbols":{"ContextUpgradeable":[11497],"ERC1967Utils":[12524],"IERC1363":[12016],"IERC1822Proxiable":[12055],"IERC20":[12648],"IERC20Metadata":[12674],"ILending":[232],"IPriceFeed":[246],"Initializable":[10652],"Lending":[5484],"LendingConfiguration":[5536],"LendingMath":[5987],"LendingStorage":[6058],"OwnableUpgradeable":[10384],"PausableUpgradeable":[11657],"ReentrancyGuardUpgradeable":[11786],"SafeERC20":[13138],"UUPSUpgradeable":[10834]},"nodeType":"SourceUnit","src":"32:27808:12","nodes":[{"id":3281,"nodeType":"PragmaDirective","src":"32:23:12","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":3282,"nodeType":"ImportDirective","src":"57:77:12","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":5485,"sourceUnit":10835,"symbolAliases":[],"unitAlias":""},{"id":3283,"nodeType":"ImportDirective","src":"135:75:12","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":5485,"sourceUnit":10385,"symbolAliases":[],"unitAlias":""},{"id":3284,"nodeType":"ImportDirective","src":"211:75:12","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":5485,"sourceUnit":11658,"symbolAliases":[],"unitAlias":""},{"id":3285,"nodeType":"ImportDirective","src":"287:82:12","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","nameLocation":"-1:-1:-1","scope":5485,"sourceUnit":11787,"symbolAliases":[],"unitAlias":""},{"id":3286,"nodeType":"ImportDirective","src":"370:56:12","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","nameLocation":"-1:-1:-1","scope":5485,"sourceUnit":12649,"symbolAliases":[],"unitAlias":""},{"id":3287,"nodeType":"ImportDirective","src":"427:75:12","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","nameLocation":"-1:-1:-1","scope":5485,"sourceUnit":12675,"symbolAliases":[],"unitAlias":""},{"id":3288,"nodeType":"ImportDirective","src":"503:65:12","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","nameLocation":"-1:-1:-1","scope":5485,"sourceUnit":13139,"symbolAliases":[],"unitAlias":""},{"id":3289,"nodeType":"ImportDirective","src":"570:30:12","nodes":[],"absolutePath":"contracts/ytLending/LendingStorage.sol","file":"./LendingStorage.sol","nameLocation":"-1:-1:-1","scope":5485,"sourceUnit":6059,"symbolAliases":[],"unitAlias":""},{"id":3290,"nodeType":"ImportDirective","src":"601:27:12","nodes":[],"absolutePath":"contracts/ytLending/LendingMath.sol","file":"./LendingMath.sol","nameLocation":"-1:-1:-1","scope":5485,"sourceUnit":5988,"symbolAliases":[],"unitAlias":""},{"id":3291,"nodeType":"ImportDirective","src":"629:36:12","nodes":[],"absolutePath":"contracts/interfaces/ILending.sol","file":"../interfaces/ILending.sol","nameLocation":"-1:-1:-1","scope":5485,"sourceUnit":233,"symbolAliases":[],"unitAlias":""},{"id":3292,"nodeType":"ImportDirective","src":"666:38:12","nodes":[],"absolutePath":"contracts/interfaces/IPriceFeed.sol","file":"../interfaces/IPriceFeed.sol","nameLocation":"-1:-1:-1","scope":5485,"sourceUnit":247,"symbolAliases":[],"unitAlias":""},{"id":5484,"nodeType":"ContractDefinition","src":"765:27073:12","nodes":[{"id":3309,"nodeType":"UsingForDirective","src":"928:27:12","nodes":[],"global":false,"libraryName":{"id":3306,"name":"SafeERC20","nameLocations":["934:9:12"],"nodeType":"IdentifierPath","referencedDeclaration":13138,"src":"934:9:12"},"typeName":{"id":3308,"nodeType":"UserDefinedTypeName","pathNode":{"id":3307,"name":"IERC20","nameLocations":["948:6:12"],"nodeType":"IdentifierPath","referencedDeclaration":12648,"src":"948:6:12"},"referencedDeclaration":12648,"src":"948:6:12","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}}},{"id":3317,"nodeType":"FunctionDefinition","src":"1014:53:12","nodes":[],"body":{"id":3316,"nodeType":"Block","src":"1028:39:12","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3313,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10606,"src":"1038:20:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1038:22:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3315,"nodeType":"ExpressionStatement","src":"1038:22:12"}]},"documentation":{"id":3310,"nodeType":"StructuredDocumentation","src":"961:48:12","text":"@custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":3311,"nodeType":"ParameterList","parameters":[],"src":"1025:2:12"},"returnParameters":{"id":3312,"nodeType":"ParameterList","parameters":[],"src":"1028:0:12"},"scope":5484,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":3524,"nodeType":"FunctionDefinition","src":"1154:2319:12","nodes":[],"body":{"id":3523,"nodeType":"Block","src":"1226:2247:12","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3326,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10706,"src":"1236:22:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1236:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3328,"nodeType":"ExpressionStatement","src":"1236:24:12"},{"expression":{"arguments":[{"expression":{"id":3330,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1285:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1289:6:12","memberName":"sender","nodeType":"MemberAccess","src":"1285:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3329,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10244,"src":"1270:14:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":3332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1270:26:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3333,"nodeType":"ExpressionStatement","src":"1270:26:12"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3334,"name":"__Pausable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11561,"src":"1306:15:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1306:17:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3336,"nodeType":"ExpressionStatement","src":"1306:17:12"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3337,"name":"__ReentrancyGuard_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11697,"src":"1333:22:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1333:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3339,"nodeType":"ExpressionStatement","src":"1333:24:12"},{"expression":{"id":3343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3340,"name":"baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5995,"src":"1406:9:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3341,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3321,"src":"1418:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":3342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1425:9:12","memberName":"baseToken","nodeType":"MemberAccess","referencedDeclaration":5504,"src":"1418:16:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1406:28:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3344,"nodeType":"ExpressionStatement","src":"1406:28:12"},{"expression":{"id":3348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3345,"name":"baseTokenPriceFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5997,"src":"1444:18:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3346,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3321,"src":"1465:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":3347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1472:18:12","memberName":"baseTokenPriceFeed","nodeType":"MemberAccess","referencedDeclaration":5506,"src":"1465:25:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1444:46:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3349,"nodeType":"ExpressionStatement","src":"1444:46:12"},{"assignments":[3351],"declarations":[{"constant":false,"id":3351,"mutability":"mutable","name":"SECONDS_PER_YEAR","nameLocation":"1544:16:12","nodeType":"VariableDeclaration","scope":3523,"src":"1537:23:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3350,"name":"uint64","nodeType":"ElementaryTypeName","src":"1537:6:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":3359,"initialValue":{"commonType":{"typeIdentifier":"t_rational_31536000_by_1","typeString":"int_const 31536000"},"id":3358,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_525600_by_1","typeString":"int_const 525600"},"id":3356,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_8760_by_1","typeString":"int_const 8760"},"id":3354,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"333635","id":3352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1563:3:12","typeDescriptions":{"typeIdentifier":"t_rational_365_by_1","typeString":"int_const 365"},"value":"365"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3234","id":3353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1569:2:12","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},"src":"1563:8:12","typeDescriptions":{"typeIdentifier":"t_rational_8760_by_1","typeString":"int_const 8760"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3630","id":3355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1574:2:12","typeDescriptions":{"typeIdentifier":"t_rational_60_by_1","typeString":"int_const 60"},"value":"60"},"src":"1563:13:12","typeDescriptions":{"typeIdentifier":"t_rational_525600_by_1","typeString":"int_const 525600"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3630","id":3357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1579:2:12","typeDescriptions":{"typeIdentifier":"t_rational_60_by_1","typeString":"int_const 60"},"value":"60"},"src":"1563:18:12","typeDescriptions":{"typeIdentifier":"t_rational_31536000_by_1","typeString":"int_const 31536000"}},"nodeType":"VariableDeclarationStatement","src":"1537:44:12"},{"expression":{"id":3363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3360,"name":"supplyKink","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5999,"src":"1645:10:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3361,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3321,"src":"1658:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":3362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1665:10:12","memberName":"supplyKink","nodeType":"MemberAccess","referencedDeclaration":5508,"src":"1658:17:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"1645:30:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":3364,"nodeType":"ExpressionStatement","src":"1645:30:12"},{"expression":{"id":3373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3365,"name":"supplyPerSecondInterestRateSlopeLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6001,"src":"1685:35:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":3371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3368,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3321,"src":"1730:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":3369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1737:33:12","memberName":"supplyPerYearInterestRateSlopeLow","nodeType":"MemberAccess","referencedDeclaration":5510,"src":"1730:40:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3370,"name":"SECONDS_PER_YEAR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3351,"src":"1773:16:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"1730:59:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":3367,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1723:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":3366,"name":"uint64","nodeType":"ElementaryTypeName","src":"1723:6:12","typeDescriptions":{}}},"id":3372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1723:67:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"1685:105:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":3374,"nodeType":"ExpressionStatement","src":"1685:105:12"},{"expression":{"id":3383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3375,"name":"supplyPerSecondInterestRateSlopeHigh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6003,"src":"1800:36:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":3381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3378,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3321,"src":"1846:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":3379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1853:34:12","memberName":"supplyPerYearInterestRateSlopeHigh","nodeType":"MemberAccess","referencedDeclaration":5512,"src":"1846:41:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3380,"name":"SECONDS_PER_YEAR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3351,"src":"1890:16:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"1846:60:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":3377,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1839:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":3376,"name":"uint64","nodeType":"ElementaryTypeName","src":"1839:6:12","typeDescriptions":{}}},"id":3382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1839:68:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"1800:107:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":3384,"nodeType":"ExpressionStatement","src":"1800:107:12"},{"expression":{"id":3393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3385,"name":"supplyPerSecondInterestRateBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6005,"src":"1917:31:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":3391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3388,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3321,"src":"1958:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":3389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1965:29:12","memberName":"supplyPerYearInterestRateBase","nodeType":"MemberAccess","referencedDeclaration":5514,"src":"1958:36:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3390,"name":"SECONDS_PER_YEAR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3351,"src":"1997:16:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"1958:55:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":3387,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1951:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":3386,"name":"uint64","nodeType":"ElementaryTypeName","src":"1951:6:12","typeDescriptions":{}}},"id":3392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1951:63:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"1917:97:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":3394,"nodeType":"ExpressionStatement","src":"1917:97:12"},{"expression":{"id":3398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3395,"name":"borrowKink","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6007,"src":"2033:10:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3396,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3321,"src":"2046:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":3397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2053:10:12","memberName":"borrowKink","nodeType":"MemberAccess","referencedDeclaration":5516,"src":"2046:17:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"2033:30:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":3399,"nodeType":"ExpressionStatement","src":"2033:30:12"},{"expression":{"id":3408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3400,"name":"borrowPerSecondInterestRateSlopeLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6009,"src":"2073:35:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":3406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3403,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3321,"src":"2118:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":3404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2125:33:12","memberName":"borrowPerYearInterestRateSlopeLow","nodeType":"MemberAccess","referencedDeclaration":5518,"src":"2118:40:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3405,"name":"SECONDS_PER_YEAR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3351,"src":"2161:16:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"2118:59:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":3402,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2111:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":3401,"name":"uint64","nodeType":"ElementaryTypeName","src":"2111:6:12","typeDescriptions":{}}},"id":3407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2111:67:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"2073:105:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":3409,"nodeType":"ExpressionStatement","src":"2073:105:12"},{"expression":{"id":3418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3410,"name":"borrowPerSecondInterestRateSlopeHigh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6011,"src":"2188:36:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":3416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3413,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3321,"src":"2234:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":3414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2241:34:12","memberName":"borrowPerYearInterestRateSlopeHigh","nodeType":"MemberAccess","referencedDeclaration":5520,"src":"2234:41:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3415,"name":"SECONDS_PER_YEAR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3351,"src":"2278:16:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"2234:60:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":3412,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2227:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":3411,"name":"uint64","nodeType":"ElementaryTypeName","src":"2227:6:12","typeDescriptions":{}}},"id":3417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2227:68:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"2188:107:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":3419,"nodeType":"ExpressionStatement","src":"2188:107:12"},{"expression":{"id":3428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3420,"name":"borrowPerSecondInterestRateBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6013,"src":"2305:31:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":3426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3423,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3321,"src":"2346:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":3424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2353:29:12","memberName":"borrowPerYearInterestRateBase","nodeType":"MemberAccess","referencedDeclaration":5522,"src":"2346:36:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3425,"name":"SECONDS_PER_YEAR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3351,"src":"2385:16:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"2346:55:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":3422,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2339:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":3421,"name":"uint64","nodeType":"ElementaryTypeName","src":"2339:6:12","typeDescriptions":{}}},"id":3427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2339:63:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"2305:97:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":3429,"nodeType":"ExpressionStatement","src":"2305:97:12"},{"expression":{"id":3433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3430,"name":"storeFrontPriceFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6015,"src":"2451:21:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3431,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3321,"src":"2475:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":3432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2482:21:12","memberName":"storeFrontPriceFactor","nodeType":"MemberAccess","referencedDeclaration":5524,"src":"2475:28:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"2451:52:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":3434,"nodeType":"ExpressionStatement","src":"2451:52:12"},{"expression":{"id":3438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3435,"name":"trackingIndexScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6017,"src":"2513:18:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3436,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3321,"src":"2534:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":3437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2541:18:12","memberName":"trackingIndexScale","nodeType":"MemberAccess","referencedDeclaration":5526,"src":"2534:25:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"2513:46:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":3439,"nodeType":"ExpressionStatement","src":"2513:46:12"},{"expression":{"id":3443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3440,"name":"baseBorrowMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6019,"src":"2569:13:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3441,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3321,"src":"2585:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":3442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2592:13:12","memberName":"baseBorrowMin","nodeType":"MemberAccess","referencedDeclaration":5528,"src":"2585:20:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"2569:36:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"id":3444,"nodeType":"ExpressionStatement","src":"2569:36:12"},{"expression":{"id":3448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3445,"name":"targetReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6021,"src":"2615:14:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3446,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3321,"src":"2632:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":3447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2639:14:12","memberName":"targetReserves","nodeType":"MemberAccess","referencedDeclaration":5530,"src":"2632:21:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"2615:38:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"id":3449,"nodeType":"ExpressionStatement","src":"2615:38:12"},{"expression":{"id":3452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3450,"name":"supplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6049,"src":"2711:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31653138","id":3451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2725:4:12","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"2711:18:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3453,"nodeType":"ExpressionStatement","src":"2711:18:12"},{"expression":{"id":3456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3454,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"2739:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31653138","id":3455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2753:4:12","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"2739:18:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3457,"nodeType":"ExpressionStatement","src":"2739:18:12"},{"expression":{"id":3461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3458,"name":"lastAccrualTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6053,"src":"2767:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3459,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2785:5:12","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2791:9:12","memberName":"timestamp","nodeType":"MemberAccess","src":"2785:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2767:33:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3462,"nodeType":"ExpressionStatement","src":"2767:33:12"},{"body":{"id":3521,"nodeType":"Block","src":"2909:558:12","statements":[{"assignments":[3477],"declarations":[{"constant":false,"id":3477,"mutability":"mutable","name":"assetConfig","nameLocation":"2942:11:12","nodeType":"VariableDeclaration","scope":3521,"src":"2923:30:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig"},"typeName":{"id":3476,"nodeType":"UserDefinedTypeName","pathNode":{"id":3475,"name":"AssetConfig","nameLocations":["2923:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":5502,"src":"2923:11:12"},"referencedDeclaration":5502,"src":"2923:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_storage_ptr","typeString":"struct LendingConfiguration.AssetConfig"}},"visibility":"internal"}],"id":3482,"initialValue":{"baseExpression":{"expression":{"id":3478,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3321,"src":"2956:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":3479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2963:12:12","memberName":"assetConfigs","nodeType":"MemberAccess","referencedDeclaration":5534,"src":"2956:19:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetConfig_$5502_calldata_ptr_$dyn_calldata_ptr","typeString":"struct LendingConfiguration.AssetConfig calldata[] calldata"}},"id":3481,"indexExpression":{"id":3480,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3464,"src":"2976:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2956:22:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_calldata_ptr","typeString":"struct LendingConfiguration.AssetConfig calldata"}},"nodeType":"VariableDeclarationStatement","src":"2923:55:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":3486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3483,"name":"assetConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3477,"src":"3061:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig memory"}},"id":3484,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3073:17:12","memberName":"liquidationFactor","nodeType":"MemberAccess","referencedDeclaration":5499,"src":"3061:29:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"31653138","id":3485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3094:4:12","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"3061:37:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3490,"nodeType":"IfStatement","src":"3058:75:12","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3487,"name":"InvalidLiquidationFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90,"src":"3107:24:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3107:26:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3489,"nodeType":"RevertStatement","src":"3100:33:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":3494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3491,"name":"assetConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3477,"src":"3150:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig memory"}},"id":3492,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3162:22:12","memberName":"borrowCollateralFactor","nodeType":"MemberAccess","referencedDeclaration":5495,"src":"3150:34:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"31653138","id":3493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3188:4:12","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"3150:42:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3498,"nodeType":"IfStatement","src":"3147:85:12","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3495,"name":"InvalidBorrowCollateralFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":92,"src":"3201:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3201:31:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3497,"nodeType":"RevertStatement","src":"3194:38:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":3502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3499,"name":"assetConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3477,"src":"3249:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig memory"}},"id":3500,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3261:25:12","memberName":"liquidateCollateralFactor","nodeType":"MemberAccess","referencedDeclaration":5497,"src":"3249:37:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"31653138","id":3501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3290:4:12","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"3249:45:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3506,"nodeType":"IfStatement","src":"3246:91:12","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3503,"name":"InvalidLiquidateCollateralFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":94,"src":"3303:32:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3303:34:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3505,"nodeType":"RevertStatement","src":"3296:41:12"}},{"expression":{"id":3512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3507,"name":"assetConfigs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6026,"src":"3364:12:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AssetConfig_$5502_storage_$","typeString":"mapping(address => struct LendingConfiguration.AssetConfig storage ref)"}},"id":3510,"indexExpression":{"expression":{"id":3508,"name":"assetConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3477,"src":"3377:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig memory"}},"id":3509,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3389:5:12","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":5489,"src":"3377:17:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3364:31:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_storage","typeString":"struct LendingConfiguration.AssetConfig storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3511,"name":"assetConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3477,"src":"3398:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig memory"}},"src":"3364:45:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_storage","typeString":"struct LendingConfiguration.AssetConfig storage ref"}},"id":3513,"nodeType":"ExpressionStatement","src":"3364:45:12"},{"expression":{"arguments":[{"expression":{"id":3517,"name":"assetConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3477,"src":"3438:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig memory"}},"id":3518,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3450:5:12","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":5489,"src":"3438:17:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3514,"name":"assetList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6029,"src":"3423:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":3516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3433:4:12","memberName":"push","nodeType":"MemberAccess","src":"3423:14:12","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer,address)"}},"id":3519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3423:33:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3520,"nodeType":"ExpressionStatement","src":"3423:33:12"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3467,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3464,"src":"2872:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":3468,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3321,"src":"2876:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration calldata"}},"id":3469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2883:12:12","memberName":"assetConfigs","nodeType":"MemberAccess","referencedDeclaration":5534,"src":"2876:19:12","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetConfig_$5502_calldata_ptr_$dyn_calldata_ptr","typeString":"struct LendingConfiguration.AssetConfig calldata[] calldata"}},"id":3470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2896:6:12","memberName":"length","nodeType":"MemberAccess","src":"2876:26:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2872:30:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3522,"initializationExpression":{"assignments":[3464],"declarations":[{"constant":false,"id":3464,"mutability":"mutable","name":"i","nameLocation":"2865:1:12","nodeType":"VariableDeclaration","scope":3522,"src":"2860:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3463,"name":"uint","nodeType":"ElementaryTypeName","src":"2860:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3466,"initialValue":{"hexValue":"30","id":3465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2869:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2860:10:12"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":3473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2904:3:12","subExpression":{"id":3472,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3464,"src":"2904:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3474,"nodeType":"ExpressionStatement","src":"2904:3:12"},"nodeType":"ForStatement","src":"2855:612:12"}]},"documentation":{"id":3318,"nodeType":"StructuredDocumentation","src":"1073:76:12","text":" @notice 初始化函数\n @param config 市场配置"},"functionSelector":"c9390d8b","implemented":true,"kind":"function","modifiers":[{"id":3324,"kind":"modifierInvocation","modifierName":{"id":3323,"name":"initializer","nameLocations":["1214:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":10492,"src":"1214:11:12"},"nodeType":"ModifierInvocation","src":"1214:11:12"}],"name":"initialize","nameLocation":"1163:10:12","parameters":{"id":3322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3321,"mutability":"mutable","name":"config","nameLocation":"1197:6:12","nodeType":"VariableDeclaration","scope":3524,"src":"1174:29:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_calldata_ptr","typeString":"struct LendingConfiguration.Configuration"},"typeName":{"id":3320,"nodeType":"UserDefinedTypeName","pathNode":{"id":3319,"name":"Configuration","nameLocations":["1174:13:12"],"nodeType":"IdentifierPath","referencedDeclaration":5535,"src":"1174:13:12"},"referencedDeclaration":5535,"src":"1174:13:12","typeDescriptions":{"typeIdentifier":"t_struct$_Configuration_$5535_storage_ptr","typeString":"struct LendingConfiguration.Configuration"}},"visibility":"internal"}],"src":"1173:31:12"},"returnParameters":{"id":3325,"nodeType":"ParameterList","parameters":[],"src":"1226:0:12"},"scope":5484,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3533,"nodeType":"FunctionDefinition","src":"3479:84:12","nodes":[],"body":{"id":3532,"nodeType":"Block","src":"3561:2:12","nodes":[],"statements":[]},"baseFunctions":[10788],"implemented":true,"kind":"function","modifiers":[{"id":3530,"kind":"modifierInvocation","modifierName":{"id":3529,"name":"onlyOwner","nameLocations":["3551:9:12"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"3551:9:12"},"nodeType":"ModifierInvocation","src":"3551:9:12"}],"name":"_authorizeUpgrade","nameLocation":"3488:17:12","overrides":{"id":3528,"nodeType":"OverrideSpecifier","overrides":[],"src":"3542:8:12"},"parameters":{"id":3527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3526,"mutability":"mutable","name":"newImplementation","nameLocation":"3514:17:12","nodeType":"VariableDeclaration","scope":3533,"src":"3506:25:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3525,"name":"address","nodeType":"ElementaryTypeName","src":"3506:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3505:27:12"},"returnParameters":{"id":3531,"nodeType":"ParameterList","parameters":[],"src":"3561:0:12"},"scope":5484,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":3542,"nodeType":"FunctionDefinition","src":"3569:61:12","nodes":[],"body":{"id":3541,"nodeType":"Block","src":"3605:25:12","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3538,"name":"_pause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11632,"src":"3615:6:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3615:8:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3540,"nodeType":"ExpressionStatement","src":"3615:8:12"}]},"functionSelector":"8456cb59","implemented":true,"kind":"function","modifiers":[{"id":3536,"kind":"modifierInvocation","modifierName":{"id":3535,"name":"onlyOwner","nameLocations":["3595:9:12"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"3595:9:12"},"nodeType":"ModifierInvocation","src":"3595:9:12"}],"name":"pause","nameLocation":"3578:5:12","parameters":{"id":3534,"nodeType":"ParameterList","parameters":[],"src":"3583:2:12"},"returnParameters":{"id":3537,"nodeType":"ParameterList","parameters":[],"src":"3605:0:12"},"scope":5484,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3551,"nodeType":"FunctionDefinition","src":"3640:65:12","nodes":[],"body":{"id":3550,"nodeType":"Block","src":"3678:27:12","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3547,"name":"_unpause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11656,"src":"3688:8:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3688:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3549,"nodeType":"ExpressionStatement","src":"3688:10:12"}]},"functionSelector":"3f4ba83a","implemented":true,"kind":"function","modifiers":[{"id":3545,"kind":"modifierInvocation","modifierName":{"id":3544,"name":"onlyOwner","nameLocations":["3668:9:12"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"3668:9:12"},"nodeType":"ModifierInvocation","src":"3668:9:12"}],"name":"unpause","nameLocation":"3649:7:12","parameters":{"id":3543,"nodeType":"ParameterList","parameters":[],"src":"3656:2:12"},"returnParameters":{"id":3546,"nodeType":"ParameterList","parameters":[],"src":"3678:0:12"},"scope":5484,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3651,"nodeType":"FunctionDefinition","src":"3886:1555:12","nodes":[],"body":{"id":3650,"nodeType":"Block","src":"3980:1461:12","nodes":[],"statements":[{"assignments":[3562],"declarations":[{"constant":false,"id":3562,"mutability":"mutable","name":"newSupplyIndex","nameLocation":"3998:14:12","nodeType":"VariableDeclaration","scope":3650,"src":"3990:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3561,"name":"uint256","nodeType":"ElementaryTypeName","src":"3990:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3564,"initialValue":{"id":3563,"name":"supplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6049,"src":"4015:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3990:36:12"},{"assignments":[3566],"declarations":[{"constant":false,"id":3566,"mutability":"mutable","name":"newBorrowIndex","nameLocation":"4044:14:12","nodeType":"VariableDeclaration","scope":3650,"src":"4036:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3565,"name":"uint256","nodeType":"ElementaryTypeName","src":"4036:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3568,"initialValue":{"id":3567,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"4061:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4036:36:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3569,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3554,"src":"4095:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4109:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4095:15:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3645,"nodeType":"IfStatement","src":"4091:1286:12","trueBody":{"id":3644,"nodeType":"Block","src":"4112:1265:12","statements":[{"assignments":[3573],"declarations":[{"constant":false,"id":3573,"mutability":"mutable","name":"totalSupply","nameLocation":"4208:11:12","nodeType":"VariableDeclaration","scope":3644,"src":"4200:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3572,"name":"uint256","nodeType":"ElementaryTypeName","src":"4200:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3583,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3576,"name":"totalSupplyBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6045,"src":"4231:15:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint104","typeString":"uint104"}],"id":3575,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4223:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3574,"name":"uint256","nodeType":"ElementaryTypeName","src":"4223:7:12","typeDescriptions":{}}},"id":3577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4223:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3578,"name":"supplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6049,"src":"4250:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4223:38:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3580,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4222:40:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":3581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4265:4:12","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"4222:47:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4200:69:12"},{"assignments":[3585],"declarations":[{"constant":false,"id":3585,"mutability":"mutable","name":"totalBorrow","nameLocation":"4291:11:12","nodeType":"VariableDeclaration","scope":3644,"src":"4283:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3584,"name":"uint256","nodeType":"ElementaryTypeName","src":"4283:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3595,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3588,"name":"totalBorrowBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6047,"src":"4314:15:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint104","typeString":"uint104"}],"id":3587,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4306:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3586,"name":"uint256","nodeType":"ElementaryTypeName","src":"4306:7:12","typeDescriptions":{}}},"id":3589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4306:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3590,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"4333:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4306:38:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3592,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4305:40:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":3593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4348:4:12","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"4305:47:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4283:69:12"},{"assignments":[3597],"declarations":[{"constant":false,"id":3597,"mutability":"mutable","name":"utilization","nameLocation":"4386:11:12","nodeType":"VariableDeclaration","scope":3644,"src":"4379:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3596,"name":"uint64","nodeType":"ElementaryTypeName","src":"4379:6:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":3603,"initialValue":{"arguments":[{"id":3600,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3573,"src":"4427:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3601,"name":"totalBorrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3585,"src":"4440:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3598,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"4400:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":3599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4412:14:12","memberName":"getUtilization","nodeType":"MemberAccess","referencedDeclaration":5807,"src":"4400:26:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint64_$","typeString":"function (uint256,uint256) pure returns (uint64)"}},"id":3602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4400:52:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"4379:73:12"},{"assignments":[3605],"declarations":[{"constant":false,"id":3605,"mutability":"mutable","name":"supplyRate","nameLocation":"4553:10:12","nodeType":"VariableDeclaration","scope":3644,"src":"4546:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3604,"name":"uint64","nodeType":"ElementaryTypeName","src":"4546:6:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":3614,"initialValue":{"arguments":[{"id":3608,"name":"utilization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3597,"src":"4609:11:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":3609,"name":"supplyKink","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5999,"src":"4638:10:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":3610,"name":"supplyPerSecondInterestRateSlopeLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6001,"src":"4666:35:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":3611,"name":"supplyPerSecondInterestRateSlopeHigh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6003,"src":"4719:36:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":3612,"name":"supplyPerSecondInterestRateBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6005,"src":"4773:31:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"expression":{"id":3606,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"4566:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":3607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4578:13:12","memberName":"getSupplyRate","nodeType":"MemberAccess","referencedDeclaration":5862,"src":"4566:25:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint64_$_t_uint64_$_t_uint64_$_t_uint64_$returns$_t_uint64_$","typeString":"function (uint256,uint64,uint64,uint64,uint64) pure returns (uint64)"}},"id":3613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4566:252:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"4546:272:12"},{"assignments":[3616],"declarations":[{"constant":false,"id":3616,"mutability":"mutable","name":"borrowRate","nameLocation":"4852:10:12","nodeType":"VariableDeclaration","scope":3644,"src":"4845:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3615,"name":"uint64","nodeType":"ElementaryTypeName","src":"4845:6:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":3625,"initialValue":{"arguments":[{"id":3619,"name":"utilization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3597,"src":"4908:11:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":3620,"name":"borrowKink","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6007,"src":"4937:10:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":3621,"name":"borrowPerSecondInterestRateSlopeLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6009,"src":"4965:35:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":3622,"name":"borrowPerSecondInterestRateSlopeHigh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6011,"src":"5018:36:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":3623,"name":"borrowPerSecondInterestRateBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6013,"src":"5072:31:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"expression":{"id":3617,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"4865:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":3618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4877:13:12","memberName":"getBorrowRate","nodeType":"MemberAccess","referencedDeclaration":5917,"src":"4865:25:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint64_$_t_uint64_$_t_uint64_$_t_uint64_$returns$_t_uint64_$","typeString":"function (uint256,uint64,uint64,uint64,uint64) pure returns (uint64)"}},"id":3624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4865:252:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"4845:272:12"},{"expression":{"id":3633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3626,"name":"newSupplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3562,"src":"5190:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3629,"name":"supplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6049,"src":"5234:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3630,"name":"supplyRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3605,"src":"5247:10:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":3631,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3554,"src":"5259:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3627,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"5207:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":3628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5219:14:12","memberName":"accrueInterest","nodeType":"MemberAccess","referencedDeclaration":5945,"src":"5207:26:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint64_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint64,uint256) pure returns (uint256)"}},"id":3632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5207:64:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5190:81:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3634,"nodeType":"ExpressionStatement","src":"5190:81:12"},{"expression":{"id":3642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3635,"name":"newBorrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3566,"src":"5285:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3638,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"5329:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3639,"name":"borrowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3616,"src":"5342:10:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":3640,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3554,"src":"5354:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3636,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"5302:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":3637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5314:14:12","memberName":"accrueInterest","nodeType":"MemberAccess","referencedDeclaration":5945,"src":"5302:26:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint64_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint64,uint256) pure returns (uint256)"}},"id":3641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5302:64:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5285:81:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3643,"nodeType":"ExpressionStatement","src":"5285:81:12"}]}},{"expression":{"components":[{"id":3646,"name":"newSupplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3562,"src":"5403:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3647,"name":"newBorrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3566,"src":"5419:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3648,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5402:32:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":3560,"id":3649,"nodeType":"Return","src":"5395:39:12"}]},"documentation":{"id":3552,"nodeType":"StructuredDocumentation","src":"3711:170:12","text":" @notice 计算累计利息后的索引(不修改状态)\n @param timeElapsed 经过的时间\n @return 新的 supplyIndex 和 borrowIndex"},"implemented":true,"kind":"function","modifiers":[],"name":"accruedInterestIndices","nameLocation":"3895:22:12","parameters":{"id":3555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3554,"mutability":"mutable","name":"timeElapsed","nameLocation":"3926:11:12","nodeType":"VariableDeclaration","scope":3651,"src":"3918:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3553,"name":"uint256","nodeType":"ElementaryTypeName","src":"3918:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3917:21:12"},"returnParameters":{"id":3560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3651,"src":"3962:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3556,"name":"uint256","nodeType":"ElementaryTypeName","src":"3962:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3559,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3651,"src":"3971:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3558,"name":"uint256","nodeType":"ElementaryTypeName","src":"3971:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3961:18:12"},"scope":5484,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":3681,"nodeType":"FunctionDefinition","src":"5491:323:12","nodes":[],"body":{"id":3680,"nodeType":"Block","src":"5524:290:12","nodes":[],"statements":[{"assignments":[3656],"declarations":[{"constant":false,"id":3656,"mutability":"mutable","name":"timeElapsed","nameLocation":"5542:11:12","nodeType":"VariableDeclaration","scope":3680,"src":"5534:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3655,"name":"uint256","nodeType":"ElementaryTypeName","src":"5534:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3661,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3657,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5556:5:12","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5562:9:12","memberName":"timestamp","nodeType":"MemberAccess","src":"5556:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3659,"name":"lastAccrualTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6053,"src":"5574:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5556:33:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5534:55:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3662,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3656,"src":"5603:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5618:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5603:16:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3666,"nodeType":"IfStatement","src":"5599:29:12","trueBody":{"functionReturnParameters":3654,"id":3665,"nodeType":"Return","src":"5621:7:12"}},{"expression":{"id":3673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3667,"name":"supplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6049,"src":"5692:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3668,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"5705:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3669,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5691:26:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3671,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3656,"src":"5743:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3670,"name":"accruedInterestIndices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3651,"src":"5720:22:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256) view returns (uint256,uint256)"}},"id":3672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5720:35:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"5691:64:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3674,"nodeType":"ExpressionStatement","src":"5691:64:12"},{"expression":{"id":3678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3675,"name":"lastAccrualTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6053,"src":"5774:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3676,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5792:5:12","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5798:9:12","memberName":"timestamp","nodeType":"MemberAccess","src":"5792:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5774:33:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3679,"nodeType":"ExpressionStatement","src":"5774:33:12"}]},"documentation":{"id":3652,"nodeType":"StructuredDocumentation","src":"5447:39:12","text":" @notice 计提利息"},"functionSelector":"a6afed95","implemented":true,"kind":"function","modifiers":[],"name":"accrueInterest","nameLocation":"5500:14:12","parameters":{"id":3653,"nodeType":"ParameterList","parameters":[],"src":"5514:2:12"},"returnParameters":{"id":3654,"nodeType":"ParameterList","parameters":[],"src":"5524:0:12"},"scope":5484,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":3799,"nodeType":"FunctionDefinition","src":"5870:1357:12","nodes":[],"body":{"id":3798,"nodeType":"Block","src":"5947:1280:12","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3692,"name":"accrueInterest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3681,"src":"5957:14:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5957:16:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3694,"nodeType":"ExpressionStatement","src":"5957:16:12"},{"expression":{"arguments":[{"expression":{"id":3699,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6027:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6031:6:12","memberName":"sender","nodeType":"MemberAccess","src":"6027:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":3703,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6047:4:12","typeDescriptions":{"typeIdentifier":"t_contract$_Lending_$5484","typeString":"contract Lending"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Lending_$5484","typeString":"contract Lending"}],"id":3702,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6039:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3701,"name":"address","nodeType":"ElementaryTypeName","src":"6039:7:12","typeDescriptions":{}}},"id":3704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6039:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3705,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3684,"src":"6054:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3696,"name":"baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5995,"src":"5999:9:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3695,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"5992:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":3697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5992:17:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":3698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6010:16:12","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":12746,"src":"5992:34:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$12648_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":3706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5992:69:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3707,"nodeType":"ExpressionStatement","src":"5992:69:12"},{"assignments":[3710],"declarations":[{"constant":false,"id":3710,"mutability":"mutable","name":"user","nameLocation":"6133:4:12","nodeType":"VariableDeclaration","scope":3798,"src":"6116:21:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_UserBasic_$6032_memory_ptr","typeString":"struct LendingStorage.UserBasic"},"typeName":{"id":3709,"nodeType":"UserDefinedTypeName","pathNode":{"id":3708,"name":"UserBasic","nameLocations":["6116:9:12"],"nodeType":"IdentifierPath","referencedDeclaration":6032,"src":"6116:9:12"},"referencedDeclaration":6032,"src":"6116:9:12","typeDescriptions":{"typeIdentifier":"t_struct$_UserBasic_$6032_storage_ptr","typeString":"struct LendingStorage.UserBasic"}},"visibility":"internal"}],"id":3715,"initialValue":{"baseExpression":{"id":3711,"name":"userBasic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6037,"src":"6140:9:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserBasic_$6032_storage_$","typeString":"mapping(address => struct LendingStorage.UserBasic storage ref)"}},"id":3714,"indexExpression":{"expression":{"id":3712,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6150:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6154:6:12","memberName":"sender","nodeType":"MemberAccess","src":"6150:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6140:21:12","typeDescriptions":{"typeIdentifier":"t_struct$_UserBasic_$6032_storage","typeString":"struct LendingStorage.UserBasic storage ref"}},"nodeType":"VariableDeclarationStatement","src":"6116:45:12"},{"assignments":[3717],"declarations":[{"constant":false,"id":3717,"mutability":"mutable","name":"oldPrincipal","nameLocation":"6178:12:12","nodeType":"VariableDeclaration","scope":3798,"src":"6171:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":3716,"name":"int104","nodeType":"ElementaryTypeName","src":"6171:6:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"id":3720,"initialValue":{"expression":{"id":3718,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3710,"src":"6193:4:12","typeDescriptions":{"typeIdentifier":"t_struct$_UserBasic_$6032_memory_ptr","typeString":"struct LendingStorage.UserBasic memory"}},"id":3719,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6198:9:12","memberName":"principal","nodeType":"MemberAccess","referencedDeclaration":6031,"src":"6193:14:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"VariableDeclarationStatement","src":"6171:36:12"},{"assignments":[3722],"declarations":[{"constant":false,"id":3722,"mutability":"mutable","name":"index","nameLocation":"6285:5:12","nodeType":"VariableDeclaration","scope":3798,"src":"6277:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3721,"name":"uint256","nodeType":"ElementaryTypeName","src":"6277:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3729,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_int104","typeString":"int104"},"id":3725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3723,"name":"oldPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3717,"src":"6293:12:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":3724,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6309:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6293:17:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3727,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"6327:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6293:45:12","trueExpression":{"id":3726,"name":"supplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6049,"src":"6313:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6277:61:12"},{"assignments":[3731],"declarations":[{"constant":false,"id":3731,"mutability":"mutable","name":"oldBalance","nameLocation":"6355:10:12","nodeType":"VariableDeclaration","scope":3798,"src":"6348:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3730,"name":"int256","nodeType":"ElementaryTypeName","src":"6348:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":3737,"initialValue":{"arguments":[{"id":3734,"name":"oldPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3717,"src":"6399:12:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},{"id":3735,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3722,"src":"6413:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int104","typeString":"int104"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3732,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"6368:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":3733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6380:18:12","memberName":"principalToBalance","nodeType":"MemberAccess","referencedDeclaration":5631,"src":"6368:30:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int104_$_t_uint256_$returns$_t_int256_$","typeString":"function (int104,uint256) pure returns (int256)"}},"id":3736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6368:51:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"6348:71:12"},{"assignments":[3739],"declarations":[{"constant":false,"id":3739,"mutability":"mutable","name":"newBalance","nameLocation":"6490:10:12","nodeType":"VariableDeclaration","scope":3798,"src":"6483:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3738,"name":"int256","nodeType":"ElementaryTypeName","src":"6483:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":3746,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3740,"name":"oldBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3731,"src":"6503:10:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"id":3743,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3684,"src":"6523:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3742,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6516:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":3741,"name":"int256","nodeType":"ElementaryTypeName","src":"6516:6:12","typeDescriptions":{}}},"id":3744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6516:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6503:27:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"6483:47:12"},{"assignments":[3748],"declarations":[{"constant":false,"id":3748,"mutability":"mutable","name":"newIndex","nameLocation":"6620:8:12","nodeType":"VariableDeclaration","scope":3798,"src":"6612:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3747,"name":"uint256","nodeType":"ElementaryTypeName","src":"6612:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3755,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3749,"name":"newBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3739,"src":"6631:10:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":3750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6645:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6631:15:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3753,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"6663:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6631:43:12","trueExpression":{"id":3752,"name":"supplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6049,"src":"6649:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6612:62:12"},{"assignments":[3757],"declarations":[{"constant":false,"id":3757,"mutability":"mutable","name":"newPrincipal","nameLocation":"6691:12:12","nodeType":"VariableDeclaration","scope":3798,"src":"6684:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":3756,"name":"int104","nodeType":"ElementaryTypeName","src":"6684:6:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"id":3763,"initialValue":{"arguments":[{"id":3760,"name":"newBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3739,"src":"6737:10:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":3761,"name":"newIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3748,"src":"6749:8:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3758,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"6706:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":3759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6718:18:12","memberName":"balanceToPrincipal","nodeType":"MemberAccess","referencedDeclaration":5658,"src":"6706:30:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$_t_uint256_$returns$_t_int104_$","typeString":"function (int256,uint256) pure returns (int104)"}},"id":3762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6706:52:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"VariableDeclarationStatement","src":"6684:74:12"},{"assignments":[3765,3767],"declarations":[{"constant":false,"id":3765,"mutability":"mutable","name":"repayAmount","nameLocation":"6846:11:12","nodeType":"VariableDeclaration","scope":3798,"src":"6838:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":3764,"name":"uint104","nodeType":"ElementaryTypeName","src":"6838:7:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"},{"constant":false,"id":3767,"mutability":"mutable","name":"supplyAmount","nameLocation":"6867:12:12","nodeType":"VariableDeclaration","scope":3798,"src":"6859:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":3766,"name":"uint104","nodeType":"ElementaryTypeName","src":"6859:7:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"}],"id":3773,"initialValue":{"arguments":[{"id":3770,"name":"oldPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3717,"src":"6916:12:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},{"id":3771,"name":"newPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3757,"src":"6930:12:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int104","typeString":"int104"},{"typeIdentifier":"t_int104","typeString":"int104"}],"expression":{"id":3768,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"6883:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":3769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6895:20:12","memberName":"repayAndSupplyAmount","nodeType":"MemberAccess","referencedDeclaration":5719,"src":"6883:32:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int104_$_t_int104_$returns$_t_uint104_$_t_uint104_$","typeString":"function (int104,int104) pure returns (uint104,uint104)"}},"id":3772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6883:60:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint104_$_t_uint104_$","typeString":"tuple(uint104,uint104)"}},"nodeType":"VariableDeclarationStatement","src":"6837:106:12"},{"expression":{"id":3776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3774,"name":"totalBorrowBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6047,"src":"6992:15:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":3775,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"7011:11:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"6992:30:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"id":3777,"nodeType":"ExpressionStatement","src":"6992:30:12"},{"expression":{"id":3780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3778,"name":"totalSupplyBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6045,"src":"7032:15:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3779,"name":"supplyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3767,"src":"7051:12:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"7032:31:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"id":3781,"nodeType":"ExpressionStatement","src":"7032:31:12"},{"expression":{"id":3788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":3782,"name":"userBasic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6037,"src":"7112:9:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserBasic_$6032_storage_$","typeString":"mapping(address => struct LendingStorage.UserBasic storage ref)"}},"id":3785,"indexExpression":{"expression":{"id":3783,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7122:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7126:6:12","memberName":"sender","nodeType":"MemberAccess","src":"7122:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7112:21:12","typeDescriptions":{"typeIdentifier":"t_struct$_UserBasic_$6032_storage","typeString":"struct LendingStorage.UserBasic storage ref"}},"id":3786,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7134:9:12","memberName":"principal","nodeType":"MemberAccess","referencedDeclaration":6031,"src":"7112:31:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3787,"name":"newPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3757,"src":"7146:12:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"src":"7112:46:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"id":3789,"nodeType":"ExpressionStatement","src":"7112:46:12"},{"eventCall":{"arguments":[{"expression":{"id":3791,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7189:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7193:6:12","memberName":"sender","nodeType":"MemberAccess","src":"7189:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3793,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7201:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7205:6:12","memberName":"sender","nodeType":"MemberAccess","src":"7201:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3795,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3684,"src":"7213:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3790,"name":"Supply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10,"src":"7182:6:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7182:38:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3797,"nodeType":"EmitStatement","src":"7177:43:12"}]},"baseFunctions":[103],"documentation":{"id":3682,"nodeType":"StructuredDocumentation","src":"5820:45:12","text":" @notice 存入基础资产"},"functionSelector":"35403023","implemented":true,"kind":"function","modifiers":[{"id":3688,"kind":"modifierInvocation","modifierName":{"id":3687,"name":"nonReentrant","nameLocations":["5920:12:12"],"nodeType":"IdentifierPath","referencedDeclaration":11726,"src":"5920:12:12"},"nodeType":"ModifierInvocation","src":"5920:12:12"},{"id":3690,"kind":"modifierInvocation","modifierName":{"id":3689,"name":"whenNotPaused","nameLocations":["5933:13:12"],"nodeType":"IdentifierPath","referencedDeclaration":11547,"src":"5933:13:12"},"nodeType":"ModifierInvocation","src":"5933:13:12"}],"name":"supply","nameLocation":"5879:6:12","overrides":{"id":3686,"nodeType":"OverrideSpecifier","overrides":[],"src":"5911:8:12"},"parameters":{"id":3685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3684,"mutability":"mutable","name":"amount","nameLocation":"5894:6:12","nodeType":"VariableDeclaration","scope":3799,"src":"5886:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3683,"name":"uint256","nodeType":"ElementaryTypeName","src":"5886:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5885:16:12"},"returnParameters":{"id":3691,"nodeType":"ParameterList","parameters":[],"src":"5947:0:12"},"scope":5484,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3938,"nodeType":"FunctionDefinition","src":"7462:1544:12","nodes":[],"body":{"id":3937,"nodeType":"Block","src":"7541:1465:12","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3810,"name":"accrueInterest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3681,"src":"7551:14:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7551:16:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3812,"nodeType":"ExpressionStatement","src":"7551:16:12"},{"assignments":[3815],"declarations":[{"constant":false,"id":3815,"mutability":"mutable","name":"user","nameLocation":"7639:4:12","nodeType":"VariableDeclaration","scope":3937,"src":"7622:21:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_UserBasic_$6032_memory_ptr","typeString":"struct LendingStorage.UserBasic"},"typeName":{"id":3814,"nodeType":"UserDefinedTypeName","pathNode":{"id":3813,"name":"UserBasic","nameLocations":["7622:9:12"],"nodeType":"IdentifierPath","referencedDeclaration":6032,"src":"7622:9:12"},"referencedDeclaration":6032,"src":"7622:9:12","typeDescriptions":{"typeIdentifier":"t_struct$_UserBasic_$6032_storage_ptr","typeString":"struct LendingStorage.UserBasic"}},"visibility":"internal"}],"id":3820,"initialValue":{"baseExpression":{"id":3816,"name":"userBasic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6037,"src":"7646:9:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserBasic_$6032_storage_$","typeString":"mapping(address => struct LendingStorage.UserBasic storage ref)"}},"id":3819,"indexExpression":{"expression":{"id":3817,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7656:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7660:6:12","memberName":"sender","nodeType":"MemberAccess","src":"7656:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7646:21:12","typeDescriptions":{"typeIdentifier":"t_struct$_UserBasic_$6032_storage","typeString":"struct LendingStorage.UserBasic storage ref"}},"nodeType":"VariableDeclarationStatement","src":"7622:45:12"},{"assignments":[3822],"declarations":[{"constant":false,"id":3822,"mutability":"mutable","name":"oldPrincipal","nameLocation":"7684:12:12","nodeType":"VariableDeclaration","scope":3937,"src":"7677:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":3821,"name":"int104","nodeType":"ElementaryTypeName","src":"7677:6:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"id":3825,"initialValue":{"expression":{"id":3823,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3815,"src":"7699:4:12","typeDescriptions":{"typeIdentifier":"t_struct$_UserBasic_$6032_memory_ptr","typeString":"struct LendingStorage.UserBasic memory"}},"id":3824,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7704:9:12","memberName":"principal","nodeType":"MemberAccess","referencedDeclaration":6031,"src":"7699:14:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"VariableDeclarationStatement","src":"7677:36:12"},{"assignments":[3827],"declarations":[{"constant":false,"id":3827,"mutability":"mutable","name":"index","nameLocation":"7791:5:12","nodeType":"VariableDeclaration","scope":3937,"src":"7783:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3826,"name":"uint256","nodeType":"ElementaryTypeName","src":"7783:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3834,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_int104","typeString":"int104"},"id":3830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3828,"name":"oldPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3822,"src":"7799:12:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":3829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7815:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7799:17:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3832,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"7833:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7799:45:12","trueExpression":{"id":3831,"name":"supplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6049,"src":"7819:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7783:61:12"},{"assignments":[3836],"declarations":[{"constant":false,"id":3836,"mutability":"mutable","name":"oldBalance","nameLocation":"7861:10:12","nodeType":"VariableDeclaration","scope":3937,"src":"7854:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3835,"name":"int256","nodeType":"ElementaryTypeName","src":"7854:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":3842,"initialValue":{"arguments":[{"id":3839,"name":"oldPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3822,"src":"7905:12:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},{"id":3840,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3827,"src":"7919:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int104","typeString":"int104"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3837,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"7874:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":3838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7886:18:12","memberName":"principalToBalance","nodeType":"MemberAccess","referencedDeclaration":5631,"src":"7874:30:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int104_$_t_uint256_$returns$_t_int256_$","typeString":"function (int104,uint256) pure returns (int256)"}},"id":3841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7874:51:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7854:71:12"},{"assignments":[3844],"declarations":[{"constant":false,"id":3844,"mutability":"mutable","name":"newBalance","nameLocation":"7978:10:12","nodeType":"VariableDeclaration","scope":3937,"src":"7971:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3843,"name":"int256","nodeType":"ElementaryTypeName","src":"7971:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":3851,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3845,"name":"oldBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"7991:10:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":3848,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3802,"src":"8011:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3847,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8004:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":3846,"name":"int256","nodeType":"ElementaryTypeName","src":"8004:6:12","typeDescriptions":{}}},"id":3849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8004:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7991:27:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7971:47:12"},{"assignments":[3853],"declarations":[{"constant":false,"id":3853,"mutability":"mutable","name":"newIndex","nameLocation":"8075:8:12","nodeType":"VariableDeclaration","scope":3937,"src":"8067:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3852,"name":"uint256","nodeType":"ElementaryTypeName","src":"8067:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3860,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3854,"name":"newBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3844,"src":"8086:10:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":3855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8100:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8086:15:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3858,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"8118:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8086:43:12","trueExpression":{"id":3857,"name":"supplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6049,"src":"8104:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8067:62:12"},{"assignments":[3862],"declarations":[{"constant":false,"id":3862,"mutability":"mutable","name":"newPrincipal","nameLocation":"8146:12:12","nodeType":"VariableDeclaration","scope":3937,"src":"8139:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":3861,"name":"int104","nodeType":"ElementaryTypeName","src":"8139:6:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"id":3868,"initialValue":{"arguments":[{"id":3865,"name":"newBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3844,"src":"8192:10:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":3866,"name":"newIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3853,"src":"8204:8:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3863,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"8161:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":3864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8173:18:12","memberName":"balanceToPrincipal","nodeType":"MemberAccess","referencedDeclaration":5658,"src":"8161:30:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$_t_uint256_$returns$_t_int104_$","typeString":"function (int256,uint256) pure returns (int104)"}},"id":3867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8161:52:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"VariableDeclarationStatement","src":"8139:74:12"},{"assignments":[3870,3872],"declarations":[{"constant":false,"id":3870,"mutability":"mutable","name":"withdrawAmount","nameLocation":"8280:14:12","nodeType":"VariableDeclaration","scope":3937,"src":"8272:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":3869,"name":"uint104","nodeType":"ElementaryTypeName","src":"8272:7:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"},{"constant":false,"id":3872,"mutability":"mutable","name":"borrowAmount","nameLocation":"8304:12:12","nodeType":"VariableDeclaration","scope":3937,"src":"8296:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":3871,"name":"uint104","nodeType":"ElementaryTypeName","src":"8296:7:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"}],"id":3878,"initialValue":{"arguments":[{"id":3875,"name":"oldPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3822,"src":"8356:12:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},{"id":3876,"name":"newPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3862,"src":"8370:12:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int104","typeString":"int104"},{"typeIdentifier":"t_int104","typeString":"int104"}],"expression":{"id":3873,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"8320:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":3874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8332:23:12","memberName":"withdrawAndBorrowAmount","nodeType":"MemberAccess","referencedDeclaration":5780,"src":"8320:35:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int104_$_t_int104_$returns$_t_uint104_$_t_uint104_$","typeString":"function (int104,int104) pure returns (uint104,uint104)"}},"id":3877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8320:63:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint104_$_t_uint104_$","typeString":"tuple(uint104,uint104)"}},"nodeType":"VariableDeclarationStatement","src":"8271:112:12"},{"expression":{"id":3881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3879,"name":"totalSupplyBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6045,"src":"8432:15:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":3880,"name":"withdrawAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3870,"src":"8451:14:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"8432:33:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"id":3882,"nodeType":"ExpressionStatement","src":"8432:33:12"},{"expression":{"id":3885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3883,"name":"totalBorrowBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6047,"src":"8475:15:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3884,"name":"borrowAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3872,"src":"8494:12:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"8475:31:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"id":3886,"nodeType":"ExpressionStatement","src":"8475:31:12"},{"expression":{"id":3893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":3887,"name":"userBasic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6037,"src":"8555:9:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserBasic_$6032_storage_$","typeString":"mapping(address => struct LendingStorage.UserBasic storage ref)"}},"id":3890,"indexExpression":{"expression":{"id":3888,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8565:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8569:6:12","memberName":"sender","nodeType":"MemberAccess","src":"8565:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8555:21:12","typeDescriptions":{"typeIdentifier":"t_struct$_UserBasic_$6032_storage","typeString":"struct LendingStorage.UserBasic storage ref"}},"id":3891,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8577:9:12","memberName":"principal","nodeType":"MemberAccess","referencedDeclaration":6031,"src":"8555:31:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3892,"name":"newPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3862,"src":"8589:12:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"src":"8555:46:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"id":3894,"nodeType":"ExpressionStatement","src":"8555:46:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3895,"name":"newBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3844,"src":"8687:10:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":3896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8700:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8687:14:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3919,"nodeType":"IfStatement","src":"8683:184:12","trueBody":{"id":3918,"nodeType":"Block","src":"8703:164:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"8729:11:12","subExpression":{"id":3900,"name":"newBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3844,"src":"8730:10:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":3899,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8721:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3898,"name":"uint256","nodeType":"ElementaryTypeName","src":"8721:7:12","typeDescriptions":{}}},"id":3902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8721:20:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3903,"name":"baseBorrowMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6019,"src":"8744:13:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"8721:36:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3908,"nodeType":"IfStatement","src":"8717:65:12","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3905,"name":"BorrowTooSmall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"8766:14:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8766:16:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3907,"nodeType":"RevertStatement","src":"8759:23:12"}},{"condition":{"id":3913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8800:23:12","subExpression":{"arguments":[{"expression":{"id":3910,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8812:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8816:6:12","memberName":"sender","nodeType":"MemberAccess","src":"8812:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3909,"name":"_isSolvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4842,"src":"8801:10:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":3912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8801:22:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3917,"nodeType":"IfStatement","src":"8796:60:12","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3914,"name":"InsufficientCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82,"src":"8832:22:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8832:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3916,"nodeType":"RevertStatement","src":"8825:31:12"}}]}},{"expression":{"arguments":[{"expression":{"id":3924,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8916:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8920:6:12","memberName":"sender","nodeType":"MemberAccess","src":"8916:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3926,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3802,"src":"8928:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3921,"name":"baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5995,"src":"8892:9:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3920,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"8885:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":3922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8885:17:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":3923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8903:12:12","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":12719,"src":"8885:30:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$12648_$","typeString":"function (contract IERC20,address,uint256)"}},"id":3927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8885:50:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3928,"nodeType":"ExpressionStatement","src":"8885:50:12"},{"eventCall":{"arguments":[{"expression":{"id":3930,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8968:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8972:6:12","memberName":"sender","nodeType":"MemberAccess","src":"8968:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3932,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8980:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8984:6:12","memberName":"sender","nodeType":"MemberAccess","src":"8980:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3934,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3802,"src":"8992:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3929,"name":"Withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18,"src":"8959:8:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8959:40:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3936,"nodeType":"EmitStatement","src":"8954:45:12"}]},"baseFunctions":[108],"documentation":{"id":3800,"nodeType":"StructuredDocumentation","src":"7233:224:12","text":" @notice 取出基础资产(如果余额不足会自动借款)\n @dev 如果用户余额不足,会自动借款,借款金额为 amount借款利率为 borrowRate借款期限为 borrowPeriod"},"functionSelector":"2e1a7d4d","implemented":true,"kind":"function","modifiers":[{"id":3806,"kind":"modifierInvocation","modifierName":{"id":3805,"name":"nonReentrant","nameLocations":["7514:12:12"],"nodeType":"IdentifierPath","referencedDeclaration":11726,"src":"7514:12:12"},"nodeType":"ModifierInvocation","src":"7514:12:12"},{"id":3808,"kind":"modifierInvocation","modifierName":{"id":3807,"name":"whenNotPaused","nameLocations":["7527:13:12"],"nodeType":"IdentifierPath","referencedDeclaration":11547,"src":"7527:13:12"},"nodeType":"ModifierInvocation","src":"7527:13:12"}],"name":"withdraw","nameLocation":"7471:8:12","overrides":{"id":3804,"nodeType":"OverrideSpecifier","overrides":[],"src":"7505:8:12"},"parameters":{"id":3803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3802,"mutability":"mutable","name":"amount","nameLocation":"7488:6:12","nodeType":"VariableDeclaration","scope":3938,"src":"7480:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3801,"name":"uint256","nodeType":"ElementaryTypeName","src":"7480:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7479:16:12"},"returnParameters":{"id":3809,"nodeType":"ParameterList","parameters":[],"src":"7541:0:12"},"scope":5484,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":4020,"nodeType":"FunctionDefinition","src":"9177:603:12","nodes":[],"body":{"id":4019,"nodeType":"Block","src":"9279:501:12","nodes":[],"statements":[{"assignments":[3953],"declarations":[{"constant":false,"id":3953,"mutability":"mutable","name":"config","nameLocation":"9308:6:12","nodeType":"VariableDeclaration","scope":4019,"src":"9289:25:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig"},"typeName":{"id":3952,"nodeType":"UserDefinedTypeName","pathNode":{"id":3951,"name":"AssetConfig","nameLocations":["9289:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":5502,"src":"9289:11:12"},"referencedDeclaration":5502,"src":"9289:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_storage_ptr","typeString":"struct LendingConfiguration.AssetConfig"}},"visibility":"internal"}],"id":3957,"initialValue":{"baseExpression":{"id":3954,"name":"assetConfigs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6026,"src":"9317:12:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AssetConfig_$5502_storage_$","typeString":"mapping(address => struct LendingConfiguration.AssetConfig storage ref)"}},"id":3956,"indexExpression":{"id":3955,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3941,"src":"9330:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9317:19:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_storage","typeString":"struct LendingConfiguration.AssetConfig storage ref"}},"nodeType":"VariableDeclarationStatement","src":"9289:47:12"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3958,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3953,"src":"9350:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig memory"}},"id":3959,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9357:5:12","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":5489,"src":"9350:12:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9374:1:12","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":3961,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9366:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3960,"name":"address","nodeType":"ElementaryTypeName","src":"9366:7:12","typeDescriptions":{}}},"id":3963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9366:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9350:26:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3968,"nodeType":"IfStatement","src":"9346:53:12","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3965,"name":"Unauthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"9385:12:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9385:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3967,"nodeType":"RevertStatement","src":"9378:21:12"}},{"assignments":[3970],"declarations":[{"constant":false,"id":3970,"mutability":"mutable","name":"newTotal","nameLocation":"9426:8:12","nodeType":"VariableDeclaration","scope":4019,"src":"9418:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3969,"name":"uint256","nodeType":"ElementaryTypeName","src":"9418:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3979,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":3971,"name":"userCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6043,"src":"9437:14:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":3974,"indexExpression":{"expression":{"id":3972,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9452:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9456:6:12","memberName":"sender","nodeType":"MemberAccess","src":"9452:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9437:26:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3976,"indexExpression":{"id":3975,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3941,"src":"9464:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9437:33:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3977,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3943,"src":"9473:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9437:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9418:61:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3980,"name":"newTotal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3970,"src":"9493:8:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":3981,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3953,"src":"9504:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig memory"}},"id":3982,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9511:9:12","memberName":"supplyCap","nodeType":"MemberAccess","referencedDeclaration":5501,"src":"9504:16:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"9493:27:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3987,"nodeType":"IfStatement","src":"9489:59:12","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3984,"name":"SupplyCapExceeded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"9529:17:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9529:19:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3986,"nodeType":"RevertStatement","src":"9522:26:12"}},{"expression":{"arguments":[{"expression":{"id":3992,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9598:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9602:6:12","memberName":"sender","nodeType":"MemberAccess","src":"9598:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":3996,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9618:4:12","typeDescriptions":{"typeIdentifier":"t_contract$_Lending_$5484","typeString":"contract Lending"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Lending_$5484","typeString":"contract Lending"}],"id":3995,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9610:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3994,"name":"address","nodeType":"ElementaryTypeName","src":"9610:7:12","typeDescriptions":{}}},"id":3997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9610:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3998,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3943,"src":"9625:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3989,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3941,"src":"9574:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3988,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"9567:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":3990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9567:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":3991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9581:16:12","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":12746,"src":"9567:30:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$12648_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":3999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9567:65:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4000,"nodeType":"ExpressionStatement","src":"9567:65:12"},{"expression":{"id":4008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":4001,"name":"userCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6043,"src":"9651:14:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":4005,"indexExpression":{"expression":{"id":4002,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9666:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9670:6:12","memberName":"sender","nodeType":"MemberAccess","src":"9666:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9651:26:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4006,"indexExpression":{"id":4004,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3941,"src":"9678:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9651:33:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4007,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3943,"src":"9688:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9651:43:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4009,"nodeType":"ExpressionStatement","src":"9651:43:12"},{"eventCall":{"arguments":[{"expression":{"id":4011,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9735:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9739:6:12","memberName":"sender","nodeType":"MemberAccess","src":"9735:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4013,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9747:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9751:6:12","memberName":"sender","nodeType":"MemberAccess","src":"9747:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4015,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3941,"src":"9759:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4016,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3943,"src":"9766:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4010,"name":"SupplyCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28,"src":"9718:16:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":4017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9718:55:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4018,"nodeType":"EmitStatement","src":"9713:60:12"}]},"baseFunctions":[115],"documentation":{"id":3939,"nodeType":"StructuredDocumentation","src":"9012:160:12","text":" @notice 存入抵押品\n @dev 由于不涉及债务计算,存入抵押品反而会让账户更安全,所以不用更新利息因子"},"functionSelector":"d2a8607b","implemented":true,"kind":"function","modifiers":[{"id":3947,"kind":"modifierInvocation","modifierName":{"id":3946,"name":"nonReentrant","nameLocations":["9252:12:12"],"nodeType":"IdentifierPath","referencedDeclaration":11726,"src":"9252:12:12"},"nodeType":"ModifierInvocation","src":"9252:12:12"},{"id":3949,"kind":"modifierInvocation","modifierName":{"id":3948,"name":"whenNotPaused","nameLocations":["9265:13:12"],"nodeType":"IdentifierPath","referencedDeclaration":11547,"src":"9265:13:12"},"nodeType":"ModifierInvocation","src":"9265:13:12"}],"name":"supplyCollateral","nameLocation":"9186:16:12","overrides":{"id":3945,"nodeType":"OverrideSpecifier","overrides":[],"src":"9243:8:12"},"parameters":{"id":3944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3941,"mutability":"mutable","name":"asset","nameLocation":"9211:5:12","nodeType":"VariableDeclaration","scope":4020,"src":"9203:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3940,"name":"address","nodeType":"ElementaryTypeName","src":"9203:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3943,"mutability":"mutable","name":"amount","nameLocation":"9226:6:12","nodeType":"VariableDeclaration","scope":4020,"src":"9218:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3942,"name":"uint256","nodeType":"ElementaryTypeName","src":"9218:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9202:31:12"},"returnParameters":{"id":3950,"nodeType":"ParameterList","parameters":[],"src":"9279:0:12"},"scope":5484,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":4098,"nodeType":"FunctionDefinition","src":"9833:691:12","nodes":[],"body":{"id":4097,"nodeType":"Block","src":"9937:587:12","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4033,"name":"accrueInterest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3681,"src":"9947:14:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":4034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9947:16:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4035,"nodeType":"ExpressionStatement","src":"9947:16:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":4036,"name":"userCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6043,"src":"9986:14:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":4039,"indexExpression":{"expression":{"id":4037,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10001:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10005:6:12","memberName":"sender","nodeType":"MemberAccess","src":"10001:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9986:26:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4041,"indexExpression":{"id":4040,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4023,"src":"10013:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9986:33:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4042,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4025,"src":"10022:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9986:42:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4047,"nodeType":"IfStatement","src":"9982:76:12","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4044,"name":"InsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80,"src":"10037:19:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10037:21:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4046,"nodeType":"RevertStatement","src":"10030:28:12"}},{"expression":{"id":4055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":4048,"name":"userCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6043,"src":"10077:14:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":4052,"indexExpression":{"expression":{"id":4049,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10092:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10096:6:12","memberName":"sender","nodeType":"MemberAccess","src":"10092:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10077:26:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4053,"indexExpression":{"id":4051,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4023,"src":"10104:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10077:33:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4054,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4025,"src":"10114:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10077:43:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4056,"nodeType":"ExpressionStatement","src":"10077:43:12"},{"assignments":[4058],"declarations":[{"constant":false,"id":4058,"mutability":"mutable","name":"principal","nameLocation":"10215:9:12","nodeType":"VariableDeclaration","scope":4097,"src":"10208:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":4057,"name":"int104","nodeType":"ElementaryTypeName","src":"10208:6:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"id":4064,"initialValue":{"expression":{"baseExpression":{"id":4059,"name":"userBasic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6037,"src":"10227:9:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserBasic_$6032_storage_$","typeString":"mapping(address => struct LendingStorage.UserBasic storage ref)"}},"id":4062,"indexExpression":{"expression":{"id":4060,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10237:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10241:6:12","memberName":"sender","nodeType":"MemberAccess","src":"10237:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10227:21:12","typeDescriptions":{"typeIdentifier":"t_struct$_UserBasic_$6032_storage","typeString":"struct LendingStorage.UserBasic storage ref"}},"id":4063,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10249:9:12","memberName":"principal","nodeType":"MemberAccess","referencedDeclaration":6031,"src":"10227:31:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"VariableDeclarationStatement","src":"10208:50:12"},{"condition":{"commonType":{"typeIdentifier":"t_int104","typeString":"int104"},"id":4067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4065,"name":"principal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4058,"src":"10272:9:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":4066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10284:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10272:13:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4078,"nodeType":"IfStatement","src":"10268:104:12","trueBody":{"id":4077,"nodeType":"Block","src":"10287:85:12","statements":[{"condition":{"id":4072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10305:23:12","subExpression":{"arguments":[{"expression":{"id":4069,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10317:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10321:6:12","memberName":"sender","nodeType":"MemberAccess","src":"10317:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4068,"name":"_isSolvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4842,"src":"10306:10:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":4071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10306:22:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4076,"nodeType":"IfStatement","src":"10301:60:12","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4073,"name":"InsufficientCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82,"src":"10337:22:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10337:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4075,"nodeType":"RevertStatement","src":"10330:31:12"}}]}},{"expression":{"arguments":[{"expression":{"id":4083,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10417:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10421:6:12","memberName":"sender","nodeType":"MemberAccess","src":"10417:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4085,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4025,"src":"10429:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4080,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4023,"src":"10397:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4079,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"10390:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":4081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10390:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":4082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10404:12:12","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":12719,"src":"10390:26:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$12648_$","typeString":"function (contract IERC20,address,uint256)"}},"id":4086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10390:46:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4087,"nodeType":"ExpressionStatement","src":"10390:46:12"},{"eventCall":{"arguments":[{"expression":{"id":4089,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10479:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10483:6:12","memberName":"sender","nodeType":"MemberAccess","src":"10479:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4091,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10491:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10495:6:12","memberName":"sender","nodeType":"MemberAccess","src":"10491:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4093,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4023,"src":"10503:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4094,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4025,"src":"10510:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4088,"name":"WithdrawCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38,"src":"10460:18:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":4095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10460:57:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4096,"nodeType":"EmitStatement","src":"10455:62:12"}]},"baseFunctions":[122],"documentation":{"id":4021,"nodeType":"StructuredDocumentation","src":"9786:42:12","text":" @notice 取出抵押品"},"functionSelector":"350c35e9","implemented":true,"kind":"function","modifiers":[{"id":4029,"kind":"modifierInvocation","modifierName":{"id":4028,"name":"nonReentrant","nameLocations":["9910:12:12"],"nodeType":"IdentifierPath","referencedDeclaration":11726,"src":"9910:12:12"},"nodeType":"ModifierInvocation","src":"9910:12:12"},{"id":4031,"kind":"modifierInvocation","modifierName":{"id":4030,"name":"whenNotPaused","nameLocations":["9923:13:12"],"nodeType":"IdentifierPath","referencedDeclaration":11547,"src":"9923:13:12"},"nodeType":"ModifierInvocation","src":"9923:13:12"}],"name":"withdrawCollateral","nameLocation":"9842:18:12","overrides":{"id":4027,"nodeType":"OverrideSpecifier","overrides":[],"src":"9901:8:12"},"parameters":{"id":4026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4023,"mutability":"mutable","name":"asset","nameLocation":"9869:5:12","nodeType":"VariableDeclaration","scope":4098,"src":"9861:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4022,"name":"address","nodeType":"ElementaryTypeName","src":"9861:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4025,"mutability":"mutable","name":"amount","nameLocation":"9884:6:12","nodeType":"VariableDeclaration","scope":4098,"src":"9876:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4024,"name":"uint256","nodeType":"ElementaryTypeName","src":"9876:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9860:31:12"},"returnParameters":{"id":4032,"nodeType":"ParameterList","parameters":[],"src":"9937:0:12"},"scope":5484,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":4236,"nodeType":"FunctionDefinition","src":"10745:1673:12","nodes":[],"body":{"id":4235,"nodeType":"Block","src":"10822:1596:12","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4109,"name":"accrueInterest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3681,"src":"10832:14:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":4110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10832:16:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4111,"nodeType":"ExpressionStatement","src":"10832:16:12"},{"assignments":[4114],"declarations":[{"constant":false,"id":4114,"mutability":"mutable","name":"user","nameLocation":"10920:4:12","nodeType":"VariableDeclaration","scope":4235,"src":"10903:21:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_UserBasic_$6032_memory_ptr","typeString":"struct LendingStorage.UserBasic"},"typeName":{"id":4113,"nodeType":"UserDefinedTypeName","pathNode":{"id":4112,"name":"UserBasic","nameLocations":["10903:9:12"],"nodeType":"IdentifierPath","referencedDeclaration":6032,"src":"10903:9:12"},"referencedDeclaration":6032,"src":"10903:9:12","typeDescriptions":{"typeIdentifier":"t_struct$_UserBasic_$6032_storage_ptr","typeString":"struct LendingStorage.UserBasic"}},"visibility":"internal"}],"id":4119,"initialValue":{"baseExpression":{"id":4115,"name":"userBasic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6037,"src":"10927:9:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserBasic_$6032_storage_$","typeString":"mapping(address => struct LendingStorage.UserBasic storage ref)"}},"id":4118,"indexExpression":{"expression":{"id":4116,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10937:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10941:6:12","memberName":"sender","nodeType":"MemberAccess","src":"10937:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10927:21:12","typeDescriptions":{"typeIdentifier":"t_struct$_UserBasic_$6032_storage","typeString":"struct LendingStorage.UserBasic storage ref"}},"nodeType":"VariableDeclarationStatement","src":"10903:45:12"},{"assignments":[4121],"declarations":[{"constant":false,"id":4121,"mutability":"mutable","name":"oldPrincipal","nameLocation":"10965:12:12","nodeType":"VariableDeclaration","scope":4235,"src":"10958:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":4120,"name":"int104","nodeType":"ElementaryTypeName","src":"10958:6:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"id":4124,"initialValue":{"expression":{"id":4122,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4114,"src":"10980:4:12","typeDescriptions":{"typeIdentifier":"t_struct$_UserBasic_$6032_memory_ptr","typeString":"struct LendingStorage.UserBasic memory"}},"id":4123,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10985:9:12","memberName":"principal","nodeType":"MemberAccess","referencedDeclaration":6031,"src":"10980:14:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"VariableDeclarationStatement","src":"10958:36:12"},{"assignments":[4126],"declarations":[{"constant":false,"id":4126,"mutability":"mutable","name":"index","nameLocation":"11072:5:12","nodeType":"VariableDeclaration","scope":4235,"src":"11064:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4125,"name":"uint256","nodeType":"ElementaryTypeName","src":"11064:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4133,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_int104","typeString":"int104"},"id":4129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4127,"name":"oldPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"11080:12:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":4128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11096:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11080:17:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":4131,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"11114:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11080:45:12","trueExpression":{"id":4130,"name":"supplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6049,"src":"11100:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11064:61:12"},{"assignments":[4135],"declarations":[{"constant":false,"id":4135,"mutability":"mutable","name":"oldBalance","nameLocation":"11142:10:12","nodeType":"VariableDeclaration","scope":4235,"src":"11135:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4134,"name":"int256","nodeType":"ElementaryTypeName","src":"11135:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4141,"initialValue":{"arguments":[{"id":4138,"name":"oldPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"11186:12:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},{"id":4139,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4126,"src":"11200:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int104","typeString":"int104"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4136,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"11155:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":4137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11167:18:12","memberName":"principalToBalance","nodeType":"MemberAccess","referencedDeclaration":5631,"src":"11155:30:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int104_$_t_uint256_$returns$_t_int256_$","typeString":"function (int104,uint256) pure returns (int256)"}},"id":4140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11155:51:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"11135:71:12"},{"assignments":[4143],"declarations":[{"constant":false,"id":4143,"mutability":"mutable","name":"newBalance","nameLocation":"11280:10:12","nodeType":"VariableDeclaration","scope":4235,"src":"11273:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4142,"name":"int256","nodeType":"ElementaryTypeName","src":"11273:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4150,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4144,"name":"oldBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4135,"src":"11293:10:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":4147,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4101,"src":"11313:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4146,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11306:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":4145,"name":"int256","nodeType":"ElementaryTypeName","src":"11306:6:12","typeDescriptions":{}}},"id":4148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11306:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11293:27:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"11273:47:12"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4151,"name":"newBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4143,"src":"11376:10:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":4152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11389:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11376:14:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"11402:11:12","subExpression":{"id":4156,"name":"newBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4143,"src":"11403:10:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4155,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11394:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4154,"name":"uint256","nodeType":"ElementaryTypeName","src":"11394:7:12","typeDescriptions":{}}},"id":4158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11394:20:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4159,"name":"baseBorrowMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6019,"src":"11417:13:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"11394:36:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11376:54:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4165,"nodeType":"IfStatement","src":"11372:83:12","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4162,"name":"BorrowTooSmall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"11439:14:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11439:16:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4164,"nodeType":"RevertStatement","src":"11432:23:12"}},{"assignments":[4167],"declarations":[{"constant":false,"id":4167,"mutability":"mutable","name":"newIndex","nameLocation":"11554:8:12","nodeType":"VariableDeclaration","scope":4235,"src":"11546:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4166,"name":"uint256","nodeType":"ElementaryTypeName","src":"11546:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4174,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4168,"name":"newBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4143,"src":"11565:10:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":4169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11579:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11565:15:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":4172,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"11597:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11565:43:12","trueExpression":{"id":4171,"name":"supplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6049,"src":"11583:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11546:62:12"},{"assignments":[4176],"declarations":[{"constant":false,"id":4176,"mutability":"mutable","name":"newPrincipal","nameLocation":"11625:12:12","nodeType":"VariableDeclaration","scope":4235,"src":"11618:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":4175,"name":"int104","nodeType":"ElementaryTypeName","src":"11618:6:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"id":4182,"initialValue":{"arguments":[{"id":4179,"name":"newBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4143,"src":"11671:10:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":4180,"name":"newIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4167,"src":"11683:8:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4177,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"11640:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":4178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11652:18:12","memberName":"balanceToPrincipal","nodeType":"MemberAccess","referencedDeclaration":5658,"src":"11640:30:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$_t_uint256_$returns$_t_int104_$","typeString":"function (int256,uint256) pure returns (int104)"}},"id":4181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11640:52:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"VariableDeclarationStatement","src":"11618:74:12"},{"assignments":[4184,4186],"declarations":[{"constant":false,"id":4184,"mutability":"mutable","name":"withdrawAmount","nameLocation":"11759:14:12","nodeType":"VariableDeclaration","scope":4235,"src":"11751:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":4183,"name":"uint104","nodeType":"ElementaryTypeName","src":"11751:7:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"},{"constant":false,"id":4186,"mutability":"mutable","name":"borrowAmount","nameLocation":"11783:12:12","nodeType":"VariableDeclaration","scope":4235,"src":"11775:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":4185,"name":"uint104","nodeType":"ElementaryTypeName","src":"11775:7:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"}],"id":4192,"initialValue":{"arguments":[{"id":4189,"name":"oldPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4121,"src":"11835:12:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},{"id":4190,"name":"newPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4176,"src":"11849:12:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int104","typeString":"int104"},{"typeIdentifier":"t_int104","typeString":"int104"}],"expression":{"id":4187,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"11799:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":4188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11811:23:12","memberName":"withdrawAndBorrowAmount","nodeType":"MemberAccess","referencedDeclaration":5780,"src":"11799:35:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int104_$_t_int104_$returns$_t_uint104_$_t_uint104_$","typeString":"function (int104,int104) pure returns (uint104,uint104)"}},"id":4191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11799:63:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint104_$_t_uint104_$","typeString":"tuple(uint104,uint104)"}},"nodeType":"VariableDeclarationStatement","src":"11750:112:12"},{"expression":{"id":4195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4193,"name":"totalSupplyBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6045,"src":"11911:15:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4194,"name":"withdrawAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4184,"src":"11930:14:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"11911:33:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"id":4196,"nodeType":"ExpressionStatement","src":"11911:33:12"},{"expression":{"id":4199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4197,"name":"totalBorrowBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6047,"src":"11954:15:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4198,"name":"borrowAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4186,"src":"11973:12:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"11954:31:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"id":4200,"nodeType":"ExpressionStatement","src":"11954:31:12"},{"expression":{"id":4207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":4201,"name":"userBasic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6037,"src":"12112:9:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserBasic_$6032_storage_$","typeString":"mapping(address => struct LendingStorage.UserBasic storage ref)"}},"id":4204,"indexExpression":{"expression":{"id":4202,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12122:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12126:6:12","memberName":"sender","nodeType":"MemberAccess","src":"12122:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12112:21:12","typeDescriptions":{"typeIdentifier":"t_struct$_UserBasic_$6032_storage","typeString":"struct LendingStorage.UserBasic storage ref"}},"id":4205,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12134:9:12","memberName":"principal","nodeType":"MemberAccess","referencedDeclaration":6031,"src":"12112:31:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4206,"name":"newPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4176,"src":"12146:12:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"src":"12112:46:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"id":4208,"nodeType":"ExpressionStatement","src":"12112:46:12"},{"condition":{"id":4213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"12222:23:12","subExpression":{"arguments":[{"expression":{"id":4210,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12234:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12238:6:12","memberName":"sender","nodeType":"MemberAccess","src":"12234:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4209,"name":"_isSolvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4842,"src":"12223:10:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":4212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12223:22:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4217,"nodeType":"IfStatement","src":"12218:60:12","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4214,"name":"InsufficientCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82,"src":"12254:22:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12254:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4216,"nodeType":"RevertStatement","src":"12247:31:12"}},{"expression":{"arguments":[{"expression":{"id":4222,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12328:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12332:6:12","memberName":"sender","nodeType":"MemberAccess","src":"12328:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4224,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4101,"src":"12340:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4219,"name":"baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5995,"src":"12304:9:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4218,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"12297:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":4220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12297:17:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":4221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12315:12:12","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":12719,"src":"12297:30:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$12648_$","typeString":"function (contract IERC20,address,uint256)"}},"id":4225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12297:50:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4226,"nodeType":"ExpressionStatement","src":"12297:50:12"},{"eventCall":{"arguments":[{"expression":{"id":4228,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12380:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12384:6:12","memberName":"sender","nodeType":"MemberAccess","src":"12380:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4230,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12392:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12396:6:12","memberName":"sender","nodeType":"MemberAccess","src":"12392:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4232,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4101,"src":"12404:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4227,"name":"Withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18,"src":"12371:8:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12371:40:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4234,"nodeType":"EmitStatement","src":"12366:45:12"}]},"baseFunctions":[127],"documentation":{"id":4099,"nodeType":"StructuredDocumentation","src":"10530:210:12","text":" @notice 借款\n @dev baseBorrowMin 是用户借款的最小金额,如果用户借款后,余额小于 baseBorrowMin由正数变为负数同理则抛出 BorrowTooSmall 错误"},"functionSelector":"c5ebeaec","implemented":true,"kind":"function","modifiers":[{"id":4105,"kind":"modifierInvocation","modifierName":{"id":4104,"name":"nonReentrant","nameLocations":["10795:12:12"],"nodeType":"IdentifierPath","referencedDeclaration":11726,"src":"10795:12:12"},"nodeType":"ModifierInvocation","src":"10795:12:12"},{"id":4107,"kind":"modifierInvocation","modifierName":{"id":4106,"name":"whenNotPaused","nameLocations":["10808:13:12"],"nodeType":"IdentifierPath","referencedDeclaration":11547,"src":"10808:13:12"},"nodeType":"ModifierInvocation","src":"10808:13:12"}],"name":"borrow","nameLocation":"10754:6:12","overrides":{"id":4103,"nodeType":"OverrideSpecifier","overrides":[],"src":"10786:8:12"},"parameters":{"id":4102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4101,"mutability":"mutable","name":"amount","nameLocation":"10769:6:12","nodeType":"VariableDeclaration","scope":4236,"src":"10761:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4100,"name":"uint256","nodeType":"ElementaryTypeName","src":"10761:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10760:16:12"},"returnParameters":{"id":4108,"nodeType":"ParameterList","parameters":[],"src":"10822:0:12"},"scope":5484,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":4501,"nodeType":"FunctionDefinition","src":"12819:3706:12","nodes":[],"body":{"id":4500,"nodeType":"Block","src":"12889:3636:12","nodes":[],"statements":[{"condition":{"id":4247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"12903:25:12","subExpression":{"arguments":[{"id":4245,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4241,"src":"12919:8:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4244,"name":"isLiquidatable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5173,"src":"12904:14:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":4246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12904:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4251,"nodeType":"IfStatement","src":"12899:55:12","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4248,"name":"NotLiquidatable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86,"src":"12937:15:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12937:17:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4250,"nodeType":"RevertStatement","src":"12930:24:12"}},{"assignments":[4254],"declarations":[{"constant":false,"id":4254,"mutability":"mutable","name":"user","nameLocation":"13026:4:12","nodeType":"VariableDeclaration","scope":4500,"src":"13009:21:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_UserBasic_$6032_memory_ptr","typeString":"struct LendingStorage.UserBasic"},"typeName":{"id":4253,"nodeType":"UserDefinedTypeName","pathNode":{"id":4252,"name":"UserBasic","nameLocations":["13009:9:12"],"nodeType":"IdentifierPath","referencedDeclaration":6032,"src":"13009:9:12"},"referencedDeclaration":6032,"src":"13009:9:12","typeDescriptions":{"typeIdentifier":"t_struct$_UserBasic_$6032_storage_ptr","typeString":"struct LendingStorage.UserBasic"}},"visibility":"internal"}],"id":4258,"initialValue":{"baseExpression":{"id":4255,"name":"userBasic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6037,"src":"13033:9:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserBasic_$6032_storage_$","typeString":"mapping(address => struct LendingStorage.UserBasic storage ref)"}},"id":4257,"indexExpression":{"id":4256,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4241,"src":"13043:8:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13033:19:12","typeDescriptions":{"typeIdentifier":"t_struct$_UserBasic_$6032_storage","typeString":"struct LendingStorage.UserBasic storage ref"}},"nodeType":"VariableDeclarationStatement","src":"13009:43:12"},{"assignments":[4260],"declarations":[{"constant":false,"id":4260,"mutability":"mutable","name":"oldPrincipal","nameLocation":"13069:12:12","nodeType":"VariableDeclaration","scope":4500,"src":"13062:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":4259,"name":"int104","nodeType":"ElementaryTypeName","src":"13062:6:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"id":4263,"initialValue":{"expression":{"id":4261,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4254,"src":"13084:4:12","typeDescriptions":{"typeIdentifier":"t_struct$_UserBasic_$6032_memory_ptr","typeString":"struct LendingStorage.UserBasic memory"}},"id":4262,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13089:9:12","memberName":"principal","nodeType":"MemberAccess","referencedDeclaration":6031,"src":"13084:14:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"VariableDeclarationStatement","src":"13062:36:12"},{"assignments":[4265],"declarations":[{"constant":false,"id":4265,"mutability":"mutable","name":"oldBalance","nameLocation":"13190:10:12","nodeType":"VariableDeclaration","scope":4500,"src":"13183:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4264,"name":"int256","nodeType":"ElementaryTypeName","src":"13183:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4271,"initialValue":{"arguments":[{"id":4268,"name":"oldPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4260,"src":"13234:12:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},{"id":4269,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"13248:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int104","typeString":"int104"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4266,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"13203:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":4267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13215:18:12","memberName":"principalToBalance","nodeType":"MemberAccess","referencedDeclaration":5631,"src":"13203:30:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int104_$_t_uint256_$returns$_t_int256_$","typeString":"function (int104,uint256) pure returns (int256)"}},"id":4270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13203:57:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"13183:77:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4272,"name":"oldBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4265,"src":"13274:10:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":4273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13288:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13274:15:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4278,"nodeType":"IfStatement","src":"13270:45:12","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4275,"name":"NotLiquidatable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86,"src":"13298:15:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13298:17:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4277,"nodeType":"RevertStatement","src":"13291:24:12"}},{"assignments":[4280],"declarations":[{"constant":false,"id":4280,"mutability":"mutable","name":"basePrice","nameLocation":"13421:9:12","nodeType":"VariableDeclaration","scope":4500,"src":"13413:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4279,"name":"uint256","nodeType":"ElementaryTypeName","src":"13413:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4286,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":4282,"name":"baseTokenPriceFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5997,"src":"13444:18:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4281,"name":"IPriceFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"13433:10:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPriceFeed_$246_$","typeString":"type(contract IPriceFeed)"}},"id":4283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13433:30:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceFeed_$246","typeString":"contract IPriceFeed"}},"id":4284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13464:8:12","memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":240,"src":"13433:39:12","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":4285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13433:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13413:61:12"},{"assignments":[4288],"declarations":[{"constant":false,"id":4288,"mutability":"mutable","name":"totalCollateralValue","nameLocation":"13492:20:12","nodeType":"VariableDeclaration","scope":4500,"src":"13484:28:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4287,"name":"uint256","nodeType":"ElementaryTypeName","src":"13484:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4290,"initialValue":{"hexValue":"30","id":4289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13515:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13484:32:12"},{"body":{"id":4389,"nodeType":"Block","src":"13579:1163:12","statements":[{"assignments":[4303],"declarations":[{"constant":false,"id":4303,"mutability":"mutable","name":"asset","nameLocation":"13601:5:12","nodeType":"VariableDeclaration","scope":4389,"src":"13593:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4302,"name":"address","nodeType":"ElementaryTypeName","src":"13593:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4307,"initialValue":{"baseExpression":{"id":4304,"name":"assetList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6029,"src":"13609:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":4306,"indexExpression":{"id":4305,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4292,"src":"13619:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13609:12:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"13593:28:12"},{"assignments":[4309],"declarations":[{"constant":false,"id":4309,"mutability":"mutable","name":"collateralAmount","nameLocation":"13643:16:12","nodeType":"VariableDeclaration","scope":4389,"src":"13635:24:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4308,"name":"uint256","nodeType":"ElementaryTypeName","src":"13635:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4315,"initialValue":{"baseExpression":{"baseExpression":{"id":4310,"name":"userCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6043,"src":"13662:14:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":4312,"indexExpression":{"id":4311,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4241,"src":"13677:8:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13662:24:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4314,"indexExpression":{"id":4313,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4303,"src":"13687:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13662:31:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13635:58:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4316,"name":"collateralAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4309,"src":"13724:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13743:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13724:20:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4388,"nodeType":"IfStatement","src":"13720:1012:12","trueBody":{"id":4387,"nodeType":"Block","src":"13746:986:12","statements":[{"assignments":[4321],"declarations":[{"constant":false,"id":4321,"mutability":"mutable","name":"assetConfig","nameLocation":"13783:11:12","nodeType":"VariableDeclaration","scope":4387,"src":"13764:30:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig"},"typeName":{"id":4320,"nodeType":"UserDefinedTypeName","pathNode":{"id":4319,"name":"AssetConfig","nameLocations":["13764:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":5502,"src":"13764:11:12"},"referencedDeclaration":5502,"src":"13764:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_storage_ptr","typeString":"struct LendingConfiguration.AssetConfig"}},"visibility":"internal"}],"id":4325,"initialValue":{"baseExpression":{"id":4322,"name":"assetConfigs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6026,"src":"13797:12:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AssetConfig_$5502_storage_$","typeString":"mapping(address => struct LendingConfiguration.AssetConfig storage ref)"}},"id":4324,"indexExpression":{"id":4323,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4303,"src":"13810:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13797:19:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_storage","typeString":"struct LendingConfiguration.AssetConfig storage ref"}},"nodeType":"VariableDeclarationStatement","src":"13764:52:12"},{"assignments":[4327],"declarations":[{"constant":false,"id":4327,"mutability":"mutable","name":"assetPrice","nameLocation":"13842:10:12","nodeType":"VariableDeclaration","scope":4387,"src":"13834:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4326,"name":"uint256","nodeType":"ElementaryTypeName","src":"13834:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4334,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"expression":{"id":4329,"name":"assetConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4321,"src":"13866:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig memory"}},"id":4330,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13878:9:12","memberName":"priceFeed","nodeType":"MemberAccess","referencedDeclaration":5491,"src":"13866:21:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4328,"name":"IPriceFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"13855:10:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPriceFeed_$246_$","typeString":"type(contract IPriceFeed)"}},"id":4331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13855:33:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceFeed_$246","typeString":"contract IPriceFeed"}},"id":4332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13889:8:12","memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":240,"src":"13855:42:12","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":4333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13855:44:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13834:65:12"},{"assignments":[4336],"declarations":[{"constant":false,"id":4336,"mutability":"mutable","name":"assetScale","nameLocation":"14005:10:12","nodeType":"VariableDeclaration","scope":4387,"src":"13997:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4335,"name":"uint256","nodeType":"ElementaryTypeName","src":"13997:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4341,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14018:2:12","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"expression":{"id":4338,"name":"assetConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4321,"src":"14024:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig memory"}},"id":4339,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14036:8:12","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":5493,"src":"14024:20:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14018:26:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13997:47:12"},{"assignments":[4343],"declarations":[{"constant":false,"id":4343,"mutability":"mutable","name":"collateralValueUSD","nameLocation":"14070:18:12","nodeType":"VariableDeclaration","scope":4387,"src":"14062:26:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4342,"name":"uint256","nodeType":"ElementaryTypeName","src":"14062:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4350,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4344,"name":"collateralAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4309,"src":"14092:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4345,"name":"assetPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4327,"src":"14111:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14092:29:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4347,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14091:31:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4348,"name":"assetScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4336,"src":"14125:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14091:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14062:73:12"},{"assignments":[4352],"declarations":[{"constant":false,"id":4352,"mutability":"mutable","name":"discountedValue","nameLocation":"14229:15:12","nodeType":"VariableDeclaration","scope":4387,"src":"14221:23:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4351,"name":"uint256","nodeType":"ElementaryTypeName","src":"14221:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4360,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4353,"name":"collateralValueUSD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4343,"src":"14248:18:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":4354,"name":"assetConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4321,"src":"14269:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig memory"}},"id":4355,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14281:17:12","memberName":"liquidationFactor","nodeType":"MemberAccess","referencedDeclaration":5499,"src":"14269:29:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"14248:50:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4357,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14247:52:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":4358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14302:4:12","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"14247:59:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14221:85:12"},{"expression":{"id":4363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4361,"name":"totalCollateralValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4288,"src":"14324:20:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4362,"name":"discountedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4352,"src":"14348:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14324:39:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4364,"nodeType":"ExpressionStatement","src":"14324:39:12"},{"expression":{"id":4371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":4365,"name":"userCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6043,"src":"14451:14:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":4368,"indexExpression":{"id":4366,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4241,"src":"14466:8:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14451:24:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4369,"indexExpression":{"id":4367,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4303,"src":"14476:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14451:31:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":4370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14485:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14451:35:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4372,"nodeType":"ExpressionStatement","src":"14451:35:12"},{"expression":{"id":4377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4373,"name":"collateralReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6057,"src":"14504:18:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4375,"indexExpression":{"id":4374,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4303,"src":"14523:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14504:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4376,"name":"collateralAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4309,"src":"14533:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14504:45:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4378,"nodeType":"ExpressionStatement","src":"14504:45:12"},{"eventCall":{"arguments":[{"id":4380,"name":"absorber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4239,"src":"14653:8:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4381,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4241,"src":"14663:8:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4382,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4303,"src":"14673:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4383,"name":"collateralAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4309,"src":"14680:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4384,"name":"collateralValueUSD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4343,"src":"14698:18:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4379,"name":"AbsorbCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60,"src":"14636:16:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":4385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14636:81:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4386,"nodeType":"EmitStatement","src":"14631:86:12"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4295,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4292,"src":"13552:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":4296,"name":"assetList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6029,"src":"13556:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":4297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13566:6:12","memberName":"length","nodeType":"MemberAccess","src":"13556:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13552:20:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4390,"initializationExpression":{"assignments":[4292],"declarations":[{"constant":false,"id":4292,"mutability":"mutable","name":"i","nameLocation":"13545:1:12","nodeType":"VariableDeclaration","scope":4390,"src":"13540:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4291,"name":"uint","nodeType":"ElementaryTypeName","src":"13540:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4294,"initialValue":{"hexValue":"30","id":4293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13549:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13540:10:12"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":4300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13574:3:12","subExpression":{"id":4299,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4292,"src":"13574:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4301,"nodeType":"ExpressionStatement","src":"13574:3:12"},"nodeType":"ForStatement","src":"13535:1207:12"},{"assignments":[4392],"declarations":[{"constant":false,"id":4392,"mutability":"mutable","name":"baseScale","nameLocation":"14824:9:12","nodeType":"VariableDeclaration","scope":4500,"src":"14816:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4391,"name":"uint256","nodeType":"ElementaryTypeName","src":"14816:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4400,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14836:2:12","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":4395,"name":"baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5995,"src":"14857:9:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4394,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12674,"src":"14842:14:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$12674_$","typeString":"type(contract IERC20Metadata)"}},"id":4396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14842:25:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$12674","typeString":"contract IERC20Metadata"}},"id":4397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14868:8:12","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"14842:34:12","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":4398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14842:36:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14836:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14816:62:12"},{"assignments":[4402],"declarations":[{"constant":false,"id":4402,"mutability":"mutable","name":"collateralInBase","nameLocation":"14896:16:12","nodeType":"VariableDeclaration","scope":4500,"src":"14888:24:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4401,"name":"uint256","nodeType":"ElementaryTypeName","src":"14888:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4409,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4403,"name":"totalCollateralValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4288,"src":"14916:20:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4404,"name":"baseScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4392,"src":"14939:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14916:32:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4406,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14915:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4407,"name":"basePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4280,"src":"14952:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14915:46:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14888:73:12"},{"assignments":[4411],"declarations":[{"constant":false,"id":4411,"mutability":"mutable","name":"newBalance","nameLocation":"15056:10:12","nodeType":"VariableDeclaration","scope":4500,"src":"15049:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4410,"name":"int256","nodeType":"ElementaryTypeName","src":"15049:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4418,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4412,"name":"oldBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4265,"src":"15069:10:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"id":4415,"name":"collateralInBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4402,"src":"15089:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15082:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":4413,"name":"int256","nodeType":"ElementaryTypeName","src":"15082:6:12","typeDescriptions":{}}},"id":4416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15082:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"15069:37:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"15049:57:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4419,"name":"newBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4411,"src":"15207:10:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":4420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15220:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15207:14:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4427,"nodeType":"IfStatement","src":"15203:59:12","trueBody":{"id":4426,"nodeType":"Block","src":"15223:39:12","statements":[{"expression":{"id":4424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4422,"name":"newBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4411,"src":"15237:10:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":4423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15250:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15237:14:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":4425,"nodeType":"ExpressionStatement","src":"15237:14:12"}]}},{"assignments":[4429],"declarations":[{"constant":false,"id":4429,"mutability":"mutable","name":"newPrincipal","nameLocation":"15317:12:12","nodeType":"VariableDeclaration","scope":4500,"src":"15310:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":4428,"name":"int104","nodeType":"ElementaryTypeName","src":"15310:6:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"id":4435,"initialValue":{"arguments":[{"id":4432,"name":"newBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4411,"src":"15363:10:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":4433,"name":"supplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6049,"src":"15375:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4430,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"15332:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":4431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15344:18:12","memberName":"balanceToPrincipal","nodeType":"MemberAccess","referencedDeclaration":5658,"src":"15332:30:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$_t_uint256_$returns$_t_int104_$","typeString":"function (int256,uint256) pure returns (int104)"}},"id":4434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15332:55:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"VariableDeclarationStatement","src":"15310:77:12"},{"expression":{"id":4441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":4436,"name":"userBasic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6037,"src":"15436:9:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserBasic_$6032_storage_$","typeString":"mapping(address => struct LendingStorage.UserBasic storage ref)"}},"id":4438,"indexExpression":{"id":4437,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4241,"src":"15446:8:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15436:19:12","typeDescriptions":{"typeIdentifier":"t_struct$_UserBasic_$6032_storage","typeString":"struct LendingStorage.UserBasic storage ref"}},"id":4439,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15456:9:12","memberName":"principal","nodeType":"MemberAccess","referencedDeclaration":6031,"src":"15436:29:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4440,"name":"newPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4429,"src":"15468:12:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"src":"15436:44:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"id":4442,"nodeType":"ExpressionStatement","src":"15436:44:12"},{"assignments":[4444,4446],"declarations":[{"constant":false,"id":4444,"mutability":"mutable","name":"repayAmount","nameLocation":"15547:11:12","nodeType":"VariableDeclaration","scope":4500,"src":"15539:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":4443,"name":"uint104","nodeType":"ElementaryTypeName","src":"15539:7:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"},{"constant":false,"id":4446,"mutability":"mutable","name":"supplyAmount","nameLocation":"15568:12:12","nodeType":"VariableDeclaration","scope":4500,"src":"15560:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":4445,"name":"uint104","nodeType":"ElementaryTypeName","src":"15560:7:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"}],"id":4452,"initialValue":{"arguments":[{"id":4449,"name":"oldPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4260,"src":"15617:12:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},{"id":4450,"name":"newPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4429,"src":"15631:12:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int104","typeString":"int104"},{"typeIdentifier":"t_int104","typeString":"int104"}],"expression":{"id":4447,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"15584:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":4448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15596:20:12","memberName":"repayAndSupplyAmount","nodeType":"MemberAccess","referencedDeclaration":5719,"src":"15584:32:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int104_$_t_int104_$returns$_t_uint104_$_t_uint104_$","typeString":"function (int104,int104) pure returns (uint104,uint104)"}},"id":4451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15584:60:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint104_$_t_uint104_$","typeString":"tuple(uint104,uint104)"}},"nodeType":"VariableDeclarationStatement","src":"15538:106:12"},{"expression":{"id":4455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4453,"name":"totalSupplyBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6045,"src":"15778:15:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4454,"name":"supplyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4446,"src":"15797:12:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"15778:31:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"id":4456,"nodeType":"ExpressionStatement","src":"15778:31:12"},{"expression":{"id":4459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4457,"name":"totalBorrowBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6047,"src":"15819:15:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4458,"name":"repayAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4444,"src":"15838:11:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"15819:30:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"id":4460,"nodeType":"ExpressionStatement","src":"15819:30:12"},{"assignments":[4462],"declarations":[{"constant":false,"id":4462,"mutability":"mutable","name":"basePaidOut","nameLocation":"15999:11:12","nodeType":"VariableDeclaration","scope":4500,"src":"15991:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4461,"name":"uint256","nodeType":"ElementaryTypeName","src":"15991:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4464,"initialValue":{"hexValue":"30","id":4463,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16013:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15991:23:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4467,"name":"collateralInBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4402,"src":"16035:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4466,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16028:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":4465,"name":"int256","nodeType":"ElementaryTypeName","src":"16028:6:12","typeDescriptions":{}}},"id":4468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16028:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"16055:11:12","subExpression":{"id":4469,"name":"oldBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4265,"src":"16056:10:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16028:38:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4483,"nodeType":"IfStatement","src":"16024:201:12","trueBody":{"id":4482,"nodeType":"Block","src":"16068:157:12","statements":[{"expression":{"id":4480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4472,"name":"basePaidOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4462,"src":"16161:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"16183:11:12","subExpression":{"id":4475,"name":"oldBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4265,"src":"16184:10:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16175:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4473,"name":"uint256","nodeType":"ElementaryTypeName","src":"16175:7:12","typeDescriptions":{}}},"id":4477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16175:20:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4478,"name":"collateralInBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4402,"src":"16198:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16175:39:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16161:53:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4481,"nodeType":"ExpressionStatement","src":"16161:53:12"}]}},{"assignments":[4485],"declarations":[{"constant":false,"id":4485,"mutability":"mutable","name":"valueOfBasePaidOut","nameLocation":"16337:18:12","nodeType":"VariableDeclaration","scope":4500,"src":"16329:26:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4484,"name":"uint256","nodeType":"ElementaryTypeName","src":"16329:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4492,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4486,"name":"basePaidOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4462,"src":"16359:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4487,"name":"basePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4280,"src":"16373:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16359:23:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4489,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16358:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4490,"name":"baseScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4392,"src":"16386:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16358:37:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16329:66:12"},{"eventCall":{"arguments":[{"id":4494,"name":"absorber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4239,"src":"16466:8:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4495,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4241,"src":"16476:8:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4496,"name":"basePaidOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4462,"src":"16486:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4497,"name":"valueOfBasePaidOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4485,"src":"16499:18:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4493,"name":"AbsorbDebt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48,"src":"16455:10:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":4498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16455:63:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4499,"nodeType":"EmitStatement","src":"16450:68:12"}]},"documentation":{"id":4237,"nodeType":"StructuredDocumentation","src":"12424:390:12","text":" @notice 清算不良债务(内部实现)\n @dev 当用户抵押品由于乘以liquidateCollateralFactor后小于债务价值时会进行清算清算后如果实际抵押品价值乘以liquidateCollateralFactor大于债务价值则将差额部分作为用户本金本金以baseToken显示否则将差额部分作为坏账由协议承担"},"implemented":true,"kind":"function","modifiers":[],"name":"_absorbInternal","nameLocation":"12828:15:12","parameters":{"id":4242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4239,"mutability":"mutable","name":"absorber","nameLocation":"12852:8:12","nodeType":"VariableDeclaration","scope":4501,"src":"12844:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4238,"name":"address","nodeType":"ElementaryTypeName","src":"12844:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4241,"mutability":"mutable","name":"borrower","nameLocation":"12870:8:12","nodeType":"VariableDeclaration","scope":4501,"src":"12862:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4240,"name":"address","nodeType":"ElementaryTypeName","src":"12862:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12843:36:12"},"returnParameters":{"id":4243,"nodeType":"ParameterList","parameters":[],"src":"12889:0:12"},"scope":5484,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":4522,"nodeType":"FunctionDefinition","src":"16597:159:12","nodes":[],"body":{"id":4521,"nodeType":"Block","src":"16676:80:12","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4512,"name":"accrueInterest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3681,"src":"16686:14:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":4513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16686:16:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4514,"nodeType":"ExpressionStatement","src":"16686:16:12"},{"expression":{"arguments":[{"expression":{"id":4516,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"16728:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16732:6:12","memberName":"sender","nodeType":"MemberAccess","src":"16728:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4518,"name":"borrower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4504,"src":"16740:8:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4515,"name":"_absorbInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4501,"src":"16712:15:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":4519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16712:37:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4520,"nodeType":"ExpressionStatement","src":"16712:37:12"}]},"baseFunctions":[132],"documentation":{"id":4502,"nodeType":"StructuredDocumentation","src":"16535:57:12","text":" @notice 清算不良债务(单个)"},"functionSelector":"ba1b2447","implemented":true,"kind":"function","modifiers":[{"id":4508,"kind":"modifierInvocation","modifierName":{"id":4507,"name":"nonReentrant","nameLocations":["16649:12:12"],"nodeType":"IdentifierPath","referencedDeclaration":11726,"src":"16649:12:12"},"nodeType":"ModifierInvocation","src":"16649:12:12"},{"id":4510,"kind":"modifierInvocation","modifierName":{"id":4509,"name":"whenNotPaused","nameLocations":["16662:13:12"],"nodeType":"IdentifierPath","referencedDeclaration":11547,"src":"16662:13:12"},"nodeType":"ModifierInvocation","src":"16662:13:12"}],"name":"absorb","nameLocation":"16606:6:12","overrides":{"id":4506,"nodeType":"OverrideSpecifier","overrides":[],"src":"16640:8:12"},"parameters":{"id":4505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4504,"mutability":"mutable","name":"borrower","nameLocation":"16621:8:12","nodeType":"VariableDeclaration","scope":4522,"src":"16613:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4503,"name":"address","nodeType":"ElementaryTypeName","src":"16613:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16612:18:12"},"returnParameters":{"id":4511,"nodeType":"ParameterList","parameters":[],"src":"16676:0:12"},"scope":5484,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":4561,"nodeType":"FunctionDefinition","src":"16822:292:12","nodes":[],"body":{"id":4560,"nodeType":"Block","src":"16938:176:12","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4536,"name":"accrueInterest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3681,"src":"16948:14:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":4537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16948:16:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4538,"nodeType":"ExpressionStatement","src":"16948:16:12"},{"body":{"id":4558,"nodeType":"Block","src":"17014:94:12","statements":[{"expression":{"arguments":[{"id":4548,"name":"absorber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4525,"src":"17044:8:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":4549,"name":"accounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4528,"src":"17054:8:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":4551,"indexExpression":{"id":4550,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4540,"src":"17063:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17054:11:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4547,"name":"_absorbInternal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4501,"src":"17028:15:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":4552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17028:38:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4553,"nodeType":"ExpressionStatement","src":"17028:38:12"},{"id":4557,"nodeType":"UncheckedBlock","src":"17080:18:12","statements":[{"expression":{"id":4555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17092:3:12","subExpression":{"id":4554,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4540,"src":"17092:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4556,"nodeType":"ExpressionStatement","src":"17092:3:12"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4543,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4540,"src":"16991:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":4544,"name":"accounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4528,"src":"16995:8:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":4545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17004:6:12","memberName":"length","nodeType":"MemberAccess","src":"16995:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16991:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4559,"initializationExpression":{"assignments":[4540],"declarations":[{"constant":false,"id":4540,"mutability":"mutable","name":"i","nameLocation":"16984:1:12","nodeType":"VariableDeclaration","scope":4559,"src":"16979:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4539,"name":"uint","nodeType":"ElementaryTypeName","src":"16979:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4542,"initialValue":{"hexValue":"30","id":4541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16988:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"16979:10:12"},"isSimpleCounterLoop":false,"nodeType":"ForStatement","src":"16974:134:12"}]},"baseFunctions":[140],"documentation":{"id":4523,"nodeType":"StructuredDocumentation","src":"16766:51:12","text":" @notice 批量清算不良债务"},"functionSelector":"74485e78","implemented":true,"kind":"function","modifiers":[{"id":4532,"kind":"modifierInvocation","modifierName":{"id":4531,"name":"nonReentrant","nameLocations":["16911:12:12"],"nodeType":"IdentifierPath","referencedDeclaration":11726,"src":"16911:12:12"},"nodeType":"ModifierInvocation","src":"16911:12:12"},{"id":4534,"kind":"modifierInvocation","modifierName":{"id":4533,"name":"whenNotPaused","nameLocations":["16924:13:12"],"nodeType":"IdentifierPath","referencedDeclaration":11547,"src":"16924:13:12"},"nodeType":"ModifierInvocation","src":"16924:13:12"}],"name":"absorbMultiple","nameLocation":"16831:14:12","overrides":{"id":4530,"nodeType":"OverrideSpecifier","overrides":[],"src":"16902:8:12"},"parameters":{"id":4529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4525,"mutability":"mutable","name":"absorber","nameLocation":"16854:8:12","nodeType":"VariableDeclaration","scope":4561,"src":"16846:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4524,"name":"address","nodeType":"ElementaryTypeName","src":"16846:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4528,"mutability":"mutable","name":"accounts","nameLocation":"16883:8:12","nodeType":"VariableDeclaration","scope":4561,"src":"16864:27:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4526,"name":"address","nodeType":"ElementaryTypeName","src":"16864:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4527,"nodeType":"ArrayTypeName","src":"16864:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"16845:47:12"},"returnParameters":{"id":4535,"nodeType":"ParameterList","parameters":[],"src":"16938:0:12"},"scope":5484,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":4666,"nodeType":"FunctionDefinition","src":"17179:1389:12","nodes":[],"body":{"id":4665,"nodeType":"Block","src":"17358:1210:12","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":4578,"name":"collateralReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6057,"src":"17372:18:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4580,"indexExpression":{"id":4579,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4564,"src":"17391:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17372:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17401:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17372:30:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4586,"nodeType":"IfStatement","src":"17368:64:12","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4583,"name":"InsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80,"src":"17411:19:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17411:21:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4585,"nodeType":"RevertStatement","src":"17404:28:12"}},{"assignments":[4588],"declarations":[{"constant":false,"id":4588,"mutability":"mutable","name":"currentReserves","nameLocation":"17533:15:12","nodeType":"VariableDeclaration","scope":4665,"src":"17526:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4587,"name":"int256","nodeType":"ElementaryTypeName","src":"17526:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4591,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":4589,"name":"getReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5291,"src":"17551:11:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_int256_$","typeString":"function () view returns (int256)"}},"id":4590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17551:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"17526:38:12"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4592,"name":"currentReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4588,"src":"17578:15:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":4593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17597:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17578:20:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4597,"name":"currentReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4588,"src":"17610:15:12","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":"17602:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4595,"name":"uint256","nodeType":"ElementaryTypeName","src":"17602:7:12","typeDescriptions":{}}},"id":4598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17602:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4599,"name":"targetReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6021,"src":"17630:14:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"17602:42:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17578:66:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4606,"nodeType":"IfStatement","src":"17574:150:12","trueBody":{"id":4605,"nodeType":"Block","src":"17646:78:12","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4602,"name":"NotForSale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":98,"src":"17667:10:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17667:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4604,"nodeType":"RevertStatement","src":"17660:19:12"}]}},{"assignments":[4608],"declarations":[{"constant":false,"id":4608,"mutability":"mutable","name":"collateralAmount","nameLocation":"17795:16:12","nodeType":"VariableDeclaration","scope":4665,"src":"17787:24:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4607,"name":"uint256","nodeType":"ElementaryTypeName","src":"17787:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4613,"initialValue":{"arguments":[{"id":4610,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4564,"src":"17830:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4611,"name":"baseAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4568,"src":"17837:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4609,"name":"quoteCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4766,"src":"17814:15:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view returns (uint256)"}},"id":4612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17814:34:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17787:61:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4614,"name":"collateralAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4608,"src":"17895:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4615,"name":"minAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4566,"src":"17914:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17895:28:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4620,"nodeType":"IfStatement","src":"17891:62:12","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4617,"name":"InsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80,"src":"17932:19:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17932:21:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4619,"nodeType":"RevertStatement","src":"17925:28:12"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4621,"name":"collateralAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4608,"src":"17967:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"id":4622,"name":"collateralReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6057,"src":"17986:18:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4624,"indexExpression":{"id":4623,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4564,"src":"18005:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17986:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17967:44:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4629,"nodeType":"IfStatement","src":"17963:78:12","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4626,"name":"InsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80,"src":"18020:19:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18020:21:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4628,"nodeType":"RevertStatement","src":"18013:28:12"}},{"expression":{"arguments":[{"expression":{"id":4634,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"18137:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18141:6:12","memberName":"sender","nodeType":"MemberAccess","src":"18137:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":4638,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"18157:4:12","typeDescriptions":{"typeIdentifier":"t_contract$_Lending_$5484","typeString":"contract Lending"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Lending_$5484","typeString":"contract Lending"}],"id":4637,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18149:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4636,"name":"address","nodeType":"ElementaryTypeName","src":"18149:7:12","typeDescriptions":{}}},"id":4639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18149:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4640,"name":"baseAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4568,"src":"18164:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4631,"name":"baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5995,"src":"18109:9:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4630,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"18102:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":4632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18102:17:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":4633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18120:16:12","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":12746,"src":"18102:34:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$12648_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":4641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18102:73:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4642,"nodeType":"ExpressionStatement","src":"18102:73:12"},{"expression":{"id":4647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4643,"name":"collateralReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6057,"src":"18221:18:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4645,"indexExpression":{"id":4644,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4564,"src":"18240:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18221:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4646,"name":"collateralAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4608,"src":"18250:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18221:45:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4648,"nodeType":"ExpressionStatement","src":"18221:45:12"},{"expression":{"arguments":[{"id":4653,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4570,"src":"18357:9:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4654,"name":"collateralAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4608,"src":"18368:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4650,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4564,"src":"18337:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4649,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"18330:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":4651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18330:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":4652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18344:12:12","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":12719,"src":"18330:26:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$12648_$","typeString":"function (contract IERC20,address,uint256)"}},"id":4655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18330:55:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4656,"nodeType":"ExpressionStatement","src":"18330:55:12"},{"eventCall":{"arguments":[{"expression":{"id":4658,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"18513:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18517:6:12","memberName":"sender","nodeType":"MemberAccess","src":"18513:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4660,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4564,"src":"18525:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4661,"name":"baseAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4568,"src":"18532:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4662,"name":"collateralAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4608,"src":"18544:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4657,"name":"BuyCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70,"src":"18499:13:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":4663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18499:62:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4664,"nodeType":"EmitStatement","src":"18494:67:12"}]},"baseFunctions":[151],"documentation":{"id":4562,"nodeType":"StructuredDocumentation","src":"17120:54:12","text":" @notice 购买清算后的抵押品"},"functionSelector":"e4e6e779","implemented":true,"kind":"function","modifiers":[{"id":4574,"kind":"modifierInvocation","modifierName":{"id":4573,"name":"nonReentrant","nameLocations":["17331:12:12"],"nodeType":"IdentifierPath","referencedDeclaration":11726,"src":"17331:12:12"},"nodeType":"ModifierInvocation","src":"17331:12:12"},{"id":4576,"kind":"modifierInvocation","modifierName":{"id":4575,"name":"whenNotPaused","nameLocations":["17344:13:12"],"nodeType":"IdentifierPath","referencedDeclaration":11547,"src":"17344:13:12"},"nodeType":"ModifierInvocation","src":"17344:13:12"}],"name":"buyCollateral","nameLocation":"17188:13:12","overrides":{"id":4572,"nodeType":"OverrideSpecifier","overrides":[],"src":"17322:8:12"},"parameters":{"id":4571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4564,"mutability":"mutable","name":"asset","nameLocation":"17219:5:12","nodeType":"VariableDeclaration","scope":4666,"src":"17211:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4563,"name":"address","nodeType":"ElementaryTypeName","src":"17211:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4566,"mutability":"mutable","name":"minAmount","nameLocation":"17242:9:12","nodeType":"VariableDeclaration","scope":4666,"src":"17234:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4565,"name":"uint256","nodeType":"ElementaryTypeName","src":"17234:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4568,"mutability":"mutable","name":"baseAmount","nameLocation":"17269:10:12","nodeType":"VariableDeclaration","scope":4666,"src":"17261:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4567,"name":"uint256","nodeType":"ElementaryTypeName","src":"17261:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4570,"mutability":"mutable","name":"recipient","nameLocation":"17297:9:12","nodeType":"VariableDeclaration","scope":4666,"src":"17289:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4569,"name":"address","nodeType":"ElementaryTypeName","src":"17289:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17201:111:12"},"returnParameters":{"id":4577,"nodeType":"ParameterList","parameters":[],"src":"17358:0:12"},"scope":5484,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":4766,"nodeType":"FunctionDefinition","src":"18665:1383:12","nodes":[],"body":{"id":4765,"nodeType":"Block","src":"18764:1284:12","nodes":[],"statements":[{"assignments":[4679],"declarations":[{"constant":false,"id":4679,"mutability":"mutable","name":"assetConfig","nameLocation":"18793:11:12","nodeType":"VariableDeclaration","scope":4765,"src":"18774:30:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig"},"typeName":{"id":4678,"nodeType":"UserDefinedTypeName","pathNode":{"id":4677,"name":"AssetConfig","nameLocations":["18774:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":5502,"src":"18774:11:12"},"referencedDeclaration":5502,"src":"18774:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_storage_ptr","typeString":"struct LendingConfiguration.AssetConfig"}},"visibility":"internal"}],"id":4683,"initialValue":{"baseExpression":{"id":4680,"name":"assetConfigs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6026,"src":"18807:12:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AssetConfig_$5502_storage_$","typeString":"mapping(address => struct LendingConfiguration.AssetConfig storage ref)"}},"id":4682,"indexExpression":{"id":4681,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4669,"src":"18820:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18807:19:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_storage","typeString":"struct LendingConfiguration.AssetConfig storage ref"}},"nodeType":"VariableDeclarationStatement","src":"18774:52:12"},{"assignments":[4685],"declarations":[{"constant":false,"id":4685,"mutability":"mutable","name":"assetPrice","nameLocation":"18853:10:12","nodeType":"VariableDeclaration","scope":4765,"src":"18845:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4684,"name":"uint256","nodeType":"ElementaryTypeName","src":"18845:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4692,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"expression":{"id":4687,"name":"assetConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4679,"src":"18877:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig memory"}},"id":4688,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18889:9:12","memberName":"priceFeed","nodeType":"MemberAccess","referencedDeclaration":5491,"src":"18877:21:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4686,"name":"IPriceFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"18866:10:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPriceFeed_$246_$","typeString":"type(contract IPriceFeed)"}},"id":4689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18866:33:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceFeed_$246","typeString":"contract IPriceFeed"}},"id":4690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18900:8:12","memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":240,"src":"18866:42:12","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":4691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18866:44:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18845:65:12"},{"assignments":[4694],"declarations":[{"constant":false,"id":4694,"mutability":"mutable","name":"basePrice","nameLocation":"18928:9:12","nodeType":"VariableDeclaration","scope":4765,"src":"18920:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4693,"name":"uint256","nodeType":"ElementaryTypeName","src":"18920:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4700,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":4696,"name":"baseTokenPriceFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5997,"src":"18951:18:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4695,"name":"IPriceFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"18940:10:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPriceFeed_$246_$","typeString":"type(contract IPriceFeed)"}},"id":4697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18940:30:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceFeed_$246","typeString":"contract IPriceFeed"}},"id":4698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18971:8:12","memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":240,"src":"18940:39:12","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":4699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18940:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18920:61:12"},{"assignments":[4702],"declarations":[{"constant":false,"id":4702,"mutability":"mutable","name":"FACTOR_SCALE","nameLocation":"19137:12:12","nodeType":"VariableDeclaration","scope":4765,"src":"19129:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4701,"name":"uint256","nodeType":"ElementaryTypeName","src":"19129:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4704,"initialValue":{"hexValue":"31653138","id":4703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19152:4:12","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"nodeType":"VariableDeclarationStatement","src":"19129:27:12"},{"assignments":[4706],"declarations":[{"constant":false,"id":4706,"mutability":"mutable","name":"discountFactor","nameLocation":"19174:14:12","nodeType":"VariableDeclaration","scope":4765,"src":"19166:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4705,"name":"uint256","nodeType":"ElementaryTypeName","src":"19166:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4717,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4707,"name":"storeFrontPriceFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6015,"src":"19192:21:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4708,"name":"FACTOR_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4702,"src":"19217:12:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":4709,"name":"assetConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4679,"src":"19232:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig memory"}},"id":4710,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19244:17:12","memberName":"liquidationFactor","nodeType":"MemberAccess","referencedDeclaration":5499,"src":"19232:29:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"19217:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4712,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19216:46:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19192:70:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4714,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19191:72:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4715,"name":"FACTOR_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4702,"src":"19266:12:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19191:87:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19166:112:12"},{"assignments":[4719],"declarations":[{"constant":false,"id":4719,"mutability":"mutable","name":"assetPriceDiscounted","nameLocation":"19441:20:12","nodeType":"VariableDeclaration","scope":4765,"src":"19433:28:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4718,"name":"uint256","nodeType":"ElementaryTypeName","src":"19433:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4729,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4720,"name":"assetPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4685,"src":"19465:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4721,"name":"FACTOR_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4702,"src":"19479:12:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4722,"name":"discountFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4706,"src":"19494:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19479:29:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19478:31:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19465:44:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4726,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19464:46:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4727,"name":"FACTOR_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4702,"src":"19513:12:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19464:61:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19433:92:12"},{"assignments":[4731],"declarations":[{"constant":false,"id":4731,"mutability":"mutable","name":"baseScale","nameLocation":"19692:9:12","nodeType":"VariableDeclaration","scope":4765,"src":"19684:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4730,"name":"uint256","nodeType":"ElementaryTypeName","src":"19684:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4742,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19704:2:12","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":4736,"name":"baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5995,"src":"19733:9:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4735,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12674,"src":"19718:14:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$12674_$","typeString":"type(contract IERC20Metadata)"}},"id":4737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19718:25:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$12674","typeString":"contract IERC20Metadata"}},"id":4738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19744:8:12","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"19718:34:12","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":4739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19718:36:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":4734,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19710:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4733,"name":"uint256","nodeType":"ElementaryTypeName","src":"19710:7:12","typeDescriptions":{}}},"id":4740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19710:45:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19704:51:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19684:71:12"},{"assignments":[4744],"declarations":[{"constant":false,"id":4744,"mutability":"mutable","name":"assetScale","nameLocation":"19773:10:12","nodeType":"VariableDeclaration","scope":4765,"src":"19765:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4743,"name":"uint256","nodeType":"ElementaryTypeName","src":"19765:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4752,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19786:2:12","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[{"expression":{"id":4748,"name":"assetConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4679,"src":"19800:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig memory"}},"id":4749,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19812:8:12","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":5493,"src":"19800:20:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":4747,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19792:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4746,"name":"uint256","nodeType":"ElementaryTypeName","src":"19792:7:12","typeDescriptions":{}}},"id":4750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19792:29:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19786:35:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19765:56:12"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4753,"name":"basePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4694,"src":"19968:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4754,"name":"baseAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4671,"src":"19980:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19968:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4756,"name":"assetScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4744,"src":"19993:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19968:35:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4758,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19967:37:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4759,"name":"assetPriceDiscounted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4719,"src":"20008:20:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4760,"name":"baseScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4731,"src":"20031:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20008:32:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4762,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20007:34:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19967:74:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4676,"id":4764,"nodeType":"Return","src":"19960:81:12"}]},"baseFunctions":[207],"documentation":{"id":4667,"nodeType":"StructuredDocumentation","src":"18578:82:12","text":" @notice 计算支付指定baseAmount可购买的抵押品数量"},"functionSelector":"7ac88ed1","implemented":true,"kind":"function","modifiers":[],"name":"quoteCollateral","nameLocation":"18674:15:12","overrides":{"id":4673,"nodeType":"OverrideSpecifier","overrides":[],"src":"18737:8:12"},"parameters":{"id":4672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4669,"mutability":"mutable","name":"asset","nameLocation":"18698:5:12","nodeType":"VariableDeclaration","scope":4766,"src":"18690:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4668,"name":"address","nodeType":"ElementaryTypeName","src":"18690:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4671,"mutability":"mutable","name":"baseAmount","nameLocation":"18713:10:12","nodeType":"VariableDeclaration","scope":4766,"src":"18705:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4670,"name":"uint256","nodeType":"ElementaryTypeName","src":"18705:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18689:35:12"},"returnParameters":{"id":4676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4675,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4766,"src":"18755:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4674,"name":"uint256","nodeType":"ElementaryTypeName","src":"18755:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18754:9:12"},"scope":5484,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":4842,"nodeType":"FunctionDefinition","src":"20110:938:12","nodes":[],"body":{"id":4841,"nodeType":"Block","src":"20176:872:12","nodes":[],"statements":[{"assignments":[4775],"declarations":[{"constant":false,"id":4775,"mutability":"mutable","name":"principal","nameLocation":"20193:9:12","nodeType":"VariableDeclaration","scope":4841,"src":"20186:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":4774,"name":"int104","nodeType":"ElementaryTypeName","src":"20186:6:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"id":4780,"initialValue":{"expression":{"baseExpression":{"id":4776,"name":"userBasic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6037,"src":"20205:9:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserBasic_$6032_storage_$","typeString":"mapping(address => struct LendingStorage.UserBasic storage ref)"}},"id":4778,"indexExpression":{"id":4777,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4769,"src":"20215:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20205:18:12","typeDescriptions":{"typeIdentifier":"t_struct$_UserBasic_$6032_storage","typeString":"struct LendingStorage.UserBasic storage ref"}},"id":4779,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20224:9:12","memberName":"principal","nodeType":"MemberAccess","referencedDeclaration":6031,"src":"20205:28:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"VariableDeclarationStatement","src":"20186:47:12"},{"condition":{"commonType":{"typeIdentifier":"t_int104","typeString":"int104"},"id":4783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4781,"name":"principal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4775,"src":"20247:9:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":4782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20260:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20247:14:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4786,"nodeType":"IfStatement","src":"20243:31:12","trueBody":{"expression":{"hexValue":"74727565","id":4784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20270:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4773,"id":4785,"nodeType":"Return","src":"20263:11:12"}},{"assignments":[4788],"declarations":[{"constant":false,"id":4788,"mutability":"mutable","name":"balance","nameLocation":"20365:7:12","nodeType":"VariableDeclaration","scope":4841,"src":"20358:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4787,"name":"int256","nodeType":"ElementaryTypeName","src":"20358:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4794,"initialValue":{"arguments":[{"id":4791,"name":"principal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4775,"src":"20406:9:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},{"id":4792,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"20417:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int104","typeString":"int104"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4789,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"20375:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":4790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20387:18:12","memberName":"principalToBalance","nodeType":"MemberAccess","referencedDeclaration":5631,"src":"20375:30:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int104_$_t_uint256_$returns$_t_int256_$","typeString":"function (int104,uint256) pure returns (int256)"}},"id":4793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20375:54:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"20358:71:12"},{"assignments":[4796],"declarations":[{"constant":false,"id":4796,"mutability":"mutable","name":"debt","nameLocation":"20447:4:12","nodeType":"VariableDeclaration","scope":4841,"src":"20439:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4795,"name":"uint256","nodeType":"ElementaryTypeName","src":"20439:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4802,"initialValue":{"arguments":[{"id":4800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"20462:8:12","subExpression":{"id":4799,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4788,"src":"20463:7:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4798,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20454:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4797,"name":"uint256","nodeType":"ElementaryTypeName","src":"20454:7:12","typeDescriptions":{}}},"id":4801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20454:17:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20439:32:12"},{"assignments":[4804],"declarations":[{"constant":false,"id":4804,"mutability":"mutable","name":"basePrice","nameLocation":"20569:9:12","nodeType":"VariableDeclaration","scope":4841,"src":"20561:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4803,"name":"uint256","nodeType":"ElementaryTypeName","src":"20561:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4810,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":4806,"name":"baseTokenPriceFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5997,"src":"20592:18:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4805,"name":"IPriceFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"20581:10:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPriceFeed_$246_$","typeString":"type(contract IPriceFeed)"}},"id":4807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20581:30:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceFeed_$246","typeString":"contract IPriceFeed"}},"id":4808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20612:8:12","memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":240,"src":"20581:39:12","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":4809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20581:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20561:61:12"},{"assignments":[4812],"declarations":[{"constant":false,"id":4812,"mutability":"mutable","name":"baseDecimals","nameLocation":"20640:12:12","nodeType":"VariableDeclaration","scope":4841,"src":"20632:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4811,"name":"uint256","nodeType":"ElementaryTypeName","src":"20632:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4818,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":4814,"name":"baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5995,"src":"20670:9:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4813,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12674,"src":"20655:14:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$12674_$","typeString":"type(contract IERC20Metadata)"}},"id":4815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20655:25:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$12674","typeString":"contract IERC20Metadata"}},"id":4816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20681:8:12","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"20655:34:12","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":4817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20655:36:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"20632:59:12"},{"assignments":[4820],"declarations":[{"constant":false,"id":4820,"mutability":"mutable","name":"debtValue","nameLocation":"20709:9:12","nodeType":"VariableDeclaration","scope":4841,"src":"20701:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4819,"name":"uint256","nodeType":"ElementaryTypeName","src":"20701:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4830,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4821,"name":"debt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4796,"src":"20722:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4822,"name":"basePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4804,"src":"20729:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20722:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4824,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20721:18:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20743:2:12","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":4826,"name":"baseDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4812,"src":"20749:12:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20743:18:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4828,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20742:20:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20721:41:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20701:61:12"},{"assignments":[4832],"declarations":[{"constant":false,"id":4832,"mutability":"mutable","name":"borrowCapacity","nameLocation":"20894:14:12","nodeType":"VariableDeclaration","scope":4841,"src":"20886:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4831,"name":"uint256","nodeType":"ElementaryTypeName","src":"20886:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4836,"initialValue":{"arguments":[{"id":4834,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4769,"src":"20931:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4833,"name":"_getCollateralValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4925,"src":"20911:19:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":4835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20911:28:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20886:53:12"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4837,"name":"borrowCapacity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4832,"src":"21014:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4838,"name":"debtValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4820,"src":"21032:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21014:27:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4773,"id":4840,"nodeType":"Return","src":"21007:34:12"}]},"documentation":{"id":4767,"nodeType":"StructuredDocumentation","src":"20054:51:12","text":" @notice 检查账户偿付能力"},"implemented":true,"kind":"function","modifiers":[],"name":"_isSolvent","nameLocation":"20119:10:12","parameters":{"id":4770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4769,"mutability":"mutable","name":"account","nameLocation":"20138:7:12","nodeType":"VariableDeclaration","scope":4842,"src":"20130:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4768,"name":"address","nodeType":"ElementaryTypeName","src":"20130:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"20129:17:12"},"returnParameters":{"id":4773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4772,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4842,"src":"20170:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4771,"name":"bool","nodeType":"ElementaryTypeName","src":"20170:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"20169:6:12"},"scope":5484,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":4925,"nodeType":"FunctionDefinition","src":"21116:685:12","nodes":[],"body":{"id":4924,"nodeType":"Block","src":"21194:607:12","nodes":[],"statements":[{"assignments":[4851],"declarations":[{"constant":false,"id":4851,"mutability":"mutable","name":"totalValue","nameLocation":"21212:10:12","nodeType":"VariableDeclaration","scope":4924,"src":"21204:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4850,"name":"uint256","nodeType":"ElementaryTypeName","src":"21204:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4853,"initialValue":{"hexValue":"30","id":4852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21225:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21204:22:12"},{"body":{"id":4920,"nodeType":"Block","src":"21289:470:12","statements":[{"assignments":[4866],"declarations":[{"constant":false,"id":4866,"mutability":"mutable","name":"asset","nameLocation":"21311:5:12","nodeType":"VariableDeclaration","scope":4920,"src":"21303:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4865,"name":"address","nodeType":"ElementaryTypeName","src":"21303:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4870,"initialValue":{"baseExpression":{"id":4867,"name":"assetList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6029,"src":"21319:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":4869,"indexExpression":{"id":4868,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4855,"src":"21329:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21319:12:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"21303:28:12"},{"assignments":[4872],"declarations":[{"constant":false,"id":4872,"mutability":"mutable","name":"amount","nameLocation":"21353:6:12","nodeType":"VariableDeclaration","scope":4920,"src":"21345:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4871,"name":"uint256","nodeType":"ElementaryTypeName","src":"21345:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4878,"initialValue":{"baseExpression":{"baseExpression":{"id":4873,"name":"userCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6043,"src":"21362:14:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":4875,"indexExpression":{"id":4874,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4845,"src":"21377:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21362:23:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4877,"indexExpression":{"id":4876,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4866,"src":"21386:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21362:30:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21345:47:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4879,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4872,"src":"21410:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21419:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21410:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4919,"nodeType":"IfStatement","src":"21406:343:12","trueBody":{"id":4918,"nodeType":"Block","src":"21422:327:12","statements":[{"assignments":[4884],"declarations":[{"constant":false,"id":4884,"mutability":"mutable","name":"config","nameLocation":"21459:6:12","nodeType":"VariableDeclaration","scope":4918,"src":"21440:25:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig"},"typeName":{"id":4883,"nodeType":"UserDefinedTypeName","pathNode":{"id":4882,"name":"AssetConfig","nameLocations":["21440:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":5502,"src":"21440:11:12"},"referencedDeclaration":5502,"src":"21440:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_storage_ptr","typeString":"struct LendingConfiguration.AssetConfig"}},"visibility":"internal"}],"id":4888,"initialValue":{"baseExpression":{"id":4885,"name":"assetConfigs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6026,"src":"21468:12:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AssetConfig_$5502_storage_$","typeString":"mapping(address => struct LendingConfiguration.AssetConfig storage ref)"}},"id":4887,"indexExpression":{"id":4886,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4866,"src":"21481:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21468:19:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_storage","typeString":"struct LendingConfiguration.AssetConfig storage ref"}},"nodeType":"VariableDeclarationStatement","src":"21440:47:12"},{"assignments":[4890],"declarations":[{"constant":false,"id":4890,"mutability":"mutable","name":"price","nameLocation":"21513:5:12","nodeType":"VariableDeclaration","scope":4918,"src":"21505:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4889,"name":"uint256","nodeType":"ElementaryTypeName","src":"21505:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4897,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"expression":{"id":4892,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4884,"src":"21532:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig memory"}},"id":4893,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21539:9:12","memberName":"priceFeed","nodeType":"MemberAccess","referencedDeclaration":5491,"src":"21532:16:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4891,"name":"IPriceFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"21521:10:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPriceFeed_$246_$","typeString":"type(contract IPriceFeed)"}},"id":4894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21521:28:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceFeed_$246","typeString":"contract IPriceFeed"}},"id":4895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21550:8:12","memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":240,"src":"21521:37:12","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":4896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21521:39:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21505:55:12"},{"assignments":[4899],"declarations":[{"constant":false,"id":4899,"mutability":"mutable","name":"value","nameLocation":"21586:5:12","nodeType":"VariableDeclaration","scope":4918,"src":"21578:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4898,"name":"uint256","nodeType":"ElementaryTypeName","src":"21578:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4907,"initialValue":{"arguments":[{"id":4902,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4872,"src":"21625:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4903,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4890,"src":"21633:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4904,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4884,"src":"21640:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig memory"}},"id":4905,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21647:8:12","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":5493,"src":"21640:15:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":4900,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"21594:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":4901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21606:18:12","memberName":"getCollateralValue","nodeType":"MemberAccess","referencedDeclaration":5968,"src":"21594:30:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint8) pure returns (uint256)"}},"id":4906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21594:62:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21578:78:12"},{"expression":{"id":4916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4908,"name":"totalValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4851,"src":"21674:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4899,"src":"21689:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":4910,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4884,"src":"21697:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig memory"}},"id":4911,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21704:22:12","memberName":"borrowCollateralFactor","nodeType":"MemberAccess","referencedDeclaration":5495,"src":"21697:29:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"21689:37:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4913,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21688:39:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":4914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21730:4:12","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"21688:46:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21674:60:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4917,"nodeType":"ExpressionStatement","src":"21674:60:12"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4858,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4855,"src":"21262:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":4859,"name":"assetList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6029,"src":"21266:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":4860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21276:6:12","memberName":"length","nodeType":"MemberAccess","src":"21266:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21262:20:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4921,"initializationExpression":{"assignments":[4855],"declarations":[{"constant":false,"id":4855,"mutability":"mutable","name":"i","nameLocation":"21255:1:12","nodeType":"VariableDeclaration","scope":4921,"src":"21250:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4854,"name":"uint","nodeType":"ElementaryTypeName","src":"21250:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4857,"initialValue":{"hexValue":"30","id":4856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21259:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21250:10:12"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":4863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"21284:3:12","subExpression":{"id":4862,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4855,"src":"21284:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4864,"nodeType":"ExpressionStatement","src":"21284:3:12"},"nodeType":"ForStatement","src":"21245:514:12"},{"expression":{"id":4922,"name":"totalValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4851,"src":"21784:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4849,"id":4923,"nodeType":"Return","src":"21777:17:12"}]},"documentation":{"id":4843,"nodeType":"StructuredDocumentation","src":"21054:57:12","text":" @notice 计算账户抵押品总价值"},"implemented":true,"kind":"function","modifiers":[],"name":"_getCollateralValue","nameLocation":"21125:19:12","parameters":{"id":4846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4845,"mutability":"mutable","name":"account","nameLocation":"21153:7:12","nodeType":"VariableDeclaration","scope":4925,"src":"21145:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4844,"name":"address","nodeType":"ElementaryTypeName","src":"21145:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"21144:17:12"},"returnParameters":{"id":4849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4848,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4925,"src":"21185:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4847,"name":"uint256","nodeType":"ElementaryTypeName","src":"21185:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21184:9:12"},"scope":5484,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":4947,"nodeType":"FunctionDefinition","src":"21852:276:12","nodes":[],"body":{"id":4946,"nodeType":"Block","src":"21929:199:12","nodes":[],"statements":[{"assignments":[4934],"declarations":[{"constant":false,"id":4934,"mutability":"mutable","name":"principal","nameLocation":"21946:9:12","nodeType":"VariableDeclaration","scope":4946,"src":"21939:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":4933,"name":"int104","nodeType":"ElementaryTypeName","src":"21939:6:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"id":4939,"initialValue":{"expression":{"baseExpression":{"id":4935,"name":"userBasic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6037,"src":"21958:9:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserBasic_$6032_storage_$","typeString":"mapping(address => struct LendingStorage.UserBasic storage ref)"}},"id":4937,"indexExpression":{"id":4936,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4927,"src":"21968:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21958:18:12","typeDescriptions":{"typeIdentifier":"t_struct$_UserBasic_$6032_storage","typeString":"struct LendingStorage.UserBasic storage ref"}},"id":4938,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21977:9:12","memberName":"principal","nodeType":"MemberAccess","referencedDeclaration":6031,"src":"21958:28:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"VariableDeclarationStatement","src":"21939:47:12"},{"expression":{"arguments":[{"id":4942,"name":"principal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4934,"src":"22098:9:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},{"id":4943,"name":"supplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6049,"src":"22109:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int104","typeString":"int104"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4940,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"22067:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":4941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22079:18:12","memberName":"principalToBalance","nodeType":"MemberAccess","referencedDeclaration":5631,"src":"22067:30:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int104_$_t_uint256_$returns$_t_int256_$","typeString":"function (int104,uint256) pure returns (int256)"}},"id":4944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22067:54:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":4932,"id":4945,"nodeType":"Return","src":"22060:61:12"}]},"baseFunctions":[158],"functionSelector":"f8b2cb4f","implemented":true,"kind":"function","modifiers":[],"name":"getBalance","nameLocation":"21861:10:12","overrides":{"id":4929,"nodeType":"OverrideSpecifier","overrides":[],"src":"21903:8:12"},"parameters":{"id":4928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4927,"mutability":"mutable","name":"account","nameLocation":"21880:7:12","nodeType":"VariableDeclaration","scope":4947,"src":"21872:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4926,"name":"address","nodeType":"ElementaryTypeName","src":"21872:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"21871:17:12"},"returnParameters":{"id":4932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4931,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4947,"src":"21921:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4930,"name":"int256","nodeType":"ElementaryTypeName","src":"21921:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"21920:8:12"},"scope":5484,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":4978,"nodeType":"FunctionDefinition","src":"22138:307:12","nodes":[],"body":{"id":4977,"nodeType":"Block","src":"22221:224:12","nodes":[],"statements":[{"assignments":[4956],"declarations":[{"constant":false,"id":4956,"mutability":"mutable","name":"principal","nameLocation":"22238:9:12","nodeType":"VariableDeclaration","scope":4977,"src":"22231:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":4955,"name":"int104","nodeType":"ElementaryTypeName","src":"22231:6:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"id":4961,"initialValue":{"expression":{"baseExpression":{"id":4957,"name":"userBasic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6037,"src":"22250:9:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserBasic_$6032_storage_$","typeString":"mapping(address => struct LendingStorage.UserBasic storage ref)"}},"id":4959,"indexExpression":{"id":4958,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4949,"src":"22260:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22250:18:12","typeDescriptions":{"typeIdentifier":"t_struct$_UserBasic_$6032_storage","typeString":"struct LendingStorage.UserBasic storage ref"}},"id":4960,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22269:9:12","memberName":"principal","nodeType":"MemberAccess","referencedDeclaration":6031,"src":"22250:28:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"VariableDeclarationStatement","src":"22231:47:12"},{"condition":{"commonType":{"typeIdentifier":"t_int104","typeString":"int104"},"id":4964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4962,"name":"principal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4956,"src":"22292:9:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":4963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22305:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22292:14:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4967,"nodeType":"IfStatement","src":"22288:28:12","trueBody":{"expression":{"hexValue":"30","id":4965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22315:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":4954,"id":4966,"nodeType":"Return","src":"22308:8:12"}},{"expression":{"arguments":[{"arguments":[{"id":4972,"name":"principal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4956,"src":"22414:9:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},{"id":4973,"name":"supplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6049,"src":"22425:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int104","typeString":"int104"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4970,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"22383:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":4971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22395:18:12","memberName":"principalToBalance","nodeType":"MemberAccess","referencedDeclaration":5631,"src":"22383:30:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int104_$_t_uint256_$returns$_t_int256_$","typeString":"function (int104,uint256) pure returns (int256)"}},"id":4974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22383:54:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4969,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22375:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4968,"name":"uint256","nodeType":"ElementaryTypeName","src":"22375:7:12","typeDescriptions":{}}},"id":4975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22375:63:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4954,"id":4976,"nodeType":"Return","src":"22368:70:12"}]},"baseFunctions":[191],"functionSelector":"93889f06","implemented":true,"kind":"function","modifiers":[],"name":"supplyBalanceOf","nameLocation":"22147:15:12","overrides":{"id":4951,"nodeType":"OverrideSpecifier","overrides":[],"src":"22194:8:12"},"parameters":{"id":4950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4949,"mutability":"mutable","name":"account","nameLocation":"22171:7:12","nodeType":"VariableDeclaration","scope":4978,"src":"22163:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4948,"name":"address","nodeType":"ElementaryTypeName","src":"22163:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"22162:17:12"},"returnParameters":{"id":4954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4953,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4978,"src":"22212:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4952,"name":"uint256","nodeType":"ElementaryTypeName","src":"22212:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22211:9:12"},"scope":5484,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":5014,"nodeType":"FunctionDefinition","src":"22455:357:12","nodes":[],"body":{"id":5013,"nodeType":"Block","src":"22538:274:12","nodes":[],"statements":[{"assignments":[4987],"declarations":[{"constant":false,"id":4987,"mutability":"mutable","name":"principal","nameLocation":"22555:9:12","nodeType":"VariableDeclaration","scope":5013,"src":"22548:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":4986,"name":"int104","nodeType":"ElementaryTypeName","src":"22548:6:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"id":4992,"initialValue":{"expression":{"baseExpression":{"id":4988,"name":"userBasic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6037,"src":"22567:9:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserBasic_$6032_storage_$","typeString":"mapping(address => struct LendingStorage.UserBasic storage ref)"}},"id":4990,"indexExpression":{"id":4989,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"22577:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22567:18:12","typeDescriptions":{"typeIdentifier":"t_struct$_UserBasic_$6032_storage","typeString":"struct LendingStorage.UserBasic storage ref"}},"id":4991,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22586:9:12","memberName":"principal","nodeType":"MemberAccess","referencedDeclaration":6031,"src":"22567:28:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"VariableDeclarationStatement","src":"22548:47:12"},{"condition":{"commonType":{"typeIdentifier":"t_int104","typeString":"int104"},"id":4995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4993,"name":"principal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4987,"src":"22609:9:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":4994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22622:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22609:14:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4998,"nodeType":"IfStatement","src":"22605:28:12","trueBody":{"expression":{"hexValue":"30","id":4996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22632:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":4985,"id":4997,"nodeType":"Return","src":"22625:8:12"}},{"assignments":[5000],"declarations":[{"constant":false,"id":5000,"mutability":"mutable","name":"balance","nameLocation":"22707:7:12","nodeType":"VariableDeclaration","scope":5013,"src":"22700:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4999,"name":"int256","nodeType":"ElementaryTypeName","src":"22700:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5006,"initialValue":{"arguments":[{"id":5003,"name":"principal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4987,"src":"22748:9:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},{"id":5004,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"22759:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int104","typeString":"int104"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5001,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"22717:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":5002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22729:18:12","memberName":"principalToBalance","nodeType":"MemberAccess","referencedDeclaration":5631,"src":"22717:30:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int104_$_t_uint256_$returns$_t_int256_$","typeString":"function (int104,uint256) pure returns (int256)"}},"id":5005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22717:54:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"22700:71:12"},{"expression":{"arguments":[{"id":5010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"22796:8:12","subExpression":{"id":5009,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5000,"src":"22797:7:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5008,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22788:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5007,"name":"uint256","nodeType":"ElementaryTypeName","src":"22788:7:12","typeDescriptions":{}}},"id":5011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22788:17:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4985,"id":5012,"nodeType":"Return","src":"22781:24:12"}]},"baseFunctions":[198],"functionSelector":"374c49b4","implemented":true,"kind":"function","modifiers":[],"name":"borrowBalanceOf","nameLocation":"22464:15:12","overrides":{"id":4982,"nodeType":"OverrideSpecifier","overrides":[],"src":"22511:8:12"},"parameters":{"id":4981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4980,"mutability":"mutable","name":"account","nameLocation":"22488:7:12","nodeType":"VariableDeclaration","scope":5014,"src":"22480:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4979,"name":"address","nodeType":"ElementaryTypeName","src":"22480:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"22479:17:12"},"returnParameters":{"id":4985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4984,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5014,"src":"22529:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4983,"name":"uint256","nodeType":"ElementaryTypeName","src":"22529:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22528:9:12"},"scope":5484,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":5031,"nodeType":"FunctionDefinition","src":"22818:150:12","nodes":[],"body":{"id":5030,"nodeType":"Block","src":"22914:54:12","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":5024,"name":"userCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6043,"src":"22931:14:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":5026,"indexExpression":{"id":5025,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5016,"src":"22946:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22931:23:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":5028,"indexExpression":{"id":5027,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5018,"src":"22955:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22931:30:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5023,"id":5029,"nodeType":"Return","src":"22924:37:12"}]},"baseFunctions":[167],"functionSelector":"52226ef0","implemented":true,"kind":"function","modifiers":[],"name":"getCollateral","nameLocation":"22827:13:12","overrides":{"id":5020,"nodeType":"OverrideSpecifier","overrides":[],"src":"22887:8:12"},"parameters":{"id":5019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5016,"mutability":"mutable","name":"account","nameLocation":"22849:7:12","nodeType":"VariableDeclaration","scope":5031,"src":"22841:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5015,"name":"address","nodeType":"ElementaryTypeName","src":"22841:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5018,"mutability":"mutable","name":"asset","nameLocation":"22866:5:12","nodeType":"VariableDeclaration","scope":5031,"src":"22858:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5017,"name":"address","nodeType":"ElementaryTypeName","src":"22858:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"22840:32:12"},"returnParameters":{"id":5023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5022,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5031,"src":"22905:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5021,"name":"uint256","nodeType":"ElementaryTypeName","src":"22905:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22904:9:12"},"scope":5484,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":5173,"nodeType":"FunctionDefinition","src":"22974:1419:12","nodes":[],"body":{"id":5172,"nodeType":"Block","src":"23051:1342:12","nodes":[],"statements":[{"assignments":[5040],"declarations":[{"constant":false,"id":5040,"mutability":"mutable","name":"principal","nameLocation":"23068:9:12","nodeType":"VariableDeclaration","scope":5172,"src":"23061:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":5039,"name":"int104","nodeType":"ElementaryTypeName","src":"23061:6:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"id":5045,"initialValue":{"expression":{"baseExpression":{"id":5041,"name":"userBasic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6037,"src":"23080:9:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserBasic_$6032_storage_$","typeString":"mapping(address => struct LendingStorage.UserBasic storage ref)"}},"id":5043,"indexExpression":{"id":5042,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5033,"src":"23090:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23080:18:12","typeDescriptions":{"typeIdentifier":"t_struct$_UserBasic_$6032_storage","typeString":"struct LendingStorage.UserBasic storage ref"}},"id":5044,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23099:9:12","memberName":"principal","nodeType":"MemberAccess","referencedDeclaration":6031,"src":"23080:28:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"VariableDeclarationStatement","src":"23061:47:12"},{"condition":{"commonType":{"typeIdentifier":"t_int104","typeString":"int104"},"id":5048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5046,"name":"principal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5040,"src":"23122:9:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":5047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23135:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"23122:14:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5051,"nodeType":"IfStatement","src":"23118:32:12","trueBody":{"expression":{"hexValue":"66616c7365","id":5049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23145:5:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":5038,"id":5050,"nodeType":"Return","src":"23138:12:12"}},{"assignments":[5053],"declarations":[{"constant":false,"id":5053,"mutability":"mutable","name":"balance","nameLocation":"23221:7:12","nodeType":"VariableDeclaration","scope":5172,"src":"23214:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5052,"name":"int256","nodeType":"ElementaryTypeName","src":"23214:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5059,"initialValue":{"arguments":[{"id":5056,"name":"principal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5040,"src":"23262:9:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},{"id":5057,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"23273:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int104","typeString":"int104"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5054,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"23231:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":5055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23243:18:12","memberName":"principalToBalance","nodeType":"MemberAccess","referencedDeclaration":5631,"src":"23231:30:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int104_$_t_uint256_$returns$_t_int256_$","typeString":"function (int104,uint256) pure returns (int256)"}},"id":5058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23231:54:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"23214:71:12"},{"assignments":[5061],"declarations":[{"constant":false,"id":5061,"mutability":"mutable","name":"debt","nameLocation":"23303:4:12","nodeType":"VariableDeclaration","scope":5172,"src":"23295:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5060,"name":"uint256","nodeType":"ElementaryTypeName","src":"23295:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5067,"initialValue":{"arguments":[{"id":5065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"23318:8:12","subExpression":{"id":5064,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5053,"src":"23319:7:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5063,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23310:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5062,"name":"uint256","nodeType":"ElementaryTypeName","src":"23310:7:12","typeDescriptions":{}}},"id":5066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23310:17:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23295:32:12"},{"assignments":[5069],"declarations":[{"constant":false,"id":5069,"mutability":"mutable","name":"basePrice","nameLocation":"23446:9:12","nodeType":"VariableDeclaration","scope":5172,"src":"23438:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5068,"name":"uint256","nodeType":"ElementaryTypeName","src":"23438:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5075,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":5071,"name":"baseTokenPriceFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5997,"src":"23469:18:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5070,"name":"IPriceFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"23458:10:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPriceFeed_$246_$","typeString":"type(contract IPriceFeed)"}},"id":5072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23458:30:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceFeed_$246","typeString":"contract IPriceFeed"}},"id":5073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23489:8:12","memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":240,"src":"23458:39:12","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":5074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23458:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23438:61:12"},{"assignments":[5077],"declarations":[{"constant":false,"id":5077,"mutability":"mutable","name":"baseDecimals","nameLocation":"23517:12:12","nodeType":"VariableDeclaration","scope":5172,"src":"23509:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5076,"name":"uint256","nodeType":"ElementaryTypeName","src":"23509:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5083,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":5079,"name":"baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5995,"src":"23547:9:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5078,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12674,"src":"23532:14:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$12674_$","typeString":"type(contract IERC20Metadata)"}},"id":5080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23532:25:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$12674","typeString":"contract IERC20Metadata"}},"id":5081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23558:8:12","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":12673,"src":"23532:34:12","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":5082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23532:36:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"23509:59:12"},{"assignments":[5085],"declarations":[{"constant":false,"id":5085,"mutability":"mutable","name":"debtValue","nameLocation":"23586:9:12","nodeType":"VariableDeclaration","scope":5172,"src":"23578:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5084,"name":"uint256","nodeType":"ElementaryTypeName","src":"23578:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5095,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5086,"name":"debt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5061,"src":"23599:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5087,"name":"basePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5069,"src":"23606:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23599:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5089,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"23598:18:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":5090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23620:2:12","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":5091,"name":"baseDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5077,"src":"23626:12:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23620:18:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5093,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"23619:20:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23598:41:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23578:61:12"},{"assignments":[5097],"declarations":[{"constant":false,"id":5097,"mutability":"mutable","name":"collateralValue","nameLocation":"23720:15:12","nodeType":"VariableDeclaration","scope":5172,"src":"23712:23:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5096,"name":"uint256","nodeType":"ElementaryTypeName","src":"23712:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5099,"initialValue":{"hexValue":"30","id":5098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23738:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"23712:27:12"},{"body":{"id":5166,"nodeType":"Block","src":"23793:478:12","statements":[{"assignments":[5112],"declarations":[{"constant":false,"id":5112,"mutability":"mutable","name":"asset","nameLocation":"23815:5:12","nodeType":"VariableDeclaration","scope":5166,"src":"23807:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5111,"name":"address","nodeType":"ElementaryTypeName","src":"23807:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5116,"initialValue":{"baseExpression":{"id":5113,"name":"assetList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6029,"src":"23823:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":5115,"indexExpression":{"id":5114,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5101,"src":"23833:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23823:12:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"23807:28:12"},{"assignments":[5118],"declarations":[{"constant":false,"id":5118,"mutability":"mutable","name":"amount","nameLocation":"23857:6:12","nodeType":"VariableDeclaration","scope":5166,"src":"23849:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5117,"name":"uint256","nodeType":"ElementaryTypeName","src":"23849:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5124,"initialValue":{"baseExpression":{"baseExpression":{"id":5119,"name":"userCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6043,"src":"23866:14:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":5121,"indexExpression":{"id":5120,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5033,"src":"23881:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23866:23:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":5123,"indexExpression":{"id":5122,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5112,"src":"23890:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23866:30:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23849:47:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5125,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5118,"src":"23914:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23923:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"23914:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5165,"nodeType":"IfStatement","src":"23910:351:12","trueBody":{"id":5164,"nodeType":"Block","src":"23926:335:12","statements":[{"assignments":[5130],"declarations":[{"constant":false,"id":5130,"mutability":"mutable","name":"config","nameLocation":"23963:6:12","nodeType":"VariableDeclaration","scope":5164,"src":"23944:25:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig"},"typeName":{"id":5129,"nodeType":"UserDefinedTypeName","pathNode":{"id":5128,"name":"AssetConfig","nameLocations":["23944:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":5502,"src":"23944:11:12"},"referencedDeclaration":5502,"src":"23944:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_storage_ptr","typeString":"struct LendingConfiguration.AssetConfig"}},"visibility":"internal"}],"id":5134,"initialValue":{"baseExpression":{"id":5131,"name":"assetConfigs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6026,"src":"23972:12:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AssetConfig_$5502_storage_$","typeString":"mapping(address => struct LendingConfiguration.AssetConfig storage ref)"}},"id":5133,"indexExpression":{"id":5132,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5112,"src":"23985:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23972:19:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_storage","typeString":"struct LendingConfiguration.AssetConfig storage ref"}},"nodeType":"VariableDeclarationStatement","src":"23944:47:12"},{"assignments":[5136],"declarations":[{"constant":false,"id":5136,"mutability":"mutable","name":"price","nameLocation":"24017:5:12","nodeType":"VariableDeclaration","scope":5164,"src":"24009:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5135,"name":"uint256","nodeType":"ElementaryTypeName","src":"24009:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5143,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"expression":{"id":5138,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5130,"src":"24036:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig memory"}},"id":5139,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24043:9:12","memberName":"priceFeed","nodeType":"MemberAccess","referencedDeclaration":5491,"src":"24036:16:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5137,"name":"IPriceFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"24025:10:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPriceFeed_$246_$","typeString":"type(contract IPriceFeed)"}},"id":5140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24025:28:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceFeed_$246","typeString":"contract IPriceFeed"}},"id":5141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24054:8:12","memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":240,"src":"24025:37:12","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":5142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24025:39:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"24009:55:12"},{"assignments":[5145],"declarations":[{"constant":false,"id":5145,"mutability":"mutable","name":"value","nameLocation":"24090:5:12","nodeType":"VariableDeclaration","scope":5164,"src":"24082:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5144,"name":"uint256","nodeType":"ElementaryTypeName","src":"24082:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5153,"initialValue":{"arguments":[{"id":5148,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5118,"src":"24129:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5149,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5136,"src":"24137:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":5150,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5130,"src":"24144:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig memory"}},"id":5151,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24151:8:12","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":5493,"src":"24144:15:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":5146,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"24098:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":5147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24110:18:12","memberName":"getCollateralValue","nodeType":"MemberAccess","referencedDeclaration":5968,"src":"24098:30:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint8) pure returns (uint256)"}},"id":5152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24098:62:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"24082:78:12"},{"expression":{"id":5162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5154,"name":"collateralValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5097,"src":"24178:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5155,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5145,"src":"24198:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":5156,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5130,"src":"24206:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_memory_ptr","typeString":"struct LendingConfiguration.AssetConfig memory"}},"id":5157,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24213:25:12","memberName":"liquidateCollateralFactor","nodeType":"MemberAccess","referencedDeclaration":5497,"src":"24206:32:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"24198:40:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5159,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24197:42:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":5160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24242:4:12","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"24197:49:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24178:68:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5163,"nodeType":"ExpressionStatement","src":"24178:68:12"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5104,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5101,"src":"23766:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":5105,"name":"assetList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6029,"src":"23770:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":5106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23780:6:12","memberName":"length","nodeType":"MemberAccess","src":"23770:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23766:20:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5167,"initializationExpression":{"assignments":[5101],"declarations":[{"constant":false,"id":5101,"mutability":"mutable","name":"i","nameLocation":"23759:1:12","nodeType":"VariableDeclaration","scope":5167,"src":"23754:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5100,"name":"uint","nodeType":"ElementaryTypeName","src":"23754:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5103,"initialValue":{"hexValue":"30","id":5102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23763:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"23754:10:12"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":5109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"23788:3:12","subExpression":{"id":5108,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5101,"src":"23788:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5110,"nodeType":"ExpressionStatement","src":"23788:3:12"},"nodeType":"ForStatement","src":"23749:522:12"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5168,"name":"debtValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5085,"src":"24359:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5169,"name":"collateralValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5097,"src":"24371:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24359:27:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5038,"id":5171,"nodeType":"Return","src":"24352:34:12"}]},"baseFunctions":[174],"functionSelector":"042e02cf","implemented":true,"kind":"function","modifiers":[],"name":"isLiquidatable","nameLocation":"22983:14:12","overrides":{"id":5035,"nodeType":"OverrideSpecifier","overrides":[],"src":"23027:8:12"},"parameters":{"id":5034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5033,"mutability":"mutable","name":"account","nameLocation":"23006:7:12","nodeType":"VariableDeclaration","scope":5173,"src":"22998:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5032,"name":"address","nodeType":"ElementaryTypeName","src":"22998:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"22997:17:12"},"returnParameters":{"id":5038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5037,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5173,"src":"23045:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5036,"name":"bool","nodeType":"ElementaryTypeName","src":"23045:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"23044:6:12"},"scope":5484,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":5189,"nodeType":"FunctionDefinition","src":"24399:129:12","nodes":[],"body":{"id":5188,"nodeType":"Block","src":"24457:71:12","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5180,"name":"totalSupplyBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6045,"src":"24483:15:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint104","typeString":"uint104"}],"id":5179,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24475:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5178,"name":"uint256","nodeType":"ElementaryTypeName","src":"24475:7:12","typeDescriptions":{}}},"id":5181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24475:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5182,"name":"supplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6049,"src":"24502:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24475:38:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5184,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24474:40:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":5185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24517:4:12","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"24474:47:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5177,"id":5187,"nodeType":"Return","src":"24467:54:12"}]},"functionSelector":"c4e41b22","implemented":true,"kind":"function","modifiers":[],"name":"getTotalSupply","nameLocation":"24408:14:12","parameters":{"id":5174,"nodeType":"ParameterList","parameters":[],"src":"24422:2:12"},"returnParameters":{"id":5177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5176,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5189,"src":"24448:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5175,"name":"uint256","nodeType":"ElementaryTypeName","src":"24448:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24447:9:12"},"scope":5484,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":5205,"nodeType":"FunctionDefinition","src":"24538:129:12","nodes":[],"body":{"id":5204,"nodeType":"Block","src":"24596:71:12","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5196,"name":"totalBorrowBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6047,"src":"24622:15:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint104","typeString":"uint104"}],"id":5195,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24614:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5194,"name":"uint256","nodeType":"ElementaryTypeName","src":"24614:7:12","typeDescriptions":{}}},"id":5197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24614:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5198,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"24641:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24614:38:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5200,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24613:40:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":5201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24656:4:12","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"24613:47:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5193,"id":5203,"nodeType":"Return","src":"24606:54:12"}]},"functionSelector":"e37f8a7e","implemented":true,"kind":"function","modifiers":[],"name":"getTotalBorrow","nameLocation":"24547:14:12","parameters":{"id":5190,"nodeType":"ParameterList","parameters":[],"src":"24561:2:12"},"returnParameters":{"id":5193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5192,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5205,"src":"24587:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5191,"name":"uint256","nodeType":"ElementaryTypeName","src":"24587:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24586:9:12"},"scope":5484,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":5218,"nodeType":"FunctionDefinition","src":"24677:136:12","nodes":[],"body":{"id":5217,"nodeType":"Block","src":"24764:49:12","nodes":[],"statements":[{"expression":{"baseExpression":{"id":5213,"name":"collateralReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6057,"src":"24781:18:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":5215,"indexExpression":{"id":5214,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5207,"src":"24800:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24781:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5212,"id":5216,"nodeType":"Return","src":"24774:32:12"}]},"baseFunctions":[219],"functionSelector":"9ff567f8","implemented":true,"kind":"function","modifiers":[],"name":"getCollateralReserves","nameLocation":"24686:21:12","overrides":{"id":5209,"nodeType":"OverrideSpecifier","overrides":[],"src":"24737:8:12"},"parameters":{"id":5208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5207,"mutability":"mutable","name":"asset","nameLocation":"24716:5:12","nodeType":"VariableDeclaration","scope":5218,"src":"24708:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5206,"name":"address","nodeType":"ElementaryTypeName","src":"24708:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"24707:15:12"},"returnParameters":{"id":5212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5211,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5218,"src":"24755:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5210,"name":"uint256","nodeType":"ElementaryTypeName","src":"24755:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24754:9:12"},"scope":5484,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":5291,"nodeType":"FunctionDefinition","src":"24823:753:12","nodes":[],"body":{"id":5290,"nodeType":"Block","src":"24884:692:12","nodes":[],"statements":[{"assignments":[5225],"declarations":[{"constant":false,"id":5225,"mutability":"mutable","name":"timeElapsed","nameLocation":"24962:11:12","nodeType":"VariableDeclaration","scope":5290,"src":"24954:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5224,"name":"uint256","nodeType":"ElementaryTypeName","src":"24954:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5230,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5226,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"24976:5:12","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":5227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24982:9:12","memberName":"timestamp","nodeType":"MemberAccess","src":"24976:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5228,"name":"lastAccrualTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6053,"src":"24994:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24976:33:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"24954:55:12"},{"assignments":[5232,5234],"declarations":[{"constant":false,"id":5232,"mutability":"mutable","name":"newSupplyIndex","nameLocation":"25028:14:12","nodeType":"VariableDeclaration","scope":5290,"src":"25020:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5231,"name":"uint256","nodeType":"ElementaryTypeName","src":"25020:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5234,"mutability":"mutable","name":"newBorrowIndex","nameLocation":"25052:14:12","nodeType":"VariableDeclaration","scope":5290,"src":"25044:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5233,"name":"uint256","nodeType":"ElementaryTypeName","src":"25044:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5238,"initialValue":{"arguments":[{"id":5236,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5225,"src":"25093:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5235,"name":"accruedInterestIndices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3651,"src":"25070:22:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256) view returns (uint256,uint256)"}},"id":5237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25070:35:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"25019:86:12"},{"assignments":[5240],"declarations":[{"constant":false,"id":5240,"mutability":"mutable","name":"balance","nameLocation":"25210:7:12","nodeType":"VariableDeclaration","scope":5290,"src":"25202:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5239,"name":"uint256","nodeType":"ElementaryTypeName","src":"25202:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5250,"initialValue":{"arguments":[{"arguments":[{"id":5247,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"25256:4:12","typeDescriptions":{"typeIdentifier":"t_contract$_Lending_$5484","typeString":"contract Lending"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Lending_$5484","typeString":"contract Lending"}],"id":5246,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25248:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5245,"name":"address","nodeType":"ElementaryTypeName","src":"25248:7:12","typeDescriptions":{}}},"id":5248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25248:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":5242,"name":"baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5995,"src":"25227:9:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5241,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"25220:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":5243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25220:17:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":5244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25238:9:12","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":12605,"src":"25220:27:12","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":5249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25220:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25202:60:12"},{"assignments":[5252],"declarations":[{"constant":false,"id":5252,"mutability":"mutable","name":"totalSupply","nameLocation":"25280:11:12","nodeType":"VariableDeclaration","scope":5290,"src":"25272:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5251,"name":"uint256","nodeType":"ElementaryTypeName","src":"25272:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5262,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5255,"name":"totalSupplyBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6045,"src":"25303:15:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint104","typeString":"uint104"}],"id":5254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25295:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5253,"name":"uint256","nodeType":"ElementaryTypeName","src":"25295:7:12","typeDescriptions":{}}},"id":5256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25295:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5257,"name":"newSupplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5232,"src":"25322:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25295:41:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5259,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25294:43:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":5260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25340:4:12","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"25294:50:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25272:72:12"},{"assignments":[5264],"declarations":[{"constant":false,"id":5264,"mutability":"mutable","name":"totalBorrow","nameLocation":"25362:11:12","nodeType":"VariableDeclaration","scope":5290,"src":"25354:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5263,"name":"uint256","nodeType":"ElementaryTypeName","src":"25354:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5274,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5267,"name":"totalBorrowBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6047,"src":"25385:15:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint104","typeString":"uint104"}],"id":5266,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25377:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5265,"name":"uint256","nodeType":"ElementaryTypeName","src":"25377:7:12","typeDescriptions":{}}},"id":5268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25377:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5269,"name":"newBorrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5234,"src":"25404:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25377:41:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5271,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25376:43:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":5272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25422:4:12","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"25376:50:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25354:72:12"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5277,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5240,"src":"25517:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5276,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25510:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":5275,"name":"int256","nodeType":"ElementaryTypeName","src":"25510:6:12","typeDescriptions":{}}},"id":5278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25510:15:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":5281,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5252,"src":"25535:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5280,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25528:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":5279,"name":"int256","nodeType":"ElementaryTypeName","src":"25528:6:12","typeDescriptions":{}}},"id":5282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25528:19:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25510:37:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"id":5286,"name":"totalBorrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5264,"src":"25557:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5285,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25550:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":5284,"name":"int256","nodeType":"ElementaryTypeName","src":"25550:6:12","typeDescriptions":{}}},"id":5287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25550:19:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25510:59:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5223,"id":5289,"nodeType":"Return","src":"25503:66:12"}]},"baseFunctions":[212],"functionSelector":"0902f1ac","implemented":true,"kind":"function","modifiers":[],"name":"getReserves","nameLocation":"24832:11:12","overrides":{"id":5220,"nodeType":"OverrideSpecifier","overrides":[],"src":"24858:8:12"},"parameters":{"id":5219,"nodeType":"ParameterList","parameters":[],"src":"24843:2:12"},"returnParameters":{"id":5223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5222,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5291,"src":"24876:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5221,"name":"int256","nodeType":"ElementaryTypeName","src":"24876:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24875:8:12"},"scope":5484,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":5328,"nodeType":"FunctionDefinition","src":"25586:301:12","nodes":[],"body":{"id":5327,"nodeType":"Block","src":"25653:234:12","nodes":[],"statements":[{"assignments":[5298],"declarations":[{"constant":false,"id":5298,"mutability":"mutable","name":"totalSupply","nameLocation":"25671:11:12","nodeType":"VariableDeclaration","scope":5327,"src":"25663:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5297,"name":"uint256","nodeType":"ElementaryTypeName","src":"25663:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5308,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5301,"name":"totalSupplyBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6045,"src":"25694:15:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint104","typeString":"uint104"}],"id":5300,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25686:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5299,"name":"uint256","nodeType":"ElementaryTypeName","src":"25686:7:12","typeDescriptions":{}}},"id":5302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25686:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5303,"name":"supplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6049,"src":"25713:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25686:38:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5305,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25685:40:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":5306,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25728:4:12","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"25685:47:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25663:69:12"},{"assignments":[5310],"declarations":[{"constant":false,"id":5310,"mutability":"mutable","name":"totalBorrow","nameLocation":"25750:11:12","nodeType":"VariableDeclaration","scope":5327,"src":"25742:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5309,"name":"uint256","nodeType":"ElementaryTypeName","src":"25742:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5320,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5313,"name":"totalBorrowBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6047,"src":"25773:15:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint104","typeString":"uint104"}],"id":5312,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25765:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5311,"name":"uint256","nodeType":"ElementaryTypeName","src":"25765:7:12","typeDescriptions":{}}},"id":5314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25765:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5315,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"25792:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25765:38:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5317,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25764:40:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":5318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25807:4:12","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"25764:47:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25742:69:12"},{"expression":{"arguments":[{"id":5323,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5298,"src":"25855:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5324,"name":"totalBorrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5310,"src":"25868:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5321,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"25828:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":5322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25840:14:12","memberName":"getUtilization","nodeType":"MemberAccess","referencedDeclaration":5807,"src":"25828:26:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint64_$","typeString":"function (uint256,uint256) pure returns (uint64)"}},"id":5325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25828:52:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":5296,"id":5326,"nodeType":"Return","src":"25821:59:12"}]},"baseFunctions":[224],"functionSelector":"7eb71131","implemented":true,"kind":"function","modifiers":[],"name":"getUtilization","nameLocation":"25595:14:12","overrides":{"id":5293,"nodeType":"OverrideSpecifier","overrides":[],"src":"25626:8:12"},"parameters":{"id":5292,"nodeType":"ParameterList","parameters":[],"src":"25609:2:12"},"returnParameters":{"id":5296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5295,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5328,"src":"25644:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5294,"name":"uint256","nodeType":"ElementaryTypeName","src":"25644:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25643:9:12"},"scope":5484,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":5382,"nodeType":"FunctionDefinition","src":"25897:677:12","nodes":[],"body":{"id":5381,"nodeType":"Block","src":"25962:612:12","nodes":[],"statements":[{"assignments":[5335],"declarations":[{"constant":false,"id":5335,"mutability":"mutable","name":"totalSupply","nameLocation":"25980:11:12","nodeType":"VariableDeclaration","scope":5381,"src":"25972:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5334,"name":"uint256","nodeType":"ElementaryTypeName","src":"25972:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5345,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5338,"name":"totalSupplyBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6045,"src":"26003:15:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint104","typeString":"uint104"}],"id":5337,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25995:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5336,"name":"uint256","nodeType":"ElementaryTypeName","src":"25995:7:12","typeDescriptions":{}}},"id":5339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25995:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5340,"name":"supplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6049,"src":"26022:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25995:38:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5342,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25994:40:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":5343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26037:4:12","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"25994:47:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25972:69:12"},{"assignments":[5347],"declarations":[{"constant":false,"id":5347,"mutability":"mutable","name":"totalBorrow","nameLocation":"26059:11:12","nodeType":"VariableDeclaration","scope":5381,"src":"26051:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5346,"name":"uint256","nodeType":"ElementaryTypeName","src":"26051:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5357,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5350,"name":"totalBorrowBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6047,"src":"26082:15:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint104","typeString":"uint104"}],"id":5349,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26074:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5348,"name":"uint256","nodeType":"ElementaryTypeName","src":"26074:7:12","typeDescriptions":{}}},"id":5351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26074:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5352,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"26101:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26074:38:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5354,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26073:40:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":5355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26116:4:12","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"26073:47:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"26051:69:12"},{"assignments":[5359],"declarations":[{"constant":false,"id":5359,"mutability":"mutable","name":"utilization","nameLocation":"26137:11:12","nodeType":"VariableDeclaration","scope":5381,"src":"26130:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5358,"name":"uint64","nodeType":"ElementaryTypeName","src":"26130:6:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":5365,"initialValue":{"arguments":[{"id":5362,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5335,"src":"26178:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5363,"name":"totalBorrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5347,"src":"26191:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5360,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"26151:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":5361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26163:14:12","memberName":"getUtilization","nodeType":"MemberAccess","referencedDeclaration":5807,"src":"26151:26:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint64_$","typeString":"function (uint256,uint256) pure returns (uint64)"}},"id":5364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26151:52:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"26130:73:12"},{"assignments":[5367],"declarations":[{"constant":false,"id":5367,"mutability":"mutable","name":"perSecondRate","nameLocation":"26220:13:12","nodeType":"VariableDeclaration","scope":5381,"src":"26213:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5366,"name":"uint64","nodeType":"ElementaryTypeName","src":"26213:6:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":5376,"initialValue":{"arguments":[{"id":5370,"name":"utilization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5359,"src":"26275:11:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5371,"name":"supplyKink","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5999,"src":"26300:10:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5372,"name":"supplyPerSecondInterestRateSlopeLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6001,"src":"26324:35:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5373,"name":"supplyPerSecondInterestRateSlopeHigh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6003,"src":"26373:36:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5374,"name":"supplyPerSecondInterestRateBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6005,"src":"26423:31:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"expression":{"id":5368,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"26236:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":5369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26248:13:12","memberName":"getSupplyRate","nodeType":"MemberAccess","referencedDeclaration":5862,"src":"26236:25:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint64_$_t_uint64_$_t_uint64_$_t_uint64_$returns$_t_uint64_$","typeString":"function (uint256,uint64,uint64,uint64,uint64) pure returns (uint64)"}},"id":5375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26236:228:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"26213:251:12"},{"expression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":5379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5377,"name":"perSecondRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5367,"src":"26523:13:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3331353336303030","id":5378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26539:8:12","typeDescriptions":{"typeIdentifier":"t_rational_31536000_by_1","typeString":"int_const 31536000"},"value":"31536000"},"src":"26523:24:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":5333,"id":5380,"nodeType":"Return","src":"26516:31:12"}]},"baseFunctions":[179],"functionSelector":"84bdc9a8","implemented":true,"kind":"function","modifiers":[],"name":"getSupplyRate","nameLocation":"25906:13:12","overrides":{"id":5330,"nodeType":"OverrideSpecifier","overrides":[],"src":"25936:8:12"},"parameters":{"id":5329,"nodeType":"ParameterList","parameters":[],"src":"25919:2:12"},"returnParameters":{"id":5333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5332,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5382,"src":"25954:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5331,"name":"uint64","nodeType":"ElementaryTypeName","src":"25954:6:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"25953:8:12"},"scope":5484,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":5436,"nodeType":"FunctionDefinition","src":"26580:677:12","nodes":[],"body":{"id":5435,"nodeType":"Block","src":"26645:612:12","nodes":[],"statements":[{"assignments":[5389],"declarations":[{"constant":false,"id":5389,"mutability":"mutable","name":"totalSupply","nameLocation":"26663:11:12","nodeType":"VariableDeclaration","scope":5435,"src":"26655:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5388,"name":"uint256","nodeType":"ElementaryTypeName","src":"26655:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5399,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5392,"name":"totalSupplyBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6045,"src":"26686:15:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint104","typeString":"uint104"}],"id":5391,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26678:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5390,"name":"uint256","nodeType":"ElementaryTypeName","src":"26678:7:12","typeDescriptions":{}}},"id":5393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26678:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5394,"name":"supplyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6049,"src":"26705:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26678:38:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5396,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26677:40:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":5397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26720:4:12","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"26677:47:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"26655:69:12"},{"assignments":[5401],"declarations":[{"constant":false,"id":5401,"mutability":"mutable","name":"totalBorrow","nameLocation":"26742:11:12","nodeType":"VariableDeclaration","scope":5435,"src":"26734:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5400,"name":"uint256","nodeType":"ElementaryTypeName","src":"26734:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5411,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5404,"name":"totalBorrowBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6047,"src":"26765:15:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint104","typeString":"uint104"}],"id":5403,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26757:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5402,"name":"uint256","nodeType":"ElementaryTypeName","src":"26757:7:12","typeDescriptions":{}}},"id":5405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26757:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5406,"name":"borrowIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6051,"src":"26784:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26757:38:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5408,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26756:40:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"31653138","id":5409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26799:4:12","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"26756:47:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"26734:69:12"},{"assignments":[5413],"declarations":[{"constant":false,"id":5413,"mutability":"mutable","name":"utilization","nameLocation":"26820:11:12","nodeType":"VariableDeclaration","scope":5435,"src":"26813:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5412,"name":"uint64","nodeType":"ElementaryTypeName","src":"26813:6:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":5419,"initialValue":{"arguments":[{"id":5416,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5389,"src":"26861:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5417,"name":"totalBorrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5401,"src":"26874:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5414,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"26834:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":5415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26846:14:12","memberName":"getUtilization","nodeType":"MemberAccess","referencedDeclaration":5807,"src":"26834:26:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint64_$","typeString":"function (uint256,uint256) pure returns (uint64)"}},"id":5418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26834:52:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"26813:73:12"},{"assignments":[5421],"declarations":[{"constant":false,"id":5421,"mutability":"mutable","name":"perSecondRate","nameLocation":"26903:13:12","nodeType":"VariableDeclaration","scope":5435,"src":"26896:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5420,"name":"uint64","nodeType":"ElementaryTypeName","src":"26896:6:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":5430,"initialValue":{"arguments":[{"id":5424,"name":"utilization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5413,"src":"26958:11:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5425,"name":"borrowKink","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6007,"src":"26983:10:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5426,"name":"borrowPerSecondInterestRateSlopeLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6009,"src":"27007:35:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5427,"name":"borrowPerSecondInterestRateSlopeHigh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6011,"src":"27056:36:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5428,"name":"borrowPerSecondInterestRateBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6013,"src":"27106:31:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"expression":{"id":5422,"name":"LendingMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"26919:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LendingMath_$5987_$","typeString":"type(library LendingMath)"}},"id":5423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26931:13:12","memberName":"getBorrowRate","nodeType":"MemberAccess","referencedDeclaration":5917,"src":"26919:25:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint64_$_t_uint64_$_t_uint64_$_t_uint64_$returns$_t_uint64_$","typeString":"function (uint256,uint64,uint64,uint64,uint64) pure returns (uint64)"}},"id":5429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26919:228:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"26896:251:12"},{"expression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":5433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5431,"name":"perSecondRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5421,"src":"27206:13:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3331353336303030","id":5432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27222:8:12","typeDescriptions":{"typeIdentifier":"t_rational_31536000_by_1","typeString":"int_const 31536000"},"value":"31536000"},"src":"27206:24:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":5387,"id":5434,"nodeType":"Return","src":"27199:31:12"}]},"baseFunctions":[184],"functionSelector":"ba1c5e80","implemented":true,"kind":"function","modifiers":[],"name":"getBorrowRate","nameLocation":"26589:13:12","overrides":{"id":5384,"nodeType":"OverrideSpecifier","overrides":[],"src":"26619:8:12"},"parameters":{"id":5383,"nodeType":"ParameterList","parameters":[],"src":"26602:2:12"},"returnParameters":{"id":5387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5386,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5436,"src":"26637:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5385,"name":"uint64","nodeType":"ElementaryTypeName","src":"26637:6:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"26636:8:12"},"scope":5484,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":5483,"nodeType":"FunctionDefinition","src":"27331:505:12","nodes":[],"body":{"id":5482,"nodeType":"Block","src":"27426:410:12","nodes":[],"statements":[{"assignments":[5450],"declarations":[{"constant":false,"id":5450,"mutability":"mutable","name":"currentReserves","nameLocation":"27485:15:12","nodeType":"VariableDeclaration","scope":5482,"src":"27478:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5449,"name":"int256","nodeType":"ElementaryTypeName","src":"27478:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5453,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":5451,"name":"getReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5291,"src":"27503:11:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_int256_$","typeString":"function () view returns (int256)"}},"id":5452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27503:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"27478:38:12"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5454,"name":"currentReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5450,"src":"27578:15:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":5455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27596:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"27578:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5457,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5441,"src":"27601:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"id":5460,"name":"currentReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5450,"src":"27618:15:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5459,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27610:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5458,"name":"uint256","nodeType":"ElementaryTypeName","src":"27610:7:12","typeDescriptions":{}}},"id":5461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27610:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27601:33:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"27578:56:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5468,"nodeType":"IfStatement","src":"27574:116:12","trueBody":{"id":5467,"nodeType":"Block","src":"27636:54:12","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5464,"name":"InsufficientReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":96,"src":"27657:20:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27657:22:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5466,"nodeType":"RevertStatement","src":"27650:29:12"}]}},{"expression":{"arguments":[{"id":5473,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5439,"src":"27766:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5474,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5441,"src":"27770:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":5470,"name":"baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5995,"src":"27742:9:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5469,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"27735:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":5471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27735:17:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":5472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27753:12:12","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":12719,"src":"27735:30:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$12648_$","typeString":"function (contract IERC20,address,uint256)"}},"id":5475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27735:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5476,"nodeType":"ExpressionStatement","src":"27735:42:12"},{"eventCall":{"arguments":[{"id":5478,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5439,"src":"27818:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5479,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5441,"src":"27822:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5477,"name":"WithdrawReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76,"src":"27801:16:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":5480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27801:28:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5481,"nodeType":"EmitStatement","src":"27796:33:12"}]},"baseFunctions":[231],"documentation":{"id":5437,"nodeType":"StructuredDocumentation","src":"27263:63:12","text":" @notice 提取协议储备金(仅 owner"},"functionSelector":"e478795d","implemented":true,"kind":"function","modifiers":[{"id":5445,"kind":"modifierInvocation","modifierName":{"id":5444,"name":"onlyOwner","nameLocations":["27403:9:12"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"27403:9:12"},"nodeType":"ModifierInvocation","src":"27403:9:12"},{"id":5447,"kind":"modifierInvocation","modifierName":{"id":5446,"name":"nonReentrant","nameLocations":["27413:12:12"],"nodeType":"IdentifierPath","referencedDeclaration":11726,"src":"27413:12:12"},"nodeType":"ModifierInvocation","src":"27413:12:12"}],"name":"withdrawReserves","nameLocation":"27340:16:12","overrides":{"id":5443,"nodeType":"OverrideSpecifier","overrides":[],"src":"27394:8:12"},"parameters":{"id":5442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5439,"mutability":"mutable","name":"to","nameLocation":"27365:2:12","nodeType":"VariableDeclaration","scope":5483,"src":"27357:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5438,"name":"address","nodeType":"ElementaryTypeName","src":"27357:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5441,"mutability":"mutable","name":"amount","nameLocation":"27377:6:12","nodeType":"VariableDeclaration","scope":5483,"src":"27369:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5440,"name":"uint256","nodeType":"ElementaryTypeName","src":"27369:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"27356:28:12"},"returnParameters":{"id":5448,"nodeType":"ParameterList","parameters":[],"src":"27426:0:12"},"scope":5484,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":3294,"name":"ILending","nameLocations":["790:8:12"],"nodeType":"IdentifierPath","referencedDeclaration":232,"src":"790:8:12"},"id":3295,"nodeType":"InheritanceSpecifier","src":"790:8:12"},{"baseName":{"id":3296,"name":"LendingStorage","nameLocations":["804:14:12"],"nodeType":"IdentifierPath","referencedDeclaration":6058,"src":"804:14:12"},"id":3297,"nodeType":"InheritanceSpecifier","src":"804:14:12"},{"baseName":{"id":3298,"name":"UUPSUpgradeable","nameLocations":["824:15:12"],"nodeType":"IdentifierPath","referencedDeclaration":10834,"src":"824:15:12"},"id":3299,"nodeType":"InheritanceSpecifier","src":"824:15:12"},{"baseName":{"id":3300,"name":"OwnableUpgradeable","nameLocations":["845:18:12"],"nodeType":"IdentifierPath","referencedDeclaration":10384,"src":"845:18:12"},"id":3301,"nodeType":"InheritanceSpecifier","src":"845:18:12"},{"baseName":{"id":3302,"name":"PausableUpgradeable","nameLocations":["869:19:12"],"nodeType":"IdentifierPath","referencedDeclaration":11657,"src":"869:19:12"},"id":3303,"nodeType":"InheritanceSpecifier","src":"869:19:12"},{"baseName":{"id":3304,"name":"ReentrancyGuardUpgradeable","nameLocations":["894:26:12"],"nodeType":"IdentifierPath","referencedDeclaration":11786,"src":"894:26:12"},"id":3305,"nodeType":"InheritanceSpecifier","src":"894:26:12"}],"canonicalName":"Lending","contractDependencies":[],"contractKind":"contract","documentation":{"id":3293,"nodeType":"StructuredDocumentation","src":"706:58:12","text":" @title Lending\n @notice 借贷池核心合约"},"fullyImplemented":true,"linearizedBaseContracts":[5484,11786,11657,10384,11497,10834,12055,10652,6058,5536,232],"name":"Lending","nameLocation":"774:7:12","scope":5485,"usedErrors":[78,80,82,84,86,88,90,92,94,96,98,10220,10225,10401,10404,10679,10684,11536,11539,11688,12250,12263,12686,13148,13441],"usedEvents":[10,18,28,38,48,60,70,76,10231,10409,11528,11533,12028]}],"license":"MIT"}},"contracts/ytLending/LendingConfiguration.sol":{"id":13,"ast":{"absolutePath":"contracts/ytLending/LendingConfiguration.sol","id":5537,"exportedSymbols":{"LendingConfiguration":[5536]},"nodeType":"SourceUnit","src":"32:1926:13","nodes":[{"id":5486,"nodeType":"PragmaDirective","src":"32:23:13","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":5536,"nodeType":"ContractDefinition","src":"138:1818:13","nodes":[{"id":5502,"nodeType":"StructDefinition","src":"174:459:13","nodes":[],"canonicalName":"LendingConfiguration.AssetConfig","members":[{"constant":false,"id":5489,"mutability":"mutable","name":"asset","nameLocation":"211:5:13","nodeType":"VariableDeclaration","scope":5502,"src":"203:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5488,"name":"address","nodeType":"ElementaryTypeName","src":"203:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5491,"mutability":"mutable","name":"priceFeed","nameLocation":"271:9:13","nodeType":"VariableDeclaration","scope":5502,"src":"263:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5490,"name":"address","nodeType":"ElementaryTypeName","src":"263:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5493,"mutability":"mutable","name":"decimals","nameLocation":"338:8:13","nodeType":"VariableDeclaration","scope":5502,"src":"332:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5492,"name":"uint8","nodeType":"ElementaryTypeName","src":"332:5:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":5495,"mutability":"mutable","name":"borrowCollateralFactor","nameLocation":"399:22:13","nodeType":"VariableDeclaration","scope":5502,"src":"392:29:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5494,"name":"uint64","nodeType":"ElementaryTypeName","src":"392:6:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5497,"mutability":"mutable","name":"liquidateCollateralFactor","nameLocation":"461:25:13","nodeType":"VariableDeclaration","scope":5502,"src":"454:32:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5496,"name":"uint64","nodeType":"ElementaryTypeName","src":"454:6:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5499,"mutability":"mutable","name":"liquidationFactor","nameLocation":"523:17:13","nodeType":"VariableDeclaration","scope":5502,"src":"516:24:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5498,"name":"uint64","nodeType":"ElementaryTypeName","src":"516:6:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5501,"mutability":"mutable","name":"supplyCap","nameLocation":"584:9:13","nodeType":"VariableDeclaration","scope":5502,"src":"576:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5500,"name":"uint128","nodeType":"ElementaryTypeName","src":"576:7:13","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"AssetConfig","nameLocation":"181:11:13","scope":5536,"visibility":"public"},{"id":5535,"nodeType":"StructDefinition","src":"639:1315:13","nodes":[],"canonicalName":"LendingConfiguration.Configuration","members":[{"constant":false,"id":5504,"mutability":"mutable","name":"baseToken","nameLocation":"678:9:13","nodeType":"VariableDeclaration","scope":5535,"src":"670:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5503,"name":"address","nodeType":"ElementaryTypeName","src":"670:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5506,"mutability":"mutable","name":"baseTokenPriceFeed","nameLocation":"750:18:13","nodeType":"VariableDeclaration","scope":5535,"src":"742:26:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5505,"name":"address","nodeType":"ElementaryTypeName","src":"742:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5508,"mutability":"mutable","name":"supplyKink","nameLocation":"875:10:13","nodeType":"VariableDeclaration","scope":5535,"src":"868:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5507,"name":"uint64","nodeType":"ElementaryTypeName","src":"868:6:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5510,"mutability":"mutable","name":"supplyPerYearInterestRateSlopeLow","nameLocation":"956:33:13","nodeType":"VariableDeclaration","scope":5535,"src":"949:40:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5509,"name":"uint64","nodeType":"ElementaryTypeName","src":"949:6:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5512,"mutability":"mutable","name":"supplyPerYearInterestRateSlopeHigh","nameLocation":"1037:34:13","nodeType":"VariableDeclaration","scope":5535,"src":"1030:41:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5511,"name":"uint64","nodeType":"ElementaryTypeName","src":"1030:6:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5514,"mutability":"mutable","name":"supplyPerYearInterestRateBase","nameLocation":"1118:29:13","nodeType":"VariableDeclaration","scope":5535,"src":"1111:36:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5513,"name":"uint64","nodeType":"ElementaryTypeName","src":"1111:6:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5516,"mutability":"mutable","name":"borrowKink","nameLocation":"1205:10:13","nodeType":"VariableDeclaration","scope":5535,"src":"1198:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5515,"name":"uint64","nodeType":"ElementaryTypeName","src":"1198:6:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5518,"mutability":"mutable","name":"borrowPerYearInterestRateSlopeLow","nameLocation":"1286:33:13","nodeType":"VariableDeclaration","scope":5535,"src":"1279:40:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5517,"name":"uint64","nodeType":"ElementaryTypeName","src":"1279:6:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5520,"mutability":"mutable","name":"borrowPerYearInterestRateSlopeHigh","nameLocation":"1367:34:13","nodeType":"VariableDeclaration","scope":5535,"src":"1360:41:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5519,"name":"uint64","nodeType":"ElementaryTypeName","src":"1360:6:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5522,"mutability":"mutable","name":"borrowPerYearInterestRateBase","nameLocation":"1448:29:13","nodeType":"VariableDeclaration","scope":5535,"src":"1441:36:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5521,"name":"uint64","nodeType":"ElementaryTypeName","src":"1441:6:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5524,"mutability":"mutable","name":"storeFrontPriceFactor","nameLocation":"1565:21:13","nodeType":"VariableDeclaration","scope":5535,"src":"1558:28:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5523,"name":"uint64","nodeType":"ElementaryTypeName","src":"1558:6:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5526,"mutability":"mutable","name":"trackingIndexScale","nameLocation":"1643:18:13","nodeType":"VariableDeclaration","scope":5535,"src":"1636:25:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5525,"name":"uint64","nodeType":"ElementaryTypeName","src":"1636:6:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5528,"mutability":"mutable","name":"baseBorrowMin","nameLocation":"1722:13:13","nodeType":"VariableDeclaration","scope":5535,"src":"1714:21:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":5527,"name":"uint104","nodeType":"ElementaryTypeName","src":"1714:7:13","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"},{"constant":false,"id":5530,"mutability":"mutable","name":"targetReserves","nameLocation":"1797:14:13","nodeType":"VariableDeclaration","scope":5535,"src":"1789:22:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":5529,"name":"uint104","nodeType":"ElementaryTypeName","src":"1789:7:13","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"},{"constant":false,"id":5534,"mutability":"mutable","name":"assetConfigs","nameLocation":"1887:12:13","nodeType":"VariableDeclaration","scope":5535,"src":"1873:26:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetConfig_$5502_storage_$dyn_storage_ptr","typeString":"struct LendingConfiguration.AssetConfig[]"},"typeName":{"baseType":{"id":5532,"nodeType":"UserDefinedTypeName","pathNode":{"id":5531,"name":"AssetConfig","nameLocations":["1873:11:13"],"nodeType":"IdentifierPath","referencedDeclaration":5502,"src":"1873:11:13"},"referencedDeclaration":5502,"src":"1873:11:13","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_storage_ptr","typeString":"struct LendingConfiguration.AssetConfig"}},"id":5533,"nodeType":"ArrayTypeName","src":"1873:13:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AssetConfig_$5502_storage_$dyn_storage_ptr","typeString":"struct LendingConfiguration.AssetConfig[]"}},"visibility":"internal"}],"name":"Configuration","nameLocation":"646:13:13","scope":5536,"visibility":"public"}],"abstract":false,"baseContracts":[],"canonicalName":"LendingConfiguration","contractDependencies":[],"contractKind":"contract","documentation":{"id":5487,"nodeType":"StructuredDocumentation","src":"57:80:13","text":" @title LendingConfiguration\n @notice 借贷池配置结构体定义"},"fullyImplemented":true,"linearizedBaseContracts":[5536],"name":"LendingConfiguration","nameLocation":"147:20:13","scope":5537,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"contracts/ytLending/LendingFactory.sol":{"id":14,"ast":{"absolutePath":"contracts/ytLending/LendingFactory.sol","id":5588,"exportedSymbols":{"Context":[13428],"ContextUpgradeable":[11497],"ERC1967Utils":[12524],"IERC1363":[12016],"IERC1822Proxiable":[12055],"IERC20":[12648],"IERC20Metadata":[12674],"ILending":[232],"IPriceFeed":[246],"Initializable":[10652],"Lending":[5484],"LendingConfiguration":[5536],"LendingFactory":[5587],"LendingMath":[5987],"LendingStorage":[6058],"Ownable":[11934],"OwnableUpgradeable":[10384],"PausableUpgradeable":[11657],"ReentrancyGuardUpgradeable":[11786],"SafeERC20":[13138],"UUPSUpgradeable":[10834]},"nodeType":"SourceUnit","src":"32:600:14","nodes":[{"id":5538,"nodeType":"PragmaDirective","src":"32:23:14","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":5539,"nodeType":"ImportDirective","src":"57:52:14","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","nameLocation":"-1:-1:-1","scope":5588,"sourceUnit":11935,"symbolAliases":[],"unitAlias":""},{"id":5540,"nodeType":"ImportDirective","src":"110:23:14","nodes":[],"absolutePath":"contracts/ytLending/Lending.sol","file":"./Lending.sol","nameLocation":"-1:-1:-1","scope":5588,"sourceUnit":5485,"symbolAliases":[],"unitAlias":""},{"id":5541,"nodeType":"ImportDirective","src":"134:36:14","nodes":[],"absolutePath":"contracts/ytLending/LendingConfiguration.sol","file":"./LendingConfiguration.sol","nameLocation":"-1:-1:-1","scope":5588,"sourceUnit":5537,"symbolAliases":[],"unitAlias":""},{"id":5587,"nodeType":"ContractDefinition","src":"172:458:14","nodes":[{"id":5553,"nodeType":"FunctionDefinition","src":"236:36:14","nodes":[],"body":{"id":5552,"nodeType":"Block","src":"270:2:14","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"expression":{"id":5548,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"258:3:14","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"262:6:14","memberName":"sender","nodeType":"MemberAccess","src":"258:10:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":5550,"kind":"baseConstructorSpecifier","modifierName":{"id":5547,"name":"Ownable","nameLocations":["250:7:14"],"nodeType":"IdentifierPath","referencedDeclaration":11934,"src":"250:7:14"},"nodeType":"ModifierInvocation","src":"250:19:14"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":5546,"nodeType":"ParameterList","parameters":[],"src":"247:2:14"},"returnParameters":{"id":5551,"nodeType":"ParameterList","parameters":[],"src":"270:0:14"},"scope":5587,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":5557,"nodeType":"EventDefinition","src":"282:47:14","nodes":[],"anonymous":false,"eventSelector":"e5664142667d67c1a12a852c9476d5ca8d09f441bcdf07cbbd892b6cff28484b","name":"LendingDeployed","nameLocation":"288:15:14","parameters":{"id":5556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5555,"indexed":true,"mutability":"mutable","name":"lending","nameLocation":"320:7:14","nodeType":"VariableDeclaration","scope":5557,"src":"304:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5554,"name":"address","nodeType":"ElementaryTypeName","src":"304:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"303:25:14"}},{"id":5586,"nodeType":"FunctionDefinition","src":"444:184:14","nodes":[],"body":{"id":5585,"nodeType":"Block","src":"499:129:14","nodes":[],"statements":[{"assignments":[5567],"declarations":[{"constant":false,"id":5567,"mutability":"mutable","name":"lending","nameLocation":"517:7:14","nodeType":"VariableDeclaration","scope":5585,"src":"509:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_Lending_$5484","typeString":"contract Lending"},"typeName":{"id":5566,"nodeType":"UserDefinedTypeName","pathNode":{"id":5565,"name":"Lending","nameLocations":["509:7:14"],"nodeType":"IdentifierPath","referencedDeclaration":5484,"src":"509:7:14"},"referencedDeclaration":5484,"src":"509:7:14","typeDescriptions":{"typeIdentifier":"t_contract$_Lending_$5484","typeString":"contract Lending"}},"visibility":"internal"}],"id":5572,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":5570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"527:11:14","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_Lending_$5484_$","typeString":"function () returns (contract Lending)"},"typeName":{"id":5569,"nodeType":"UserDefinedTypeName","pathNode":{"id":5568,"name":"Lending","nameLocations":["531:7:14"],"nodeType":"IdentifierPath","referencedDeclaration":5484,"src":"531:7:14"},"referencedDeclaration":5484,"src":"531:7:14","typeDescriptions":{"typeIdentifier":"t_contract$_Lending_$5484","typeString":"contract Lending"}}},"id":5571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"527:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_Lending_$5484","typeString":"contract Lending"}},"nodeType":"VariableDeclarationStatement","src":"509:31:14"},{"eventCall":{"arguments":[{"arguments":[{"id":5576,"name":"lending","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5567,"src":"579:7:14","typeDescriptions":{"typeIdentifier":"t_contract$_Lending_$5484","typeString":"contract Lending"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Lending_$5484","typeString":"contract Lending"}],"id":5575,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"571:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5574,"name":"address","nodeType":"ElementaryTypeName","src":"571:7:14","typeDescriptions":{}}},"id":5577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"571:16:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5573,"name":"LendingDeployed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5557,"src":"555:15:14","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":5578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"555:33:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5579,"nodeType":"EmitStatement","src":"550:38:14"},{"expression":{"arguments":[{"id":5582,"name":"lending","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5567,"src":"613:7:14","typeDescriptions":{"typeIdentifier":"t_contract$_Lending_$5484","typeString":"contract Lending"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Lending_$5484","typeString":"contract Lending"}],"id":5581,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"605:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5580,"name":"address","nodeType":"ElementaryTypeName","src":"605:7:14","typeDescriptions":{}}},"id":5583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"605:16:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5564,"id":5584,"nodeType":"Return","src":"598:23:14"}]},"documentation":{"id":5558,"nodeType":"StructuredDocumentation","src":"339:100:14","text":" @notice 部署新的 Lending 实现合约\n @return 新 Lending 合约地址"},"functionSelector":"775c300c","implemented":true,"kind":"function","modifiers":[{"id":5561,"kind":"modifierInvocation","modifierName":{"id":5560,"name":"onlyOwner","nameLocations":["471:9:14"],"nodeType":"IdentifierPath","referencedDeclaration":11845,"src":"471:9:14"},"nodeType":"ModifierInvocation","src":"471:9:14"}],"name":"deploy","nameLocation":"453:6:14","parameters":{"id":5559,"nodeType":"ParameterList","parameters":[],"src":"459:2:14"},"returnParameters":{"id":5564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5563,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5586,"src":"490:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5562,"name":"address","nodeType":"ElementaryTypeName","src":"490:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"489:9:14"},"scope":5587,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":5542,"name":"LendingConfiguration","nameLocations":["199:20:14"],"nodeType":"IdentifierPath","referencedDeclaration":5536,"src":"199:20:14"},"id":5543,"nodeType":"InheritanceSpecifier","src":"199:20:14"},{"baseName":{"id":5544,"name":"Ownable","nameLocations":["221:7:14"],"nodeType":"IdentifierPath","referencedDeclaration":11934,"src":"221:7:14"},"id":5545,"nodeType":"InheritanceSpecifier","src":"221:7:14"}],"canonicalName":"LendingFactory","contractDependencies":[5484],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[5587,11934,13428,5536],"name":"LendingFactory","nameLocation":"181:14:14","scope":5588,"usedErrors":[11800,11805],"usedEvents":[5557,11811]}],"license":"MIT"}},"contracts/ytLending/LendingMath.sol":{"id":15,"ast":{"absolutePath":"contracts/ytLending/LendingMath.sol","id":5988,"exportedSymbols":{"LendingMath":[5987]},"nodeType":"SourceUnit","src":"32:5899:15","nodes":[{"id":5589,"nodeType":"PragmaDirective","src":"32:23:15","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":5987,"nodeType":"ContractDefinition","src":"123:5806:15","nodes":[{"id":5593,"nodeType":"VariableDeclaration","src":"149:45:15","nodes":[],"constant":true,"mutability":"constant","name":"FACTOR_SCALE","nameLocation":"175:12:15","scope":5987,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5591,"name":"uint256","nodeType":"ElementaryTypeName","src":"149:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":5592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"190:4:15","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"internal"},{"id":5596,"nodeType":"VariableDeclaration","src":"200:43:15","nodes":[],"constant":true,"mutability":"constant","name":"PRICE_SCALE","nameLocation":"226:11:15","scope":5987,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5594,"name":"uint256","nodeType":"ElementaryTypeName","src":"200:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"316538","id":5595,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"240:3:15","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"value":"1e8"},"visibility":"internal"},{"id":5605,"nodeType":"VariableDeclaration","src":"249:63:15","nodes":[],"constant":true,"mutability":"constant","name":"SECONDS_PER_YEAR","nameLocation":"275:16:15","scope":5987,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5597,"name":"uint256","nodeType":"ElementaryTypeName","src":"249:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_31536000_by_1","typeString":"int_const 31536000"},"id":5604,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_525600_by_1","typeString":"int_const 525600"},"id":5602,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_8760_by_1","typeString":"int_const 8760"},"id":5600,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"333635","id":5598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"294:3:15","typeDescriptions":{"typeIdentifier":"t_rational_365_by_1","typeString":"int_const 365"},"value":"365"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3234","id":5599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"300:2:15","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},"src":"294:8:15","typeDescriptions":{"typeIdentifier":"t_rational_8760_by_1","typeString":"int_const 8760"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3630","id":5601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"305:2:15","typeDescriptions":{"typeIdentifier":"t_rational_60_by_1","typeString":"int_const 60"},"value":"60"},"src":"294:13:15","typeDescriptions":{"typeIdentifier":"t_rational_525600_by_1","typeString":"int_const 525600"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3630","id":5603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"310:2:15","typeDescriptions":{"typeIdentifier":"t_rational_60_by_1","typeString":"int_const 60"},"value":"60"},"src":"294:18:15","typeDescriptions":{"typeIdentifier":"t_rational_31536000_by_1","typeString":"int_const 31536000"}},"visibility":"internal"},{"id":5631,"nodeType":"FunctionDefinition","src":"509:172:15","nodes":[],"body":{"id":5630,"nodeType":"Block","src":"601:80:15","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5617,"name":"principal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5608,"src":"625:9:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int104","typeString":"int104"}],"id":5616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"618:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":5615,"name":"int256","nodeType":"ElementaryTypeName","src":"618:6:15","typeDescriptions":{}}},"id":5618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"618:17:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":5621,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5610,"src":"645:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5620,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"638:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":5619,"name":"int256","nodeType":"ElementaryTypeName","src":"638:6:15","typeDescriptions":{}}},"id":5622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"638:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"618:33:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":5626,"name":"FACTOR_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5593,"src":"661:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5625,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"654:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":5624,"name":"int256","nodeType":"ElementaryTypeName","src":"654:6:15","typeDescriptions":{}}},"id":5627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"654:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"618:56:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5614,"id":5629,"nodeType":"Return","src":"611:63:15"}]},"documentation":{"id":5606,"nodeType":"StructuredDocumentation","src":"319:185:15","text":" @notice 将本金转换为实际余额(含利息)\n @param principal 本金(正数或负数)\n @param index 利息索引\n @return 实际余额"},"implemented":true,"kind":"function","modifiers":[],"name":"principalToBalance","nameLocation":"518:18:15","parameters":{"id":5611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5608,"mutability":"mutable","name":"principal","nameLocation":"544:9:15","nodeType":"VariableDeclaration","scope":5631,"src":"537:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":5607,"name":"int104","nodeType":"ElementaryTypeName","src":"537:6:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"},{"constant":false,"id":5610,"mutability":"mutable","name":"index","nameLocation":"563:5:15","nodeType":"VariableDeclaration","scope":5631,"src":"555:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5609,"name":"uint256","nodeType":"ElementaryTypeName","src":"555:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"536:33:15"},"returnParameters":{"id":5614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5613,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5631,"src":"593:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5612,"name":"int256","nodeType":"ElementaryTypeName","src":"593:6:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"592:8:15"},"scope":5987,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5658,"nodeType":"FunctionDefinition","src":"864:170:15","nodes":[],"body":{"id":5657,"nodeType":"Block","src":"954:80:15","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5643,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5634,"src":"979:7:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":5646,"name":"FACTOR_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5593,"src":"996:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5645,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"989:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":5644,"name":"int256","nodeType":"ElementaryTypeName","src":"989:6:15","typeDescriptions":{}}},"id":5647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"989:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"979:30:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5649,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"978:32:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":5652,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5636,"src":"1020:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5651,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1013:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":5650,"name":"int256","nodeType":"ElementaryTypeName","src":"1013:6:15","typeDescriptions":{}}},"id":5653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1013:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"978:48:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5642,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"971:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_int104_$","typeString":"type(int104)"},"typeName":{"id":5641,"name":"int104","nodeType":"ElementaryTypeName","src":"971:6:15","typeDescriptions":{}}},"id":5655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"971:56:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"functionReturnParameters":5640,"id":5656,"nodeType":"Return","src":"964:63:15"}]},"documentation":{"id":5632,"nodeType":"StructuredDocumentation","src":"691:168:15","text":" @notice 将实际余额转换为本金\n @param balance 实际余额(正数或负数)\n @param index 利息索引\n @return 本金"},"implemented":true,"kind":"function","modifiers":[],"name":"balanceToPrincipal","nameLocation":"873:18:15","parameters":{"id":5637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5634,"mutability":"mutable","name":"balance","nameLocation":"899:7:15","nodeType":"VariableDeclaration","scope":5658,"src":"892:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5633,"name":"int256","nodeType":"ElementaryTypeName","src":"892:6:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":5636,"mutability":"mutable","name":"index","nameLocation":"916:5:15","nodeType":"VariableDeclaration","scope":5658,"src":"908:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5635,"name":"uint256","nodeType":"ElementaryTypeName","src":"908:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"891:31:15"},"returnParameters":{"id":5640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5639,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5658,"src":"946:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":5638,"name":"int104","nodeType":"ElementaryTypeName","src":"946:6:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"src":"945:8:15"},"scope":5987,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5719,"nodeType":"FunctionDefinition","src":"1181:721:15","nodes":[],"body":{"id":5718,"nodeType":"Block","src":"1294:608:15","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_int104","typeString":"int104"},"id":5672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5670,"name":"newPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5663,"src":"1374:12:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5671,"name":"oldPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5661,"src":"1389:12:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"src":"1374:27:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5677,"nodeType":"IfStatement","src":"1370:46:15","trueBody":{"expression":{"components":[{"hexValue":"30","id":5673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1411:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":5674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1414:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5675,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1410:6:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(int_const 0,int_const 0)"}},"functionReturnParameters":5669,"id":5676,"nodeType":"Return","src":"1403:13:15"}},{"condition":{"commonType":{"typeIdentifier":"t_int104","typeString":"int104"},"id":5680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5678,"name":"newPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5663,"src":"1439:12:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":5679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1455:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1439:17:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int104","typeString":"int104"},"id":5693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5691,"name":"oldPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5661,"src":"1600:12:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":5692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1616:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1600:17:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5715,"nodeType":"Block","src":"1750:146:15","statements":[{"expression":{"components":[{"arguments":[{"id":5707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1847:13:15","subExpression":{"id":5706,"name":"oldPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5661,"src":"1848:12:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int104","typeString":"int104"}],"id":5705,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1839:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":5704,"name":"uint104","nodeType":"ElementaryTypeName","src":"1839:7:15","typeDescriptions":{}}},"id":5708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1839:22:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},{"arguments":[{"id":5711,"name":"newPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5663,"src":"1871:12:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int104","typeString":"int104"}],"id":5710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1863:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":5709,"name":"uint104","nodeType":"ElementaryTypeName","src":"1863:7:15","typeDescriptions":{}}},"id":5712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1863:21:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}}],"id":5713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1838:47:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint104_$_t_uint104_$","typeString":"tuple(uint104,uint104)"}},"functionReturnParameters":5669,"id":5714,"nodeType":"Return","src":"1831:54:15"}]},"id":5716,"nodeType":"IfStatement","src":"1596:300:15","trueBody":{"id":5703,"nodeType":"Block","src":"1619:125:15","statements":[{"expression":{"components":[{"hexValue":"30","id":5694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1693:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"commonType":{"typeIdentifier":"t_int104","typeString":"int104"},"id":5699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5697,"name":"newPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5663,"src":"1704:12:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5698,"name":"oldPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5661,"src":"1719:12:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"src":"1704:27:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int104","typeString":"int104"}],"id":5696,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1696:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":5695,"name":"uint104","nodeType":"ElementaryTypeName","src":"1696:7:15","typeDescriptions":{}}},"id":5700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1696:36:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}}],"id":5701,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1692:41:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_uint104_$","typeString":"tuple(int_const 0,uint104)"}},"functionReturnParameters":5669,"id":5702,"nodeType":"Return","src":"1685:48:15"}]}},"id":5717,"nodeType":"IfStatement","src":"1435:461:15","trueBody":{"id":5690,"nodeType":"Block","src":"1458:132:15","statements":[{"expression":{"components":[{"arguments":[{"commonType":{"typeIdentifier":"t_int104","typeString":"int104"},"id":5685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5683,"name":"newPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5663,"src":"1547:12:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5684,"name":"oldPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5661,"src":"1562:12:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"src":"1547:27:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int104","typeString":"int104"}],"id":5682,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1539:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":5681,"name":"uint104","nodeType":"ElementaryTypeName","src":"1539:7:15","typeDescriptions":{}}},"id":5686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1539:36:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},{"hexValue":"30","id":5687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1577:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5688,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1538:41:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint104_$_t_rational_0_by_1_$","typeString":"tuple(uint104,int_const 0)"}},"functionReturnParameters":5669,"id":5689,"nodeType":"Return","src":"1531:48:15"}]}}]},"documentation":{"id":5659,"nodeType":"StructuredDocumentation","src":"1044:132:15","text":" @notice 计算供应方本金变化和借款方本金变化\n @dev 用于 absorb 时计算账户状态变化"},"implemented":true,"kind":"function","modifiers":[],"name":"repayAndSupplyAmount","nameLocation":"1190:20:15","parameters":{"id":5664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5661,"mutability":"mutable","name":"oldPrincipal","nameLocation":"1218:12:15","nodeType":"VariableDeclaration","scope":5719,"src":"1211:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":5660,"name":"int104","nodeType":"ElementaryTypeName","src":"1211:6:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"},{"constant":false,"id":5663,"mutability":"mutable","name":"newPrincipal","nameLocation":"1239:12:15","nodeType":"VariableDeclaration","scope":5719,"src":"1232:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":5662,"name":"int104","nodeType":"ElementaryTypeName","src":"1232:6:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"src":"1210:42:15"},"returnParameters":{"id":5669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5666,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5719,"src":"1276:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":5665,"name":"uint104","nodeType":"ElementaryTypeName","src":"1276:7:15","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"},{"constant":false,"id":5668,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5719,"src":"1285:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":5667,"name":"uint104","nodeType":"ElementaryTypeName","src":"1285:7:15","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"}],"src":"1275:18:15"},"scope":5987,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5780,"nodeType":"FunctionDefinition","src":"2040:711:15","nodes":[],"body":{"id":5779,"nodeType":"Block","src":"2156:595:15","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_int104","typeString":"int104"},"id":5733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5731,"name":"newPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5724,"src":"2236:12:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5732,"name":"oldPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5722,"src":"2251:12:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"src":"2236:27:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5738,"nodeType":"IfStatement","src":"2232:46:15","trueBody":{"expression":{"components":[{"hexValue":"30","id":5734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2273:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":5735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2276:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5736,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2272:6:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(int_const 0,int_const 0)"}},"functionReturnParameters":5730,"id":5737,"nodeType":"Return","src":"2265:13:15"}},{"condition":{"commonType":{"typeIdentifier":"t_int104","typeString":"int104"},"id":5741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5739,"name":"newPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5724,"src":"2301:12:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":5740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2317:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2301:17:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int104","typeString":"int104"},"id":5754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5752,"name":"oldPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5722,"src":"2449:12:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":5753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2465:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2449:17:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5776,"nodeType":"Block","src":"2599:146:15","statements":[{"expression":{"components":[{"arguments":[{"id":5767,"name":"oldPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5722,"src":"2696:12:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int104","typeString":"int104"}],"id":5766,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2688:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":5765,"name":"uint104","nodeType":"ElementaryTypeName","src":"2688:7:15","typeDescriptions":{}}},"id":5768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2688:21:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},{"arguments":[{"id":5772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2719:13:15","subExpression":{"id":5771,"name":"newPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5724,"src":"2720:12:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int104","typeString":"int104"}],"id":5770,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2711:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":5769,"name":"uint104","nodeType":"ElementaryTypeName","src":"2711:7:15","typeDescriptions":{}}},"id":5773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2711:22:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}}],"id":5774,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2687:47:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint104_$_t_uint104_$","typeString":"tuple(uint104,uint104)"}},"functionReturnParameters":5730,"id":5775,"nodeType":"Return","src":"2680:54:15"}]},"id":5777,"nodeType":"IfStatement","src":"2445:300:15","trueBody":{"id":5764,"nodeType":"Block","src":"2468:125:15","statements":[{"expression":{"components":[{"hexValue":"30","id":5755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2542:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"commonType":{"typeIdentifier":"t_int104","typeString":"int104"},"id":5760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5758,"name":"oldPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5722,"src":"2553:12:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5759,"name":"newPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5724,"src":"2568:12:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"src":"2553:27:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int104","typeString":"int104"}],"id":5757,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2545:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":5756,"name":"uint104","nodeType":"ElementaryTypeName","src":"2545:7:15","typeDescriptions":{}}},"id":5761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2545:36:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}}],"id":5762,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2541:41:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_uint104_$","typeString":"tuple(int_const 0,uint104)"}},"functionReturnParameters":5730,"id":5763,"nodeType":"Return","src":"2534:48:15"}]}},"id":5778,"nodeType":"IfStatement","src":"2297:448:15","trueBody":{"id":5751,"nodeType":"Block","src":"2320:119:15","statements":[{"expression":{"components":[{"arguments":[{"commonType":{"typeIdentifier":"t_int104","typeString":"int104"},"id":5746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5744,"name":"oldPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5722,"src":"2396:12:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5745,"name":"newPrincipal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5724,"src":"2411:12:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"src":"2396:27:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int104","typeString":"int104"}],"id":5743,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2388:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":5742,"name":"uint104","nodeType":"ElementaryTypeName","src":"2388:7:15","typeDescriptions":{}}},"id":5747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2388:36:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},{"hexValue":"30","id":5748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2426:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5749,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2387:41:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint104_$_t_rational_0_by_1_$","typeString":"tuple(uint104,int_const 0)"}},"functionReturnParameters":5730,"id":5750,"nodeType":"Return","src":"2380:48:15"}]}}]},"documentation":{"id":5720,"nodeType":"StructuredDocumentation","src":"1912:123:15","text":" @notice 计算提取金额和借款金额\n @dev 用于 withdraw/borrow 时计算账户状态变化"},"implemented":true,"kind":"function","modifiers":[],"name":"withdrawAndBorrowAmount","nameLocation":"2049:23:15","parameters":{"id":5725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5722,"mutability":"mutable","name":"oldPrincipal","nameLocation":"2080:12:15","nodeType":"VariableDeclaration","scope":5780,"src":"2073:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":5721,"name":"int104","nodeType":"ElementaryTypeName","src":"2073:6:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"},{"constant":false,"id":5724,"mutability":"mutable","name":"newPrincipal","nameLocation":"2101:12:15","nodeType":"VariableDeclaration","scope":5780,"src":"2094:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":5723,"name":"int104","nodeType":"ElementaryTypeName","src":"2094:6:15","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"src":"2072:42:15"},"returnParameters":{"id":5730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5727,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5780,"src":"2138:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":5726,"name":"uint104","nodeType":"ElementaryTypeName","src":"2138:7:15","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"},{"constant":false,"id":5729,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5780,"src":"2147:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":5728,"name":"uint104","nodeType":"ElementaryTypeName","src":"2147:7:15","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"}],"src":"2137:18:15"},"scope":5987,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5807,"nodeType":"FunctionDefinition","src":"2924:211:15","nodes":[],"body":{"id":5806,"nodeType":"Block","src":"3021:114:15","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5790,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5783,"src":"3035:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3050:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3035:16:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5795,"nodeType":"IfStatement","src":"3031:30:15","trueBody":{"expression":{"hexValue":"30","id":5793,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3060:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":5789,"id":5794,"nodeType":"Return","src":"3053:8:15"}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5798,"name":"totalBorrow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5785,"src":"3086:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5799,"name":"FACTOR_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5593,"src":"3100:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3086:26:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5801,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3085:28:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5802,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5783,"src":"3116:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3085:42:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5797,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3078:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":5796,"name":"uint64","nodeType":"ElementaryTypeName","src":"3078:6:15","typeDescriptions":{}}},"id":5804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3078:50:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":5789,"id":5805,"nodeType":"Return","src":"3071:57:15"}]},"documentation":{"id":5781,"nodeType":"StructuredDocumentation","src":"2757:162:15","text":" @notice 计算利用率\n @param totalSupply 总供应量\n @param totalBorrow 总借款量\n @return 利用率 (scaled by 1e18)"},"implemented":true,"kind":"function","modifiers":[],"name":"getUtilization","nameLocation":"2933:14:15","parameters":{"id":5786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5783,"mutability":"mutable","name":"totalSupply","nameLocation":"2956:11:15","nodeType":"VariableDeclaration","scope":5807,"src":"2948:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5782,"name":"uint256","nodeType":"ElementaryTypeName","src":"2948:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5785,"mutability":"mutable","name":"totalBorrow","nameLocation":"2977:11:15","nodeType":"VariableDeclaration","scope":5807,"src":"2969:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5784,"name":"uint256","nodeType":"ElementaryTypeName","src":"2969:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2947:42:15"},"returnParameters":{"id":5789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5788,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5807,"src":"3013:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5787,"name":"uint64","nodeType":"ElementaryTypeName","src":"3013:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3012:8:15"},"scope":5987,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5862,"nodeType":"FunctionDefinition","src":"3209:719:15","nodes":[],"body":{"id":5861,"nodeType":"Block","src":"3478:450:15","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5823,"name":"utilization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5810,"src":"3492:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":5824,"name":"supplyKink","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5812,"src":"3507:10:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3492:25:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5859,"nodeType":"Block","src":"3665:257:15","statements":[{"assignments":[5840],"declarations":[{"constant":false,"id":5840,"mutability":"mutable","name":"excessUtil","nameLocation":"3687:10:15","nodeType":"VariableDeclaration","scope":5859,"src":"3679:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5839,"name":"uint256","nodeType":"ElementaryTypeName","src":"3679:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5844,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5841,"name":"utilization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5810,"src":"3700:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5842,"name":"supplyKink","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5812,"src":"3714:10:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3700:24:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3679:45:15"},{"expression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":5857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":5847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5845,"name":"supplyPerSecondInterestRateBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5818,"src":"3745:31:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5846,"name":"supplyPerSecondInterestRateSlopeLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5814,"src":"3779:35:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3745:69:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5850,"name":"excessUtil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5840,"src":"3845:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5851,"name":"supplyPerSecondInterestRateSlopeHigh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5816,"src":"3858:36:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3845:49:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5853,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3844:51:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5854,"name":"FACTOR_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5593,"src":"3898:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3844:66:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5849,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3837:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":5848,"name":"uint64","nodeType":"ElementaryTypeName","src":"3837:6:15","typeDescriptions":{}}},"id":5856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3837:74:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3745:166:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":5822,"id":5858,"nodeType":"Return","src":"3738:173:15"}]},"id":5860,"nodeType":"IfStatement","src":"3488:434:15","trueBody":{"id":5838,"nodeType":"Block","src":"3519:140:15","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":5836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5826,"name":"supplyPerSecondInterestRateBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5818,"src":"3540:31:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5829,"name":"utilization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5810,"src":"3582:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5830,"name":"supplyPerSecondInterestRateSlopeLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5814,"src":"3596:35:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3582:49:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5832,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3581:51:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5833,"name":"FACTOR_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5593,"src":"3635:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3581:66:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5828,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3574:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":5827,"name":"uint64","nodeType":"ElementaryTypeName","src":"3574:6:15","typeDescriptions":{}}},"id":5835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3574:74:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3540:108:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":5822,"id":5837,"nodeType":"Return","src":"3533:115:15"}]}}]},"documentation":{"id":5808,"nodeType":"StructuredDocumentation","src":"3141:63:15","text":" @notice 计算供应利率(每秒利率)"},"implemented":true,"kind":"function","modifiers":[],"name":"getSupplyRate","nameLocation":"3218:13:15","parameters":{"id":5819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5810,"mutability":"mutable","name":"utilization","nameLocation":"3249:11:15","nodeType":"VariableDeclaration","scope":5862,"src":"3241:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5809,"name":"uint256","nodeType":"ElementaryTypeName","src":"3241:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5812,"mutability":"mutable","name":"supplyKink","nameLocation":"3277:10:15","nodeType":"VariableDeclaration","scope":5862,"src":"3270:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5811,"name":"uint64","nodeType":"ElementaryTypeName","src":"3270:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5814,"mutability":"mutable","name":"supplyPerSecondInterestRateSlopeLow","nameLocation":"3304:35:15","nodeType":"VariableDeclaration","scope":5862,"src":"3297:42:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5813,"name":"uint64","nodeType":"ElementaryTypeName","src":"3297:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5816,"mutability":"mutable","name":"supplyPerSecondInterestRateSlopeHigh","nameLocation":"3356:36:15","nodeType":"VariableDeclaration","scope":5862,"src":"3349:43:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5815,"name":"uint64","nodeType":"ElementaryTypeName","src":"3349:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5818,"mutability":"mutable","name":"supplyPerSecondInterestRateBase","nameLocation":"3409:31:15","nodeType":"VariableDeclaration","scope":5862,"src":"3402:38:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5817,"name":"uint64","nodeType":"ElementaryTypeName","src":"3402:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3231:215:15"},"returnParameters":{"id":5822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5821,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5862,"src":"3470:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5820,"name":"uint64","nodeType":"ElementaryTypeName","src":"3470:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3469:8:15"},"scope":5987,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5917,"nodeType":"FunctionDefinition","src":"4002:719:15","nodes":[],"body":{"id":5916,"nodeType":"Block","src":"4271:450:15","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5878,"name":"utilization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5865,"src":"4285:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":5879,"name":"borrowKink","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5867,"src":"4300:10:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"4285:25:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5914,"nodeType":"Block","src":"4458:257:15","statements":[{"assignments":[5895],"declarations":[{"constant":false,"id":5895,"mutability":"mutable","name":"excessUtil","nameLocation":"4480:10:15","nodeType":"VariableDeclaration","scope":5914,"src":"4472:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5894,"name":"uint256","nodeType":"ElementaryTypeName","src":"4472:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5899,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5896,"name":"utilization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5865,"src":"4493:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5897,"name":"borrowKink","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5867,"src":"4507:10:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"4493:24:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4472:45:15"},{"expression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":5912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":5902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5900,"name":"borrowPerSecondInterestRateBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"4538:31:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5901,"name":"borrowPerSecondInterestRateSlopeLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5869,"src":"4572:35:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"4538:69:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5905,"name":"excessUtil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5895,"src":"4638:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5906,"name":"borrowPerSecondInterestRateSlopeHigh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5871,"src":"4651:36:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"4638:49:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5908,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4637:51:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5909,"name":"FACTOR_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5593,"src":"4691:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4637:66:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5904,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4630:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":5903,"name":"uint64","nodeType":"ElementaryTypeName","src":"4630:6:15","typeDescriptions":{}}},"id":5911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4630:74:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"4538:166:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":5877,"id":5913,"nodeType":"Return","src":"4531:173:15"}]},"id":5915,"nodeType":"IfStatement","src":"4281:434:15","trueBody":{"id":5893,"nodeType":"Block","src":"4312:140:15","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":5891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5881,"name":"borrowPerSecondInterestRateBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"4333:31:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5884,"name":"utilization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5865,"src":"4375:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5885,"name":"borrowPerSecondInterestRateSlopeLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5869,"src":"4389:35:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"4375:49:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5887,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4374:51:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5888,"name":"FACTOR_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5593,"src":"4428:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4374:66:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5883,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4367:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":5882,"name":"uint64","nodeType":"ElementaryTypeName","src":"4367:6:15","typeDescriptions":{}}},"id":5890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4367:74:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"4333:108:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":5877,"id":5892,"nodeType":"Return","src":"4326:115:15"}]}}]},"documentation":{"id":5863,"nodeType":"StructuredDocumentation","src":"3934:63:15","text":" @notice 计算借款利率(每秒利率)"},"implemented":true,"kind":"function","modifiers":[],"name":"getBorrowRate","nameLocation":"4011:13:15","parameters":{"id":5874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5865,"mutability":"mutable","name":"utilization","nameLocation":"4042:11:15","nodeType":"VariableDeclaration","scope":5917,"src":"4034:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5864,"name":"uint256","nodeType":"ElementaryTypeName","src":"4034:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5867,"mutability":"mutable","name":"borrowKink","nameLocation":"4070:10:15","nodeType":"VariableDeclaration","scope":5917,"src":"4063:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5866,"name":"uint64","nodeType":"ElementaryTypeName","src":"4063:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5869,"mutability":"mutable","name":"borrowPerSecondInterestRateSlopeLow","nameLocation":"4097:35:15","nodeType":"VariableDeclaration","scope":5917,"src":"4090:42:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5868,"name":"uint64","nodeType":"ElementaryTypeName","src":"4090:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5871,"mutability":"mutable","name":"borrowPerSecondInterestRateSlopeHigh","nameLocation":"4149:36:15","nodeType":"VariableDeclaration","scope":5917,"src":"4142:43:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5870,"name":"uint64","nodeType":"ElementaryTypeName","src":"4142:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5873,"mutability":"mutable","name":"borrowPerSecondInterestRateBase","nameLocation":"4202:31:15","nodeType":"VariableDeclaration","scope":5917,"src":"4195:38:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5872,"name":"uint64","nodeType":"ElementaryTypeName","src":"4195:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"4024:215:15"},"returnParameters":{"id":5877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5876,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5917,"src":"4263:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5875,"name":"uint64","nodeType":"ElementaryTypeName","src":"4263:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"4262:8:15"},"scope":5987,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5945,"nodeType":"FunctionDefinition","src":"4971:367:15","nodes":[],"body":{"id":5944,"nodeType":"Block","src":"5123:215:15","nodes":[],"statements":[{"assignments":[5930],"declarations":[{"constant":false,"id":5930,"mutability":"mutable","name":"interestAccrued","nameLocation":"5213:15:15","nodeType":"VariableDeclaration","scope":5944,"src":"5205:23:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5929,"name":"uint256","nodeType":"ElementaryTypeName","src":"5205:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5939,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5931,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5920,"src":"5232:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5932,"name":"interestRatePerSecond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5922,"src":"5240:21:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"5232:29:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5934,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5924,"src":"5264:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5232:43:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5936,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5231:45:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5937,"name":"FACTOR_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5593,"src":"5279:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5231:60:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5205:86:15"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5940,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5920,"src":"5308:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5941,"name":"interestAccrued","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5930,"src":"5316:15:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5308:23:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5928,"id":5943,"nodeType":"Return","src":"5301:30:15"}]},"documentation":{"id":5918,"nodeType":"StructuredDocumentation","src":"4727:239:15","text":" @notice 计算复利后的利息累计因子\n @param index 当前利息累计因子\n @param interestRatePerSecond 每秒利率\n @param timeElapsed 经过的秒数\n @return 新的利息累计因子"},"implemented":true,"kind":"function","modifiers":[],"name":"accrueInterest","nameLocation":"4980:14:15","parameters":{"id":5925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5920,"mutability":"mutable","name":"index","nameLocation":"5012:5:15","nodeType":"VariableDeclaration","scope":5945,"src":"5004:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5919,"name":"uint256","nodeType":"ElementaryTypeName","src":"5004:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5922,"mutability":"mutable","name":"interestRatePerSecond","nameLocation":"5034:21:15","nodeType":"VariableDeclaration","scope":5945,"src":"5027:28:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5921,"name":"uint64","nodeType":"ElementaryTypeName","src":"5027:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5924,"mutability":"mutable","name":"timeElapsed","nameLocation":"5073:11:15","nodeType":"VariableDeclaration","scope":5945,"src":"5065:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5923,"name":"uint256","nodeType":"ElementaryTypeName","src":"5065:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4994:96:15"},"returnParameters":{"id":5928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5927,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5945,"src":"5114:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5926,"name":"uint256","nodeType":"ElementaryTypeName","src":"5114:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5113:9:15"},"scope":5987,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5968,"nodeType":"FunctionDefinition","src":"5397:256:15","nodes":[],"body":{"id":5967,"nodeType":"Block","src":"5564:89:15","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5957,"name":"collateralAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5948,"src":"5582:16:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5958,"name":"collateralPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5950,"src":"5601:15:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5582:34:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5960,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5581:36:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":5961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5621:2:15","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":5962,"name":"collateralDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5952,"src":"5627:18:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5621:24:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5964,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5620:26:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5581:65:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5956,"id":5966,"nodeType":"Return","src":"5574:72:15"}]},"documentation":{"id":5946,"nodeType":"StructuredDocumentation","src":"5344:48:15","text":" @notice 计算抵押品价值"},"implemented":true,"kind":"function","modifiers":[],"name":"getCollateralValue","nameLocation":"5406:18:15","parameters":{"id":5953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5948,"mutability":"mutable","name":"collateralAmount","nameLocation":"5442:16:15","nodeType":"VariableDeclaration","scope":5968,"src":"5434:24:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5947,"name":"uint256","nodeType":"ElementaryTypeName","src":"5434:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5950,"mutability":"mutable","name":"collateralPrice","nameLocation":"5476:15:15","nodeType":"VariableDeclaration","scope":5968,"src":"5468:23:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5949,"name":"uint256","nodeType":"ElementaryTypeName","src":"5468:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5952,"mutability":"mutable","name":"collateralDecimals","nameLocation":"5507:18:15","nodeType":"VariableDeclaration","scope":5968,"src":"5501:24:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5951,"name":"uint8","nodeType":"ElementaryTypeName","src":"5501:5:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"5424:107:15"},"returnParameters":{"id":5956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5955,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5968,"src":"5555:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5954,"name":"uint256","nodeType":"ElementaryTypeName","src":"5555:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5554:9:15"},"scope":5987,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5986,"nodeType":"FunctionDefinition","src":"5709:218:15","nodes":[],"body":{"id":5985,"nodeType":"Block","src":"5846:81:15","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5978,"name":"collateralValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5971,"src":"5864:15:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5979,"name":"borrowCollateralFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5973,"src":"5882:22:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"5864:40:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5981,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5863:42:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5982,"name":"FACTOR_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5593,"src":"5908:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5863:57:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5977,"id":5984,"nodeType":"Return","src":"5856:64:15"}]},"documentation":{"id":5969,"nodeType":"StructuredDocumentation","src":"5659:45:15","text":" @notice 计算借款能力"},"implemented":true,"kind":"function","modifiers":[],"name":"getBorrowCapacity","nameLocation":"5718:17:15","parameters":{"id":5974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5971,"mutability":"mutable","name":"collateralValue","nameLocation":"5753:15:15","nodeType":"VariableDeclaration","scope":5986,"src":"5745:23:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5970,"name":"uint256","nodeType":"ElementaryTypeName","src":"5745:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5973,"mutability":"mutable","name":"borrowCollateralFactor","nameLocation":"5785:22:15","nodeType":"VariableDeclaration","scope":5986,"src":"5778:29:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5972,"name":"uint64","nodeType":"ElementaryTypeName","src":"5778:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"5735:78:15"},"returnParameters":{"id":5977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5976,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5986,"src":"5837:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5975,"name":"uint256","nodeType":"ElementaryTypeName","src":"5837:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5836:9:15"},"scope":5987,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"LendingMath","contractDependencies":[],"contractKind":"library","documentation":{"id":5590,"nodeType":"StructuredDocumentation","src":"57:65:15","text":" @title LendingMath\n @notice 借贷池数学计算库"},"fullyImplemented":true,"linearizedBaseContracts":[5987],"name":"LendingMath","nameLocation":"131:11:15","scope":5988,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"contracts/ytLending/LendingStorage.sol":{"id":16,"ast":{"absolutePath":"contracts/ytLending/LendingStorage.sol","id":6059,"exportedSymbols":{"LendingConfiguration":[5536],"LendingStorage":[6058]},"nodeType":"SourceUnit","src":"32:1790:16","nodes":[{"id":5989,"nodeType":"PragmaDirective","src":"32:23:16","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":5990,"nodeType":"ImportDirective","src":"57:36:16","nodes":[],"absolutePath":"contracts/ytLending/LendingConfiguration.sol","file":"./LendingConfiguration.sol","nameLocation":"-1:-1:-1","scope":6059,"sourceUnit":5537,"symbolAliases":[],"unitAlias":""},{"id":6058,"nodeType":"ContractDefinition","src":"167:1653:16","nodes":[{"id":5995,"nodeType":"VariableDeclaration","src":"255:24:16","nodes":[],"constant":false,"functionSelector":"c55dae63","mutability":"mutable","name":"baseToken","nameLocation":"270:9:16","scope":6058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5994,"name":"address","nodeType":"ElementaryTypeName","src":"255:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":5997,"nodeType":"VariableDeclaration","src":"285:33:16","nodes":[],"constant":false,"functionSelector":"e7dad6bd","mutability":"mutable","name":"baseTokenPriceFeed","nameLocation":"300:18:16","scope":6058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5996,"name":"address","nodeType":"ElementaryTypeName","src":"285:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":5999,"nodeType":"VariableDeclaration","src":"394:24:16","nodes":[],"constant":false,"functionSelector":"a5b4ff79","mutability":"mutable","name":"supplyKink","nameLocation":"408:10:16","scope":6058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5998,"name":"uint64","nodeType":"ElementaryTypeName","src":"394:6:16","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"public"},{"id":6001,"nodeType":"VariableDeclaration","src":"424:49:16","nodes":[],"constant":false,"functionSelector":"5a94b8d1","mutability":"mutable","name":"supplyPerSecondInterestRateSlopeLow","nameLocation":"438:35:16","scope":6058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6000,"name":"uint64","nodeType":"ElementaryTypeName","src":"424:6:16","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"public"},{"id":6003,"nodeType":"VariableDeclaration","src":"479:50:16","nodes":[],"constant":false,"functionSelector":"804de71f","mutability":"mutable","name":"supplyPerSecondInterestRateSlopeHigh","nameLocation":"493:36:16","scope":6058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6002,"name":"uint64","nodeType":"ElementaryTypeName","src":"479:6:16","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"public"},{"id":6005,"nodeType":"VariableDeclaration","src":"535:45:16","nodes":[],"constant":false,"functionSelector":"94920cca","mutability":"mutable","name":"supplyPerSecondInterestRateBase","nameLocation":"549:31:16","scope":6058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6004,"name":"uint64","nodeType":"ElementaryTypeName","src":"535:6:16","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"public"},{"id":6007,"nodeType":"VariableDeclaration","src":"591:24:16","nodes":[],"constant":false,"functionSelector":"9241a561","mutability":"mutable","name":"borrowKink","nameLocation":"605:10:16","scope":6058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6006,"name":"uint64","nodeType":"ElementaryTypeName","src":"591:6:16","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"public"},{"id":6009,"nodeType":"VariableDeclaration","src":"621:49:16","nodes":[],"constant":false,"functionSelector":"2d05670b","mutability":"mutable","name":"borrowPerSecondInterestRateSlopeLow","nameLocation":"635:35:16","scope":6058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6008,"name":"uint64","nodeType":"ElementaryTypeName","src":"621:6:16","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"public"},{"id":6011,"nodeType":"VariableDeclaration","src":"676:50:16","nodes":[],"constant":false,"functionSelector":"2a48cf12","mutability":"mutable","name":"borrowPerSecondInterestRateSlopeHigh","nameLocation":"690:36:16","scope":6058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6010,"name":"uint64","nodeType":"ElementaryTypeName","src":"676:6:16","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"public"},{"id":6013,"nodeType":"VariableDeclaration","src":"732:45:16","nodes":[],"constant":false,"functionSelector":"7914acc7","mutability":"mutable","name":"borrowPerSecondInterestRateBase","nameLocation":"746:31:16","scope":6058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6012,"name":"uint64","nodeType":"ElementaryTypeName","src":"732:6:16","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"public"},{"id":6015,"nodeType":"VariableDeclaration","src":"808:35:16","nodes":[],"constant":false,"functionSelector":"1f5954bd","mutability":"mutable","name":"storeFrontPriceFactor","nameLocation":"822:21:16","scope":6058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6014,"name":"uint64","nodeType":"ElementaryTypeName","src":"808:6:16","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"public"},{"id":6017,"nodeType":"VariableDeclaration","src":"849:32:16","nodes":[],"constant":false,"functionSelector":"aba7f15e","mutability":"mutable","name":"trackingIndexScale","nameLocation":"863:18:16","scope":6058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6016,"name":"uint64","nodeType":"ElementaryTypeName","src":"849:6:16","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"public"},{"id":6019,"nodeType":"VariableDeclaration","src":"887:28:16","nodes":[],"constant":false,"functionSelector":"300e6beb","mutability":"mutable","name":"baseBorrowMin","nameLocation":"902:13:16","scope":6058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":6018,"name":"uint104","nodeType":"ElementaryTypeName","src":"887:7:16","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"public"},{"id":6021,"nodeType":"VariableDeclaration","src":"921:29:16","nodes":[],"constant":false,"functionSelector":"32176c49","mutability":"mutable","name":"targetReserves","nameLocation":"936:14:16","scope":6058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":6020,"name":"uint104","nodeType":"ElementaryTypeName","src":"921:7:16","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"public"},{"id":6026,"nodeType":"VariableDeclaration","src":"981:51:16","nodes":[],"constant":false,"functionSelector":"7609d7f6","mutability":"mutable","name":"assetConfigs","nameLocation":"1020:12:16","scope":6058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AssetConfig_$5502_storage_$","typeString":"mapping(address => struct LendingConfiguration.AssetConfig)"},"typeName":{"id":6025,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":6022,"name":"address","nodeType":"ElementaryTypeName","src":"989:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"981:31:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AssetConfig_$5502_storage_$","typeString":"mapping(address => struct LendingConfiguration.AssetConfig)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":6024,"nodeType":"UserDefinedTypeName","pathNode":{"id":6023,"name":"AssetConfig","nameLocations":["1000:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":5502,"src":"1000:11:16"},"referencedDeclaration":5502,"src":"1000:11:16","typeDescriptions":{"typeIdentifier":"t_struct$_AssetConfig_$5502_storage_ptr","typeString":"struct LendingConfiguration.AssetConfig"}}},"visibility":"public"},{"id":6029,"nodeType":"VariableDeclaration","src":"1038:26:16","nodes":[],"constant":false,"functionSelector":"a0b4b301","mutability":"mutable","name":"assetList","nameLocation":"1055:9:16","scope":6058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[]"},"typeName":{"baseType":{"id":6027,"name":"address","nodeType":"ElementaryTypeName","src":"1038:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6028,"nodeType":"ArrayTypeName","src":"1038:9:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"public"},{"id":6032,"nodeType":"StructDefinition","src":"1101:108:16","nodes":[],"canonicalName":"LendingStorage.UserBasic","members":[{"constant":false,"id":6031,"mutability":"mutable","name":"principal","nameLocation":"1135:9:16","nodeType":"VariableDeclaration","scope":6032,"src":"1128:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":6030,"name":"int104","nodeType":"ElementaryTypeName","src":"1128:6:16","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"name":"UserBasic","nameLocation":"1108:9:16","scope":6058,"visibility":"public"},{"id":6037,"nodeType":"VariableDeclaration","src":"1214:46:16","nodes":[],"constant":false,"functionSelector":"dc4abafd","mutability":"mutable","name":"userBasic","nameLocation":"1251:9:16","scope":6058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserBasic_$6032_storage_$","typeString":"mapping(address => struct LendingStorage.UserBasic)"},"typeName":{"id":6036,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":6033,"name":"address","nodeType":"ElementaryTypeName","src":"1222:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1214:29:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_UserBasic_$6032_storage_$","typeString":"mapping(address => struct LendingStorage.UserBasic)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":6035,"nodeType":"UserDefinedTypeName","pathNode":{"id":6034,"name":"UserBasic","nameLocations":["1233:9:16"],"nodeType":"IdentifierPath","referencedDeclaration":6032,"src":"1233:9:16"},"referencedDeclaration":6032,"src":"1233:9:16","typeDescriptions":{"typeIdentifier":"t_struct$_UserBasic_$6032_storage_ptr","typeString":"struct LendingStorage.UserBasic"}}},"visibility":"public"},{"id":6043,"nodeType":"VariableDeclaration","src":"1300:69:16","nodes":[],"constant":false,"functionSelector":"2b92a07d","mutability":"mutable","name":"userCollateral","nameLocation":"1355:14:16","scope":6058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":6042,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":6038,"name":"address","nodeType":"ElementaryTypeName","src":"1308:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1300:47:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":6041,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":6039,"name":"address","nodeType":"ElementaryTypeName","src":"1327:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1319:27:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":6040,"name":"uint256","nodeType":"ElementaryTypeName","src":"1338:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"id":6045,"nodeType":"VariableDeclaration","src":"1421:30:16","nodes":[],"constant":false,"functionSelector":"278cc7a0","mutability":"mutable","name":"totalSupplyBase","nameLocation":"1436:15:16","scope":6058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":6044,"name":"uint104","nodeType":"ElementaryTypeName","src":"1421:7:16","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"public"},{"id":6047,"nodeType":"VariableDeclaration","src":"1457:30:16","nodes":[],"constant":false,"functionSelector":"74471361","mutability":"mutable","name":"totalBorrowBase","nameLocation":"1472:15:16","scope":6058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":6046,"name":"uint104","nodeType":"ElementaryTypeName","src":"1457:7:16","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"public"},{"id":6049,"nodeType":"VariableDeclaration","src":"1518:26:16","nodes":[],"constant":false,"functionSelector":"98f1bc12","mutability":"mutable","name":"supplyIndex","nameLocation":"1533:11:16","scope":6058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6048,"name":"uint256","nodeType":"ElementaryTypeName","src":"1518:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":6051,"nodeType":"VariableDeclaration","src":"1550:26:16","nodes":[],"constant":false,"functionSelector":"aa5af0fd","mutability":"mutable","name":"borrowIndex","nameLocation":"1565:11:16","scope":6058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6050,"name":"uint256","nodeType":"ElementaryTypeName","src":"1550:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":6053,"nodeType":"VariableDeclaration","src":"1582:30:16","nodes":[],"constant":false,"functionSelector":"d7e72708","mutability":"mutable","name":"lastAccrualTime","nameLocation":"1597:15:16","scope":6058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6052,"name":"uint256","nodeType":"ElementaryTypeName","src":"1582:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":6057,"nodeType":"VariableDeclaration","src":"1764:53:16","nodes":[],"constant":false,"functionSelector":"cf31a17e","mutability":"mutable","name":"collateralReserves","nameLocation":"1799:18:16","scope":6058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":6056,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":6054,"name":"address","nodeType":"ElementaryTypeName","src":"1772:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1764:27:16","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":6055,"name":"uint256","nodeType":"ElementaryTypeName","src":"1783:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"}],"abstract":true,"baseContracts":[{"baseName":{"id":5992,"name":"LendingConfiguration","nameLocations":["203:20:16"],"nodeType":"IdentifierPath","referencedDeclaration":5536,"src":"203:20:16"},"id":5993,"nodeType":"InheritanceSpecifier","src":"203:20:16"}],"canonicalName":"LendingStorage","contractDependencies":[],"contractKind":"contract","documentation":{"id":5991,"nodeType":"StructuredDocumentation","src":"95:71:16","text":" @title LendingStorage\n @notice 借贷池存储变量定义"},"fullyImplemented":true,"linearizedBaseContracts":[6058,5536],"name":"LendingStorage","nameLocation":"185:14:16","scope":6059,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"contracts/ytLp/core/YTPoolManager.sol":{"id":17,"ast":{"absolutePath":"contracts/ytLp/core/YTPoolManager.sol","id":6766,"exportedSymbols":{"ERC1967Utils":[12524],"IERC1363":[12016],"IERC1822Proxiable":[12055],"IERC20":[12648],"IUSDY":[268],"IYTLPToken":[285],"IYTVault":[434],"Initializable":[10652],"ReentrancyGuardUpgradeable":[11786],"SafeERC20":[13138],"UUPSUpgradeable":[10834],"YTPoolManager":[6765]},"nodeType":"SourceUnit","src":"32:8509:17","nodes":[{"id":6060,"nodeType":"PragmaDirective","src":"32:23:17","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":6061,"nodeType":"ImportDirective","src":"57:82:17","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","nameLocation":"-1:-1:-1","scope":6766,"sourceUnit":11787,"symbolAliases":[],"unitAlias":""},{"id":6062,"nodeType":"ImportDirective","src":"140:75:17","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":6766,"sourceUnit":10653,"symbolAliases":[],"unitAlias":""},{"id":6063,"nodeType":"ImportDirective","src":"216:77:17","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":6766,"sourceUnit":10835,"symbolAliases":[],"unitAlias":""},{"id":6064,"nodeType":"ImportDirective","src":"294:56:17","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","nameLocation":"-1:-1:-1","scope":6766,"sourceUnit":12649,"symbolAliases":[],"unitAlias":""},{"id":6065,"nodeType":"ImportDirective","src":"351:65:17","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","nameLocation":"-1:-1:-1","scope":6766,"sourceUnit":13139,"symbolAliases":[],"unitAlias":""},{"id":6066,"nodeType":"ImportDirective","src":"417:39:17","nodes":[],"absolutePath":"contracts/interfaces/IYTVault.sol","file":"../../interfaces/IYTVault.sol","nameLocation":"-1:-1:-1","scope":6766,"sourceUnit":435,"symbolAliases":[],"unitAlias":""},{"id":6067,"nodeType":"ImportDirective","src":"457:41:17","nodes":[],"absolutePath":"contracts/interfaces/IYTLPToken.sol","file":"../../interfaces/IYTLPToken.sol","nameLocation":"-1:-1:-1","scope":6766,"sourceUnit":286,"symbolAliases":[],"unitAlias":""},{"id":6068,"nodeType":"ImportDirective","src":"499:36:17","nodes":[],"absolutePath":"contracts/interfaces/IUSDY.sol","file":"../../interfaces/IUSDY.sol","nameLocation":"-1:-1:-1","scope":6766,"sourceUnit":269,"symbolAliases":[],"unitAlias":""},{"id":6765,"nodeType":"ContractDefinition","src":"655:7884:17","nodes":[{"id":6079,"nodeType":"UsingForDirective","src":"746:27:17","nodes":[],"global":false,"libraryName":{"id":6076,"name":"SafeERC20","nameLocations":["752:9:17"],"nodeType":"IdentifierPath","referencedDeclaration":13138,"src":"752:9:17"},"typeName":{"id":6078,"nodeType":"UserDefinedTypeName","pathNode":{"id":6077,"name":"IERC20","nameLocations":["766:6:17"],"nodeType":"IdentifierPath","referencedDeclaration":12648,"src":"766:6:17"},"referencedDeclaration":12648,"src":"766:6:17","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}}},{"id":6081,"nodeType":"ErrorDefinition","src":"783:18:17","nodes":[],"errorSelector":"ee90c468","name":"Forbidden","nameLocation":"789:9:17","parameters":{"id":6080,"nodeType":"ParameterList","parameters":[],"src":"798:2:17"}},{"id":6083,"nodeType":"ErrorDefinition","src":"806:23:17","nodes":[],"errorSelector":"e6c4247b","name":"InvalidAddress","nameLocation":"812:14:17","parameters":{"id":6082,"nodeType":"ParameterList","parameters":[],"src":"826:2:17"}},{"id":6085,"nodeType":"ErrorDefinition","src":"834:24:17","nodes":[],"errorSelector":"76166401","name":"InvalidDuration","nameLocation":"840:15:17","parameters":{"id":6084,"nodeType":"ParameterList","parameters":[],"src":"855:2:17"}},{"id":6087,"nodeType":"ErrorDefinition","src":"863:20:17","nodes":[],"errorSelector":"83385255","name":"PrivateMode","nameLocation":"869:11:17","parameters":{"id":6086,"nodeType":"ParameterList","parameters":[],"src":"880:2:17"}},{"id":6089,"nodeType":"ErrorDefinition","src":"888:22:17","nodes":[],"errorSelector":"2c5211c6","name":"InvalidAmount","nameLocation":"894:13:17","parameters":{"id":6088,"nodeType":"ParameterList","parameters":[],"src":"907:2:17"}},{"id":6091,"nodeType":"ErrorDefinition","src":"915:27:17","nodes":[],"errorSelector":"bb2875c3","name":"InsufficientOutput","nameLocation":"921:18:17","parameters":{"id":6090,"nodeType":"ParameterList","parameters":[],"src":"939:2:17"}},{"id":6093,"nodeType":"ErrorDefinition","src":"947:26:17","nodes":[],"errorSelector":"9e494994","name":"CooldownNotPassed","nameLocation":"953:17:17","parameters":{"id":6092,"nodeType":"ParameterList","parameters":[],"src":"970:2:17"}},{"id":6098,"nodeType":"VariableDeclaration","src":"983:50:17","nodes":[],"constant":true,"functionSelector":"95082d25","mutability":"constant","name":"PRICE_PRECISION","nameLocation":"1007:15:17","scope":6765,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6094,"name":"uint256","nodeType":"ElementaryTypeName","src":"983:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_1000000000000000000000000000000_by_1","typeString":"int_const 1000000000000000000000000000000"},"id":6097,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":6095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1025:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3330","id":6096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1031:2:17","typeDescriptions":{"typeIdentifier":"t_rational_30_by_1","typeString":"int_const 30"},"value":"30"},"src":"1025:8:17","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000000000000000_by_1","typeString":"int_const 1000000000000000000000000000000"}},"visibility":"public"},{"id":6103,"nodeType":"VariableDeclaration","src":"1039:49:17","nodes":[],"constant":true,"functionSelector":"275558ff","mutability":"constant","name":"YTLP_PRECISION","nameLocation":"1063:14:17","scope":6765,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6099,"name":"uint256","nodeType":"ElementaryTypeName","src":"1039:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"id":6102,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":6100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1080:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3138","id":6101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1086:2:17","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"1080:8:17","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}},"visibility":"public"},{"id":6106,"nodeType":"VariableDeclaration","src":"1094:52:17","nodes":[],"constant":true,"functionSelector":"126082cf","mutability":"constant","name":"BASIS_POINTS_DIVISOR","nameLocation":"1118:20:17","scope":6765,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6104,"name":"uint256","nodeType":"ElementaryTypeName","src":"1094:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3130303030","id":6105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1141:5:17","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"visibility":"public"},{"id":6109,"nodeType":"VariableDeclaration","src":"1152:56:17","nodes":[],"constant":true,"functionSelector":"1e9049cf","mutability":"constant","name":"MAX_COOLDOWN_DURATION","nameLocation":"1176:21:17","scope":6765,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6107,"name":"uint256","nodeType":"ElementaryTypeName","src":"1152:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3438","id":6108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1200:8:17","subdenomination":"hours","typeDescriptions":{"typeIdentifier":"t_rational_172800_by_1","typeString":"int_const 172800"},"value":"48"},"visibility":"public"},{"id":6111,"nodeType":"VariableDeclaration","src":"1219:18:17","nodes":[],"constant":false,"functionSelector":"12d43a51","mutability":"mutable","name":"gov","nameLocation":"1234:3:17","scope":6765,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6110,"name":"address","nodeType":"ElementaryTypeName","src":"1219:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":6113,"nodeType":"VariableDeclaration","src":"1243:22:17","nodes":[],"constant":false,"functionSelector":"84a08e63","mutability":"mutable","name":"ytVault","nameLocation":"1258:7:17","scope":6765,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6112,"name":"address","nodeType":"ElementaryTypeName","src":"1243:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":6115,"nodeType":"VariableDeclaration","src":"1271:19:17","nodes":[],"constant":false,"functionSelector":"98d506e9","mutability":"mutable","name":"usdy","nameLocation":"1286:4:17","scope":6765,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6114,"name":"address","nodeType":"ElementaryTypeName","src":"1271:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":6117,"nodeType":"VariableDeclaration","src":"1296:19:17","nodes":[],"constant":false,"functionSelector":"e348031b","mutability":"mutable","name":"ytLP","nameLocation":"1311:4:17","scope":6765,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6116,"name":"address","nodeType":"ElementaryTypeName","src":"1296:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":6119,"nodeType":"VariableDeclaration","src":"1326:31:17","nodes":[],"constant":false,"functionSelector":"35269315","mutability":"mutable","name":"cooldownDuration","nameLocation":"1341:16:17","scope":6765,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6118,"name":"uint256","nodeType":"ElementaryTypeName","src":"1326:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":6123,"nodeType":"VariableDeclaration","src":"1363:46:17","nodes":[],"constant":false,"functionSelector":"8b770e11","mutability":"mutable","name":"lastAddedAt","nameLocation":"1398:11:17","scope":6765,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":6122,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":6120,"name":"address","nodeType":"ElementaryTypeName","src":"1371:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1363:27:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":6121,"name":"uint256","nodeType":"ElementaryTypeName","src":"1382:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"id":6127,"nodeType":"VariableDeclaration","src":"1416:41:17","nodes":[],"constant":false,"functionSelector":"46ea87af","mutability":"mutable","name":"isHandler","nameLocation":"1448:9:17","scope":6765,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":6126,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":6124,"name":"address","nodeType":"ElementaryTypeName","src":"1424:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1416:24:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":6125,"name":"bool","nodeType":"ElementaryTypeName","src":"1435:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":6129,"nodeType":"VariableDeclaration","src":"1468:26:17","nodes":[],"constant":false,"functionSelector":"196b68cb","mutability":"mutable","name":"aumAddition","nameLocation":"1483:11:17","scope":6765,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6128,"name":"uint256","nodeType":"ElementaryTypeName","src":"1468:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":6131,"nodeType":"VariableDeclaration","src":"1500:27:17","nodes":[],"constant":false,"functionSelector":"b172bb0c","mutability":"mutable","name":"aumDeduction","nameLocation":"1515:12:17","scope":6765,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6130,"name":"uint256","nodeType":"ElementaryTypeName","src":"1500:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":6147,"nodeType":"EventDefinition","src":"1538:224:17","nodes":[],"anonymous":false,"eventSelector":"38dc38b96482be64113daffd8d464ebda93e856b70ccfc605e69ccf892ab981e","name":"AddLiquidity","nameLocation":"1544:12:17","parameters":{"id":6146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6133,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1582:7:17","nodeType":"VariableDeclaration","scope":6147,"src":"1566:23:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6132,"name":"address","nodeType":"ElementaryTypeName","src":"1566:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6135,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"1615:5:17","nodeType":"VariableDeclaration","scope":6147,"src":"1599:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6134,"name":"address","nodeType":"ElementaryTypeName","src":"1599:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6137,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1638:6:17","nodeType":"VariableDeclaration","scope":6147,"src":"1630:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6136,"name":"uint256","nodeType":"ElementaryTypeName","src":"1630:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6139,"indexed":false,"mutability":"mutable","name":"aumInUsdy","nameLocation":"1662:9:17","nodeType":"VariableDeclaration","scope":6147,"src":"1654:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6138,"name":"uint256","nodeType":"ElementaryTypeName","src":"1654:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6141,"indexed":false,"mutability":"mutable","name":"ytLPSupply","nameLocation":"1689:10:17","nodeType":"VariableDeclaration","scope":6147,"src":"1681:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6140,"name":"uint256","nodeType":"ElementaryTypeName","src":"1681:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6143,"indexed":false,"mutability":"mutable","name":"usdyAmount","nameLocation":"1717:10:17","nodeType":"VariableDeclaration","scope":6147,"src":"1709:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6142,"name":"uint256","nodeType":"ElementaryTypeName","src":"1709:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6145,"indexed":false,"mutability":"mutable","name":"mintAmount","nameLocation":"1745:10:17","nodeType":"VariableDeclaration","scope":6147,"src":"1737:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6144,"name":"uint256","nodeType":"ElementaryTypeName","src":"1737:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1556:205:17"}},{"id":6163,"nodeType":"EventDefinition","src":"1767:230:17","nodes":[],"anonymous":false,"eventSelector":"87b9679bb9a4944bafa98c267e7cd4a00ab29fed48afdefae25f0fca5da27940","name":"RemoveLiquidity","nameLocation":"1773:15:17","parameters":{"id":6162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6149,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1814:7:17","nodeType":"VariableDeclaration","scope":6163,"src":"1798:23:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6148,"name":"address","nodeType":"ElementaryTypeName","src":"1798:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6151,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"1847:5:17","nodeType":"VariableDeclaration","scope":6163,"src":"1831:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6150,"name":"address","nodeType":"ElementaryTypeName","src":"1831:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6153,"indexed":false,"mutability":"mutable","name":"ytLPAmount","nameLocation":"1870:10:17","nodeType":"VariableDeclaration","scope":6163,"src":"1862:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6152,"name":"uint256","nodeType":"ElementaryTypeName","src":"1862:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6155,"indexed":false,"mutability":"mutable","name":"aumInUsdy","nameLocation":"1898:9:17","nodeType":"VariableDeclaration","scope":6163,"src":"1890:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6154,"name":"uint256","nodeType":"ElementaryTypeName","src":"1890:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6157,"indexed":false,"mutability":"mutable","name":"ytLPSupply","nameLocation":"1925:10:17","nodeType":"VariableDeclaration","scope":6163,"src":"1917:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6156,"name":"uint256","nodeType":"ElementaryTypeName","src":"1917:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6159,"indexed":false,"mutability":"mutable","name":"usdyAmount","nameLocation":"1953:10:17","nodeType":"VariableDeclaration","scope":6163,"src":"1945:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6158,"name":"uint256","nodeType":"ElementaryTypeName","src":"1945:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6161,"indexed":false,"mutability":"mutable","name":"amountOut","nameLocation":"1981:9:17","nodeType":"VariableDeclaration","scope":6163,"src":"1973:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6160,"name":"uint256","nodeType":"ElementaryTypeName","src":"1973:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1788:208:17"}},{"id":6167,"nodeType":"EventDefinition","src":"2002:44:17","nodes":[],"anonymous":false,"eventSelector":"22a843a6490ffd6fc66fbaf9d670f2dd193309268a6305732d1d4055d96af096","name":"CooldownDurationSet","nameLocation":"2008:19:17","parameters":{"id":6166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6165,"indexed":false,"mutability":"mutable","name":"duration","nameLocation":"2036:8:17","nodeType":"VariableDeclaration","scope":6167,"src":"2028:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6164,"name":"uint256","nodeType":"ElementaryTypeName","src":"2028:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2027:18:17"}},{"id":6173,"nodeType":"EventDefinition","src":"2051:57:17","nodes":[],"anonymous":false,"eventSelector":"6cc67219f62a9e5d66cc9f2a62e16634cffcf48facd698a829bafcc1ad2c5c83","name":"HandlerSet","nameLocation":"2057:10:17","parameters":{"id":6172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6169,"indexed":true,"mutability":"mutable","name":"handler","nameLocation":"2084:7:17","nodeType":"VariableDeclaration","scope":6173,"src":"2068:23:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6168,"name":"address","nodeType":"ElementaryTypeName","src":"2068:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6171,"indexed":false,"mutability":"mutable","name":"isActive","nameLocation":"2098:8:17","nodeType":"VariableDeclaration","scope":6173,"src":"2093:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6170,"name":"bool","nodeType":"ElementaryTypeName","src":"2093:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2067:40:17"}},{"id":6185,"nodeType":"ModifierDefinition","src":"2118:88:17","nodes":[],"body":{"id":6184,"nodeType":"Block","src":"2137:69:17","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6175,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2151:3:17","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2155:6:17","memberName":"sender","nodeType":"MemberAccess","src":"2151:10:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6177,"name":"gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6111,"src":"2165:3:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2151:17:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6182,"nodeType":"IfStatement","src":"2147:41:17","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6179,"name":"Forbidden","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6081,"src":"2177:9:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2177:11:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6181,"nodeType":"RevertStatement","src":"2170:18:17"}},{"id":6183,"nodeType":"PlaceholderStatement","src":"2198:1:17"}]},"name":"onlyGov","nameLocation":"2127:7:17","parameters":{"id":6174,"nodeType":"ParameterList","parameters":[],"src":"2134:2:17"},"virtual":false,"visibility":"internal"},{"id":6203,"nodeType":"ModifierDefinition","src":"2216:118:17","nodes":[],"body":{"id":6202,"nodeType":"Block","src":"2239:95:17","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2253:22:17","subExpression":{"baseExpression":{"id":6187,"name":"isHandler","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6127,"src":"2254:9:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":6190,"indexExpression":{"expression":{"id":6188,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2264:3:17","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2268:6:17","memberName":"sender","nodeType":"MemberAccess","src":"2264:10:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2254:21:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6192,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2279:3:17","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2283:6:17","memberName":"sender","nodeType":"MemberAccess","src":"2279:10:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6194,"name":"gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6111,"src":"2293:3:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2279:17:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2253:43:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6200,"nodeType":"IfStatement","src":"2249:67:17","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6197,"name":"Forbidden","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6081,"src":"2305:9:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2305:11:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6199,"nodeType":"RevertStatement","src":"2298:18:17"}},{"id":6201,"nodeType":"PlaceholderStatement","src":"2326:1:17"}]},"name":"onlyHandler","nameLocation":"2225:11:17","parameters":{"id":6186,"nodeType":"ParameterList","parameters":[],"src":"2236:2:17"},"virtual":false,"visibility":"internal"},{"id":6276,"nodeType":"FunctionDefinition","src":"2562:579:17","nodes":[],"body":{"id":6275,"nodeType":"Block","src":"2716:425:17","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6217,"name":"_ytVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6206,"src":"2730:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":6220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2750:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6219,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2742:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6218,"name":"address","nodeType":"ElementaryTypeName","src":"2742:7:17","typeDescriptions":{}}},"id":6221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2742:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2730:22:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6223,"name":"_usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6208,"src":"2756:5:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":6226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2773:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6225,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2765:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6224,"name":"address","nodeType":"ElementaryTypeName","src":"2765:7:17","typeDescriptions":{}}},"id":6227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2765:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2756:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2730:45:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6230,"name":"_ytLP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6210,"src":"2779:5:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":6233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2796:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2788:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6231,"name":"address","nodeType":"ElementaryTypeName","src":"2788:7:17","typeDescriptions":{}}},"id":6234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2788:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2779:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2730:68:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6240,"nodeType":"IfStatement","src":"2726:97:17","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6237,"name":"InvalidAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6083,"src":"2807:14:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2807:16:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6239,"nodeType":"RevertStatement","src":"2800:23:17"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6241,"name":"_cooldownDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6212,"src":"2837:17:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":6242,"name":"MAX_COOLDOWN_DURATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6109,"src":"2857:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2837:41:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6247,"nodeType":"IfStatement","src":"2833:71:17","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6244,"name":"InvalidDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6085,"src":"2887:15:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2887:17:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6246,"nodeType":"RevertStatement","src":"2880:24:17"}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":6248,"name":"__ReentrancyGuard_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11697,"src":"2923:22:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":6249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2923:24:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6250,"nodeType":"ExpressionStatement","src":"2923:24:17"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":6251,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10706,"src":"2957:22:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":6252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2957:24:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6253,"nodeType":"ExpressionStatement","src":"2957:24:17"},{"expression":{"id":6257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6254,"name":"gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6111,"src":"3000:3:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":6255,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3006:3:17","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3010:6:17","memberName":"sender","nodeType":"MemberAccess","src":"3006:10:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3000:16:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6258,"nodeType":"ExpressionStatement","src":"3000:16:17"},{"expression":{"id":6261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6259,"name":"ytVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6113,"src":"3026:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6260,"name":"_ytVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6206,"src":"3036:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3026:18:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6262,"nodeType":"ExpressionStatement","src":"3026:18:17"},{"expression":{"id":6265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6263,"name":"usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6115,"src":"3054:4:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6264,"name":"_usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6208,"src":"3061:5:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3054:12:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6266,"nodeType":"ExpressionStatement","src":"3054:12:17"},{"expression":{"id":6269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6267,"name":"ytLP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"3076:4:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6268,"name":"_ytLP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6210,"src":"3083:5:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3076:12:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6270,"nodeType":"ExpressionStatement","src":"3076:12:17"},{"expression":{"id":6273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6271,"name":"cooldownDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6119,"src":"3098:16:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6272,"name":"_cooldownDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6212,"src":"3117:17:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3098:36:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6274,"nodeType":"ExpressionStatement","src":"3098:36:17"}]},"documentation":{"id":6204,"nodeType":"StructuredDocumentation","src":"2344:213:17","text":" @notice 初始化合约\n @param _ytVault YTVault合约地址\n @param _usdy USDY代币地址\n @param _ytLP ytLP代币地址\n @param _cooldownDuration 冷却时间(秒)"},"functionSelector":"cf756fdf","implemented":true,"kind":"function","modifiers":[{"id":6215,"kind":"modifierInvocation","modifierName":{"id":6214,"name":"initializer","nameLocations":["2704:11:17"],"nodeType":"IdentifierPath","referencedDeclaration":10492,"src":"2704:11:17"},"nodeType":"ModifierInvocation","src":"2704:11:17"}],"name":"initialize","nameLocation":"2571:10:17","parameters":{"id":6213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6206,"mutability":"mutable","name":"_ytVault","nameLocation":"2599:8:17","nodeType":"VariableDeclaration","scope":6276,"src":"2591:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6205,"name":"address","nodeType":"ElementaryTypeName","src":"2591:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6208,"mutability":"mutable","name":"_usdy","nameLocation":"2625:5:17","nodeType":"VariableDeclaration","scope":6276,"src":"2617:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6207,"name":"address","nodeType":"ElementaryTypeName","src":"2617:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6210,"mutability":"mutable","name":"_ytLP","nameLocation":"2648:5:17","nodeType":"VariableDeclaration","scope":6276,"src":"2640:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6209,"name":"address","nodeType":"ElementaryTypeName","src":"2640:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6212,"mutability":"mutable","name":"_cooldownDuration","nameLocation":"2671:17:17","nodeType":"VariableDeclaration","scope":6276,"src":"2663:25:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6211,"name":"uint256","nodeType":"ElementaryTypeName","src":"2663:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2581:113:17"},"returnParameters":{"id":6216,"nodeType":"ParameterList","parameters":[],"src":"2716:0:17"},"scope":6765,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":6286,"nodeType":"FunctionDefinition","src":"3270:82:17","nodes":[],"body":{"id":6285,"nodeType":"Block","src":"3350:2:17","nodes":[],"statements":[]},"baseFunctions":[10788],"documentation":{"id":6277,"nodeType":"StructuredDocumentation","src":"3151:114:17","text":" @notice 授权升级仅gov可调用\n @param newImplementation 新实现合约地址"},"implemented":true,"kind":"function","modifiers":[{"id":6283,"kind":"modifierInvocation","modifierName":{"id":6282,"name":"onlyGov","nameLocations":["3342:7:17"],"nodeType":"IdentifierPath","referencedDeclaration":6185,"src":"3342:7:17"},"nodeType":"ModifierInvocation","src":"3342:7:17"}],"name":"_authorizeUpgrade","nameLocation":"3279:17:17","overrides":{"id":6281,"nodeType":"OverrideSpecifier","overrides":[],"src":"3333:8:17"},"parameters":{"id":6280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6279,"mutability":"mutable","name":"newImplementation","nameLocation":"3305:17:17","nodeType":"VariableDeclaration","scope":6286,"src":"3297:25:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6278,"name":"address","nodeType":"ElementaryTypeName","src":"3297:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3296:27:17"},"returnParameters":{"id":6284,"nodeType":"ParameterList","parameters":[],"src":"3350:0:17"},"scope":6765,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":6308,"nodeType":"FunctionDefinition","src":"3362:131:17","nodes":[],"body":{"id":6307,"nodeType":"Block","src":"3409:84:17","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6293,"name":"_gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6288,"src":"3423:4:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":6296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3439:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6295,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3431:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6294,"name":"address","nodeType":"ElementaryTypeName","src":"3431:7:17","typeDescriptions":{}}},"id":6297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3431:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3423:18:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6302,"nodeType":"IfStatement","src":"3419:47:17","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6299,"name":"InvalidAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6083,"src":"3450:14:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3450:16:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6301,"nodeType":"RevertStatement","src":"3443:23:17"}},{"expression":{"id":6305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6303,"name":"gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6111,"src":"3476:3:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6304,"name":"_gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6288,"src":"3482:4:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3476:10:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6306,"nodeType":"ExpressionStatement","src":"3476:10:17"}]},"functionSelector":"cfad57a2","implemented":true,"kind":"function","modifiers":[{"id":6291,"kind":"modifierInvocation","modifierName":{"id":6290,"name":"onlyGov","nameLocations":["3401:7:17"],"nodeType":"IdentifierPath","referencedDeclaration":6185,"src":"3401:7:17"},"nodeType":"ModifierInvocation","src":"3401:7:17"}],"name":"setGov","nameLocation":"3371:6:17","parameters":{"id":6289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6288,"mutability":"mutable","name":"_gov","nameLocation":"3386:4:17","nodeType":"VariableDeclaration","scope":6308,"src":"3378:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6287,"name":"address","nodeType":"ElementaryTypeName","src":"3378:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3377:14:17"},"returnParameters":{"id":6292,"nodeType":"ParameterList","parameters":[],"src":"3409:0:17"},"scope":6765,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":6329,"nodeType":"FunctionDefinition","src":"3503:165:17","nodes":[],"body":{"id":6328,"nodeType":"Block","src":"3574:94:17","nodes":[],"statements":[{"expression":{"id":6321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6317,"name":"isHandler","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6127,"src":"3584:9:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":6319,"indexExpression":{"id":6318,"name":"_handler","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6310,"src":"3594:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3584:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6320,"name":"_isActive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6312,"src":"3606:9:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3584:31:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6322,"nodeType":"ExpressionStatement","src":"3584:31:17"},{"eventCall":{"arguments":[{"id":6324,"name":"_handler","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6310,"src":"3641:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6325,"name":"_isActive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6312,"src":"3651:9:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":6323,"name":"HandlerSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6173,"src":"3630:10:17","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":6326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3630:31:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6327,"nodeType":"EmitStatement","src":"3625:36:17"}]},"functionSelector":"9cb7de4b","implemented":true,"kind":"function","modifiers":[{"id":6315,"kind":"modifierInvocation","modifierName":{"id":6314,"name":"onlyGov","nameLocations":["3566:7:17"],"nodeType":"IdentifierPath","referencedDeclaration":6185,"src":"3566:7:17"},"nodeType":"ModifierInvocation","src":"3566:7:17"}],"name":"setHandler","nameLocation":"3512:10:17","parameters":{"id":6313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6310,"mutability":"mutable","name":"_handler","nameLocation":"3531:8:17","nodeType":"VariableDeclaration","scope":6329,"src":"3523:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6309,"name":"address","nodeType":"ElementaryTypeName","src":"3523:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6312,"mutability":"mutable","name":"_isActive","nameLocation":"3546:9:17","nodeType":"VariableDeclaration","scope":6329,"src":"3541:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6311,"name":"bool","nodeType":"ElementaryTypeName","src":"3541:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3522:34:17"},"returnParameters":{"id":6316,"nodeType":"ParameterList","parameters":[],"src":"3574:0:17"},"scope":6765,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":6352,"nodeType":"FunctionDefinition","src":"3678:228:17","nodes":[],"body":{"id":6351,"nodeType":"Block","src":"3743:163:17","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6336,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6331,"src":"3757:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":6337,"name":"MAX_COOLDOWN_DURATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6109,"src":"3769:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3757:33:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6342,"nodeType":"IfStatement","src":"3753:63:17","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6339,"name":"InvalidDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6085,"src":"3799:15:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3799:17:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6341,"nodeType":"RevertStatement","src":"3792:24:17"}},{"expression":{"id":6345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6343,"name":"cooldownDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6119,"src":"3826:16:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6344,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6331,"src":"3845:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3826:28:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6346,"nodeType":"ExpressionStatement","src":"3826:28:17"},{"eventCall":{"arguments":[{"id":6348,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6331,"src":"3889:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6347,"name":"CooldownDurationSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6167,"src":"3869:19:17","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":6349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3869:30:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6350,"nodeType":"EmitStatement","src":"3864:35:17"}]},"functionSelector":"966be075","implemented":true,"kind":"function","modifiers":[{"id":6334,"kind":"modifierInvocation","modifierName":{"id":6333,"name":"onlyGov","nameLocations":["3735:7:17"],"nodeType":"IdentifierPath","referencedDeclaration":6185,"src":"3735:7:17"},"nodeType":"ModifierInvocation","src":"3735:7:17"}],"name":"setCooldownDuration","nameLocation":"3687:19:17","parameters":{"id":6332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6331,"mutability":"mutable","name":"_duration","nameLocation":"3715:9:17","nodeType":"VariableDeclaration","scope":6352,"src":"3707:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6330,"name":"uint256","nodeType":"ElementaryTypeName","src":"3707:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3706:19:17"},"returnParameters":{"id":6335,"nodeType":"ParameterList","parameters":[],"src":"3743:0:17"},"scope":6765,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":6370,"nodeType":"FunctionDefinition","src":"3916:157:17","nodes":[],"body":{"id":6369,"nodeType":"Block","src":"3998:75:17","nodes":[],"statements":[{"expression":{"id":6363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6361,"name":"aumAddition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6129,"src":"4008:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6362,"name":"_addition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6354,"src":"4022:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4008:23:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6364,"nodeType":"ExpressionStatement","src":"4008:23:17"},{"expression":{"id":6367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6365,"name":"aumDeduction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6131,"src":"4041:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6366,"name":"_deduction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6356,"src":"4056:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4041:25:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6368,"nodeType":"ExpressionStatement","src":"4041:25:17"}]},"functionSelector":"9116c4ae","implemented":true,"kind":"function","modifiers":[{"id":6359,"kind":"modifierInvocation","modifierName":{"id":6358,"name":"onlyGov","nameLocations":["3990:7:17"],"nodeType":"IdentifierPath","referencedDeclaration":6185,"src":"3990:7:17"},"nodeType":"ModifierInvocation","src":"3990:7:17"}],"name":"setAumAdjustment","nameLocation":"3925:16:17","parameters":{"id":6357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6354,"mutability":"mutable","name":"_addition","nameLocation":"3950:9:17","nodeType":"VariableDeclaration","scope":6370,"src":"3942:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6353,"name":"uint256","nodeType":"ElementaryTypeName","src":"3942:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6356,"mutability":"mutable","name":"_deduction","nameLocation":"3969:10:17","nodeType":"VariableDeclaration","scope":6370,"src":"3961:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6355,"name":"uint256","nodeType":"ElementaryTypeName","src":"3961:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3941:39:17"},"returnParameters":{"id":6360,"nodeType":"ParameterList","parameters":[],"src":"3998:0:17"},"scope":6765,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":6402,"nodeType":"FunctionDefinition","src":"4164:351:17","nodes":[],"body":{"id":6401,"nodeType":"Block","src":"4414:101:17","nodes":[],"statements":[{"expression":{"arguments":[{"id":6393,"name":"_fundingAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6373,"src":"4445:15:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6394,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6375,"src":"4462:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6395,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6377,"src":"4472:6:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6396,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6379,"src":"4480:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6397,"name":"_minUsdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6381,"src":"4489:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6398,"name":"_minYtLP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6383,"src":"4499:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6392,"name":"_addLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"4431:13:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,address,uint256,uint256,uint256) returns (uint256)"}},"id":6399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4431:77:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6391,"id":6400,"nodeType":"Return","src":"4424:84:17"}]},"documentation":{"id":6371,"nodeType":"StructuredDocumentation","src":"4083:76:17","text":" @notice 为指定账户添加流动性Handler调用"},"functionSelector":"17eb2a15","implemented":true,"kind":"function","modifiers":[{"id":6386,"kind":"modifierInvocation","modifierName":{"id":6385,"name":"onlyHandler","nameLocations":["4371:11:17"],"nodeType":"IdentifierPath","referencedDeclaration":6203,"src":"4371:11:17"},"nodeType":"ModifierInvocation","src":"4371:11:17"},{"id":6388,"kind":"modifierInvocation","modifierName":{"id":6387,"name":"nonReentrant","nameLocations":["4383:12:17"],"nodeType":"IdentifierPath","referencedDeclaration":11726,"src":"4383:12:17"},"nodeType":"ModifierInvocation","src":"4383:12:17"}],"name":"addLiquidityForAccount","nameLocation":"4173:22:17","parameters":{"id":6384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6373,"mutability":"mutable","name":"_fundingAccount","nameLocation":"4213:15:17","nodeType":"VariableDeclaration","scope":6402,"src":"4205:23:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6372,"name":"address","nodeType":"ElementaryTypeName","src":"4205:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6375,"mutability":"mutable","name":"_account","nameLocation":"4246:8:17","nodeType":"VariableDeclaration","scope":6402,"src":"4238:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6374,"name":"address","nodeType":"ElementaryTypeName","src":"4238:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6377,"mutability":"mutable","name":"_token","nameLocation":"4272:6:17","nodeType":"VariableDeclaration","scope":6402,"src":"4264:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6376,"name":"address","nodeType":"ElementaryTypeName","src":"4264:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6379,"mutability":"mutable","name":"_amount","nameLocation":"4296:7:17","nodeType":"VariableDeclaration","scope":6402,"src":"4288:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6378,"name":"uint256","nodeType":"ElementaryTypeName","src":"4288:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6381,"mutability":"mutable","name":"_minUsdy","nameLocation":"4321:8:17","nodeType":"VariableDeclaration","scope":6402,"src":"4313:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6380,"name":"uint256","nodeType":"ElementaryTypeName","src":"4313:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6383,"mutability":"mutable","name":"_minYtLP","nameLocation":"4347:8:17","nodeType":"VariableDeclaration","scope":6402,"src":"4339:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6382,"name":"uint256","nodeType":"ElementaryTypeName","src":"4339:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4195:166:17"},"returnParameters":{"id":6391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6402,"src":"4405:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6389,"name":"uint256","nodeType":"ElementaryTypeName","src":"4405:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4404:9:17"},"scope":6765,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":6525,"nodeType":"FunctionDefinition","src":"4525:1138:17","nodes":[],"body":{"id":6524,"nodeType":"Block","src":"4740:923:17","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6419,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6410,"src":"4754:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4765:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4754:12:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6425,"nodeType":"IfStatement","src":"4750:40:17","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6422,"name":"InvalidAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6089,"src":"4775:13:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4775:15:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6424,"nodeType":"RevertStatement","src":"4768:22:17"}},{"assignments":[6427],"declarations":[{"constant":false,"id":6427,"mutability":"mutable","name":"aumInUsdy","nameLocation":"4817:9:17","nodeType":"VariableDeclaration","scope":6524,"src":"4809:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6426,"name":"uint256","nodeType":"ElementaryTypeName","src":"4809:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6431,"initialValue":{"arguments":[{"hexValue":"74727565","id":6429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4842:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":6428,"name":"getAumInUsdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6759,"src":"4829:12:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) view returns (uint256)"}},"id":6430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4829:18:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4809:38:17"},{"assignments":[6433],"declarations":[{"constant":false,"id":6433,"mutability":"mutable","name":"ytLPSupply","nameLocation":"4865:10:17","nodeType":"VariableDeclaration","scope":6524,"src":"4857:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6432,"name":"uint256","nodeType":"ElementaryTypeName","src":"4857:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6439,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6435,"name":"ytLP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"4885:4:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6434,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"4878:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":6436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4878:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":6437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4891:11:17","memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":12597,"src":"4878:24:17","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":6438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4878:26:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4857:47:17"},{"expression":{"arguments":[{"id":6444,"name":"_fundingAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6404,"src":"4955:15:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6445,"name":"ytVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6113,"src":"4972:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6446,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6410,"src":"4981:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":6441,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6408,"src":"4930:6:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6440,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"4923:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":6442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4923:14:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":6443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4938:16:17","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":12746,"src":"4923:31:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$12648_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":6447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4923:66:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6448,"nodeType":"ExpressionStatement","src":"4923:66:17"},{"assignments":[6450],"declarations":[{"constant":false,"id":6450,"mutability":"mutable","name":"usdyAmount","nameLocation":"5007:10:17","nodeType":"VariableDeclaration","scope":6524,"src":"4999:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6449,"name":"uint256","nodeType":"ElementaryTypeName","src":"4999:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6461,"initialValue":{"arguments":[{"id":6455,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6408,"src":"5046:6:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":6458,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5062:4:17","typeDescriptions":{"typeIdentifier":"t_contract$_YTPoolManager_$6765","typeString":"contract YTPoolManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_YTPoolManager_$6765","typeString":"contract YTPoolManager"}],"id":6457,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5054:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6456,"name":"address","nodeType":"ElementaryTypeName","src":"5054:7:17","typeDescriptions":{}}},"id":6459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5054:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":6452,"name":"ytVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6113,"src":"5029:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6451,"name":"IYTVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":434,"src":"5020:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IYTVault_$434_$","typeString":"type(contract IYTVault)"}},"id":6453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5020:17:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IYTVault_$434","typeString":"contract IYTVault"}},"id":6454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5038:7:17","memberName":"buyUSDY","nodeType":"MemberAccess","referencedDeclaration":363,"src":"5020:25:17","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) external returns (uint256)"}},"id":6460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5020:48:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4999:69:17"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6462,"name":"usdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6450,"src":"5082:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6463,"name":"_minUsdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6412,"src":"5095:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5082:21:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6468,"nodeType":"IfStatement","src":"5078:54:17","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6465,"name":"InsufficientOutput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6091,"src":"5112:18:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5112:20:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6467,"nodeType":"RevertStatement","src":"5105:27:17"}},{"assignments":[6470],"declarations":[{"constant":false,"id":6470,"mutability":"mutable","name":"mintAmount","nameLocation":"5159:10:17","nodeType":"VariableDeclaration","scope":6524,"src":"5151:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6469,"name":"uint256","nodeType":"ElementaryTypeName","src":"5151:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6471,"nodeType":"VariableDeclarationStatement","src":"5151:18:17"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6472,"name":"ytLPSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6433,"src":"5183:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5197:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5183:15:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6488,"nodeType":"Block","src":"5254:73:17","statements":[{"expression":{"id":6486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6480,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6470,"src":"5268:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6481,"name":"usdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6450,"src":"5281:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6482,"name":"ytLPSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6433,"src":"5294:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5281:23:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6484,"name":"aumInUsdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6427,"src":"5307:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5281:35:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5268:48:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6487,"nodeType":"ExpressionStatement","src":"5268:48:17"}]},"id":6489,"nodeType":"IfStatement","src":"5179:148:17","trueBody":{"id":6479,"nodeType":"Block","src":"5200:48:17","statements":[{"expression":{"id":6477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6475,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6470,"src":"5214:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6476,"name":"usdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6450,"src":"5227:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5214:23:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6478,"nodeType":"ExpressionStatement","src":"5214:23:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6490,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6470,"src":"5349:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6491,"name":"_minYtLP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6414,"src":"5362:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5349:21:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6496,"nodeType":"IfStatement","src":"5345:54:17","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6493,"name":"InsufficientOutput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6091,"src":"5379:18:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5379:20:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6495,"nodeType":"RevertStatement","src":"5372:27:17"}},{"expression":{"arguments":[{"id":6501,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6406,"src":"5440:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6502,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6470,"src":"5450:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":6498,"name":"ytLP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"5429:4:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6497,"name":"IYTLPToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"5418:10:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IYTLPToken_$285_$","typeString":"type(contract IYTLPToken)"}},"id":6499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5418:16:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IYTLPToken_$285","typeString":"contract IYTLPToken"}},"id":6500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5435:4:17","memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":277,"src":"5418:21:17","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":6503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5418:43:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6504,"nodeType":"ExpressionStatement","src":"5418:43:17"},{"expression":{"id":6510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6505,"name":"lastAddedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6123,"src":"5471:11:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6507,"indexExpression":{"id":6506,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6406,"src":"5483:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5471:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":6508,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5495:5:17","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":6509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5501:9:17","memberName":"timestamp","nodeType":"MemberAccess","src":"5495:15:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5471:39:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6511,"nodeType":"ExpressionStatement","src":"5471:39:17"},{"eventCall":{"arguments":[{"id":6513,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6406,"src":"5547:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6514,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6408,"src":"5557:6:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6515,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6410,"src":"5565:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6516,"name":"aumInUsdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6427,"src":"5574:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6517,"name":"ytLPSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6433,"src":"5585:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6518,"name":"usdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6450,"src":"5597:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6519,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6470,"src":"5609:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6512,"name":"AddLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6147,"src":"5534:12:17","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256,uint256,uint256,uint256)"}},"id":6520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5534:86:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6521,"nodeType":"EmitStatement","src":"5529:91:17"},{"expression":{"id":6522,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6470,"src":"5646:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6418,"id":6523,"nodeType":"Return","src":"5639:17:17"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_addLiquidity","nameLocation":"4534:13:17","parameters":{"id":6415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6404,"mutability":"mutable","name":"_fundingAccount","nameLocation":"4565:15:17","nodeType":"VariableDeclaration","scope":6525,"src":"4557:23:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6403,"name":"address","nodeType":"ElementaryTypeName","src":"4557:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6406,"mutability":"mutable","name":"_account","nameLocation":"4598:8:17","nodeType":"VariableDeclaration","scope":6525,"src":"4590:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6405,"name":"address","nodeType":"ElementaryTypeName","src":"4590:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6408,"mutability":"mutable","name":"_token","nameLocation":"4624:6:17","nodeType":"VariableDeclaration","scope":6525,"src":"4616:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6407,"name":"address","nodeType":"ElementaryTypeName","src":"4616:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6410,"mutability":"mutable","name":"_amount","nameLocation":"4648:7:17","nodeType":"VariableDeclaration","scope":6525,"src":"4640:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6409,"name":"uint256","nodeType":"ElementaryTypeName","src":"4640:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6412,"mutability":"mutable","name":"_minUsdy","nameLocation":"4673:8:17","nodeType":"VariableDeclaration","scope":6525,"src":"4665:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6411,"name":"uint256","nodeType":"ElementaryTypeName","src":"4665:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6414,"mutability":"mutable","name":"_minYtLP","nameLocation":"4699:8:17","nodeType":"VariableDeclaration","scope":6525,"src":"4691:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6413,"name":"uint256","nodeType":"ElementaryTypeName","src":"4691:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4547:166:17"},"returnParameters":{"id":6418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6417,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6525,"src":"4731:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6416,"name":"uint256","nodeType":"ElementaryTypeName","src":"4731:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4730:9:17"},"scope":6765,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":6554,"nodeType":"FunctionDefinition","src":"5754:321:17","nodes":[],"body":{"id":6553,"nodeType":"Block","src":"5981:94:17","nodes":[],"statements":[{"expression":{"arguments":[{"id":6546,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6528,"src":"6015:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6547,"name":"_tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6530,"src":"6025:9:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6548,"name":"_ytLPAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6532,"src":"6036:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6549,"name":"_minOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6534,"src":"6049:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6550,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6536,"src":"6058:9:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":6545,"name":"_removeLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6686,"src":"5998:16:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address,uint256,uint256,address) returns (uint256)"}},"id":6551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5998:70:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6544,"id":6552,"nodeType":"Return","src":"5991:77:17"}]},"documentation":{"id":6526,"nodeType":"StructuredDocumentation","src":"5673:76:17","text":" @notice 为指定账户移除流动性Handler调用"},"functionSelector":"71d597ad","implemented":true,"kind":"function","modifiers":[{"id":6539,"kind":"modifierInvocation","modifierName":{"id":6538,"name":"onlyHandler","nameLocations":["5938:11:17"],"nodeType":"IdentifierPath","referencedDeclaration":6203,"src":"5938:11:17"},"nodeType":"ModifierInvocation","src":"5938:11:17"},{"id":6541,"kind":"modifierInvocation","modifierName":{"id":6540,"name":"nonReentrant","nameLocations":["5950:12:17"],"nodeType":"IdentifierPath","referencedDeclaration":11726,"src":"5950:12:17"},"nodeType":"ModifierInvocation","src":"5950:12:17"}],"name":"removeLiquidityForAccount","nameLocation":"5763:25:17","parameters":{"id":6537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6528,"mutability":"mutable","name":"_account","nameLocation":"5806:8:17","nodeType":"VariableDeclaration","scope":6554,"src":"5798:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6527,"name":"address","nodeType":"ElementaryTypeName","src":"5798:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6530,"mutability":"mutable","name":"_tokenOut","nameLocation":"5832:9:17","nodeType":"VariableDeclaration","scope":6554,"src":"5824:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6529,"name":"address","nodeType":"ElementaryTypeName","src":"5824:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6532,"mutability":"mutable","name":"_ytLPAmount","nameLocation":"5859:11:17","nodeType":"VariableDeclaration","scope":6554,"src":"5851:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6531,"name":"uint256","nodeType":"ElementaryTypeName","src":"5851:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6534,"mutability":"mutable","name":"_minOut","nameLocation":"5888:7:17","nodeType":"VariableDeclaration","scope":6554,"src":"5880:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6533,"name":"uint256","nodeType":"ElementaryTypeName","src":"5880:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6536,"mutability":"mutable","name":"_receiver","nameLocation":"5913:9:17","nodeType":"VariableDeclaration","scope":6554,"src":"5905:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6535,"name":"address","nodeType":"ElementaryTypeName","src":"5905:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5788:140:17"},"returnParameters":{"id":6544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6543,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6554,"src":"5972:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6542,"name":"uint256","nodeType":"ElementaryTypeName","src":"5972:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5971:9:17"},"scope":6765,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":6686,"nodeType":"FunctionDefinition","src":"6085:1301:17","nodes":[],"body":{"id":6685,"nodeType":"Block","src":"6277:1109:17","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6569,"name":"_ytLPAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6560,"src":"6291:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6306:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6291:16:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6575,"nodeType":"IfStatement","src":"6287:44:17","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6572,"name":"InvalidAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6089,"src":"6316:13:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6316:15:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6574,"nodeType":"RevertStatement","src":"6309:22:17"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":6576,"name":"lastAddedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6123,"src":"6354:11:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6578,"indexExpression":{"id":6577,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6556,"src":"6366:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6354:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":6579,"name":"cooldownDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6119,"src":"6378:16:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6354:40:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":6581,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"6397:5:17","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":6582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6403:9:17","memberName":"timestamp","nodeType":"MemberAccess","src":"6397:15:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6354:58:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6587,"nodeType":"IfStatement","src":"6350:90:17","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6584,"name":"CooldownNotPassed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6093,"src":"6421:17:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6421:19:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6586,"nodeType":"RevertStatement","src":"6414:26:17"}},{"assignments":[6589],"declarations":[{"constant":false,"id":6589,"mutability":"mutable","name":"aumInUsdy","nameLocation":"6467:9:17","nodeType":"VariableDeclaration","scope":6685,"src":"6459:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6588,"name":"uint256","nodeType":"ElementaryTypeName","src":"6459:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6593,"initialValue":{"arguments":[{"hexValue":"66616c7365","id":6591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6492:5:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":6590,"name":"getAumInUsdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6759,"src":"6479:12:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) view returns (uint256)"}},"id":6592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6479:19:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6459:39:17"},{"assignments":[6595],"declarations":[{"constant":false,"id":6595,"mutability":"mutable","name":"ytLPSupply","nameLocation":"6516:10:17","nodeType":"VariableDeclaration","scope":6685,"src":"6508:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6594,"name":"uint256","nodeType":"ElementaryTypeName","src":"6508:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6601,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6597,"name":"ytLP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"6536:4:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6596,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"6529:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":6598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6529:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":6599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6542:11:17","memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":12597,"src":"6529:24:17","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":6600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6529:26:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6508:47:17"},{"assignments":[6603],"declarations":[{"constant":false,"id":6603,"mutability":"mutable","name":"usdyAmount","nameLocation":"6582:10:17","nodeType":"VariableDeclaration","scope":6685,"src":"6574:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6602,"name":"uint256","nodeType":"ElementaryTypeName","src":"6574:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6609,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6604,"name":"_ytLPAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6560,"src":"6595:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6605,"name":"aumInUsdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6589,"src":"6609:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6595:23:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6607,"name":"ytLPSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6595,"src":"6621:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6595:36:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6574:57:17"},{"expression":{"arguments":[{"id":6614,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6556,"src":"6697:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6615,"name":"_ytLPAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6560,"src":"6707:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":6611,"name":"ytLP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"6686:4:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6610,"name":"IYTLPToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"6675:10:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IYTLPToken_$285_$","typeString":"type(contract IYTLPToken)"}},"id":6612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6675:16:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IYTLPToken_$285","typeString":"contract IYTLPToken"}},"id":6613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6692:4:17","memberName":"burn","nodeType":"MemberAccess","referencedDeclaration":284,"src":"6675:21:17","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":6616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6675:44:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6617,"nodeType":"ExpressionStatement","src":"6675:44:17"},{"assignments":[6619],"declarations":[{"constant":false,"id":6619,"mutability":"mutable","name":"usdyBalance","nameLocation":"6794:11:17","nodeType":"VariableDeclaration","scope":6685,"src":"6786:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6618,"name":"uint256","nodeType":"ElementaryTypeName","src":"6786:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6629,"initialValue":{"arguments":[{"arguments":[{"id":6626,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6839:4:17","typeDescriptions":{"typeIdentifier":"t_contract$_YTPoolManager_$6765","typeString":"contract YTPoolManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_YTPoolManager_$6765","typeString":"contract YTPoolManager"}],"id":6625,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6831:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6624,"name":"address","nodeType":"ElementaryTypeName","src":"6831:7:17","typeDescriptions":{}}},"id":6627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6831:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":6621,"name":"usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6115,"src":"6815:4:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6620,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"6808:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":6622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6808:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":6623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6821:9:17","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":12605,"src":"6808:22:17","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":6628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6808:37:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6786:59:17"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6630,"name":"usdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6603,"src":"6859:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":6631,"name":"usdyBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6619,"src":"6872:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6859:24:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6647,"nodeType":"IfStatement","src":"6855:112:17","trueBody":{"id":6646,"nodeType":"Block","src":"6885:82:17","statements":[{"expression":{"arguments":[{"arguments":[{"id":6639,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6924:4:17","typeDescriptions":{"typeIdentifier":"t_contract$_YTPoolManager_$6765","typeString":"contract YTPoolManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_YTPoolManager_$6765","typeString":"contract YTPoolManager"}],"id":6638,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6916:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6637,"name":"address","nodeType":"ElementaryTypeName","src":"6916:7:17","typeDescriptions":{}}},"id":6640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6916:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6641,"name":"usdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6603,"src":"6931:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6642,"name":"usdyBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6619,"src":"6944:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6931:24:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":6634,"name":"usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6115,"src":"6905:4:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6633,"name":"IUSDY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":268,"src":"6899:5:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IUSDY_$268_$","typeString":"type(contract IUSDY)"}},"id":6635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6899:11:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IUSDY_$268","typeString":"contract IUSDY"}},"id":6636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6911:4:17","memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":255,"src":"6899:16:17","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":6644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6899:57:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6645,"nodeType":"ExpressionStatement","src":"6899:57:17"}]}},{"expression":{"arguments":[{"id":6652,"name":"ytVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6113,"src":"7056:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6653,"name":"usdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6603,"src":"7065:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":6649,"name":"usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6115,"src":"7037:4:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6648,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"7030:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":6650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7030:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":6651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7043:12:17","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":12719,"src":"7030:25:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$12648_$","typeString":"function (contract IERC20,address,uint256)"}},"id":6654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7030:46:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6655,"nodeType":"ExpressionStatement","src":"7030:46:17"},{"assignments":[6657],"declarations":[{"constant":false,"id":6657,"mutability":"mutable","name":"amountOut","nameLocation":"7094:9:17","nodeType":"VariableDeclaration","scope":6685,"src":"7086:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6656,"name":"uint256","nodeType":"ElementaryTypeName","src":"7086:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6665,"initialValue":{"arguments":[{"id":6662,"name":"_tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6558,"src":"7133:9:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6663,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6564,"src":"7144:9:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":6659,"name":"ytVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6113,"src":"7115:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6658,"name":"IYTVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":434,"src":"7106:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IYTVault_$434_$","typeString":"type(contract IYTVault)"}},"id":6660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7106:17:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IYTVault_$434","typeString":"contract IYTVault"}},"id":6661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7124:8:17","memberName":"sellUSDY","nodeType":"MemberAccess","referencedDeclaration":372,"src":"7106:26:17","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) external returns (uint256)"}},"id":6664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7106:48:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7086:68:17"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6666,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6657,"src":"7177:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6667,"name":"_minOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6562,"src":"7189:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7177:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6672,"nodeType":"IfStatement","src":"7173:52:17","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6669,"name":"InsufficientOutput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6091,"src":"7205:18:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7205:20:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6671,"nodeType":"RevertStatement","src":"7198:27:17"}},{"eventCall":{"arguments":[{"id":6674,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6556,"src":"7265:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6675,"name":"_tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6558,"src":"7275:9:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6676,"name":"_ytLPAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6560,"src":"7286:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6677,"name":"aumInUsdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6589,"src":"7299:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6678,"name":"ytLPSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6595,"src":"7310:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6679,"name":"usdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6603,"src":"7322:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6680,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6657,"src":"7334:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6673,"name":"RemoveLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6163,"src":"7249:15:17","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256,uint256,uint256,uint256)"}},"id":6681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7249:95:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6682,"nodeType":"EmitStatement","src":"7244:100:17"},{"expression":{"id":6683,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6657,"src":"7370:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6568,"id":6684,"nodeType":"Return","src":"7363:16:17"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_removeLiquidity","nameLocation":"6094:16:17","parameters":{"id":6565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6556,"mutability":"mutable","name":"_account","nameLocation":"6128:8:17","nodeType":"VariableDeclaration","scope":6686,"src":"6120:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6555,"name":"address","nodeType":"ElementaryTypeName","src":"6120:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6558,"mutability":"mutable","name":"_tokenOut","nameLocation":"6154:9:17","nodeType":"VariableDeclaration","scope":6686,"src":"6146:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6557,"name":"address","nodeType":"ElementaryTypeName","src":"6146:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6560,"mutability":"mutable","name":"_ytLPAmount","nameLocation":"6181:11:17","nodeType":"VariableDeclaration","scope":6686,"src":"6173:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6559,"name":"uint256","nodeType":"ElementaryTypeName","src":"6173:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6562,"mutability":"mutable","name":"_minOut","nameLocation":"6210:7:17","nodeType":"VariableDeclaration","scope":6686,"src":"6202:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6561,"name":"uint256","nodeType":"ElementaryTypeName","src":"6202:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6564,"mutability":"mutable","name":"_receiver","nameLocation":"6235:9:17","nodeType":"VariableDeclaration","scope":6686,"src":"6227:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6563,"name":"address","nodeType":"ElementaryTypeName","src":"6227:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6110:140:17"},"returnParameters":{"id":6568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6567,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6686,"src":"6268:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6566,"name":"uint256","nodeType":"ElementaryTypeName","src":"6268:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6267:9:17"},"scope":6765,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":6721,"nodeType":"FunctionDefinition","src":"7530:285:17","nodes":[],"body":{"id":6720,"nodeType":"Block","src":"7596:219:17","nodes":[],"statements":[{"assignments":[6695],"declarations":[{"constant":false,"id":6695,"mutability":"mutable","name":"aum","nameLocation":"7614:3:17","nodeType":"VariableDeclaration","scope":6720,"src":"7606:11:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6694,"name":"uint256","nodeType":"ElementaryTypeName","src":"7606:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6699,"initialValue":{"arguments":[{"id":6697,"name":"_maximise","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6689,"src":"7633:9:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":6696,"name":"getAumInUsdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6759,"src":"7620:12:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) view returns (uint256)"}},"id":6698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7620:23:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7606:37:17"},{"assignments":[6701],"declarations":[{"constant":false,"id":6701,"mutability":"mutable","name":"supply","nameLocation":"7661:6:17","nodeType":"VariableDeclaration","scope":6720,"src":"7653:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6700,"name":"uint256","nodeType":"ElementaryTypeName","src":"7653:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6707,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6703,"name":"ytLP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"7677:4:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6702,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"7670:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":6704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7670:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":6705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7683:11:17","memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":12597,"src":"7670:24:17","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":6706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7670:26:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7653:43:17"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6708,"name":"supply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6701,"src":"7719:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7729:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7719:11:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6713,"nodeType":"IfStatement","src":"7715:38:17","trueBody":{"expression":{"id":6711,"name":"YTLP_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6103,"src":"7739:14:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6693,"id":6712,"nodeType":"Return","src":"7732:21:17"}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6714,"name":"aum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6695,"src":"7779:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6715,"name":"YTLP_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6103,"src":"7785:14:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7779:20:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6717,"name":"supply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6701,"src":"7802:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7779:29:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6693,"id":6719,"nodeType":"Return","src":"7772:36:17"}]},"documentation":{"id":6687,"nodeType":"StructuredDocumentation","src":"7396:129:17","text":" @notice 获取ytLP价格\n @param _maximise 是否取最大值\n @return ytLP价格18位精度"},"functionSelector":"e245b5af","implemented":true,"kind":"function","modifiers":[],"name":"getPrice","nameLocation":"7539:8:17","parameters":{"id":6690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6689,"mutability":"mutable","name":"_maximise","nameLocation":"7553:9:17","nodeType":"VariableDeclaration","scope":6721,"src":"7548:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6688,"name":"bool","nodeType":"ElementaryTypeName","src":"7548:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7547:16:17"},"returnParameters":{"id":6693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6692,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6721,"src":"7587:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6691,"name":"uint256","nodeType":"ElementaryTypeName","src":"7587:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7586:9:17"},"scope":6765,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":6759,"nodeType":"FunctionDefinition","src":"8039:321:17","nodes":[],"body":{"id":6758,"nodeType":"Block","src":"8107:253:17","nodes":[],"statements":[{"assignments":[6730],"declarations":[{"constant":false,"id":6730,"mutability":"mutable","name":"aum","nameLocation":"8125:3:17","nodeType":"VariableDeclaration","scope":6758,"src":"8117:11:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6729,"name":"uint256","nodeType":"ElementaryTypeName","src":"8117:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6737,"initialValue":{"arguments":[{"id":6735,"name":"_maximise","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6724,"src":"8162:9:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[{"id":6732,"name":"ytVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6113,"src":"8140:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6731,"name":"IYTVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":434,"src":"8131:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IYTVault_$434_$","typeString":"type(contract IYTVault)"}},"id":6733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8131:17:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IYTVault_$434","typeString":"contract IYTVault"}},"id":6734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8149:12:17","memberName":"getPoolValue","nodeType":"MemberAccess","referencedDeclaration":390,"src":"8131:30:17","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) view external returns (uint256)"}},"id":6736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8131:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8117:55:17"},{"expression":{"id":6740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6738,"name":"aum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6730,"src":"8191:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6739,"name":"aumAddition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6129,"src":"8198:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8191:18:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6741,"nodeType":"ExpressionStatement","src":"8191:18:17"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6742,"name":"aum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6730,"src":"8223:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":6743,"name":"aumDeduction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6131,"src":"8229:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8223:18:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6754,"nodeType":"Block","src":"8293:32:17","statements":[{"expression":{"id":6752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6750,"name":"aum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6730,"src":"8307:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":6751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8313:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8307:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6753,"nodeType":"ExpressionStatement","src":"8307:7:17"}]},"id":6755,"nodeType":"IfStatement","src":"8219:106:17","trueBody":{"id":6749,"nodeType":"Block","src":"8243:44:17","statements":[{"expression":{"id":6747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6745,"name":"aum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6730,"src":"8257:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":6746,"name":"aumDeduction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6131,"src":"8264:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8257:19:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6748,"nodeType":"ExpressionStatement","src":"8257:19:17"}]}},{"expression":{"id":6756,"name":"aum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6730,"src":"8350:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6728,"id":6757,"nodeType":"Return","src":"8343:10:17"}]},"documentation":{"id":6722,"nodeType":"StructuredDocumentation","src":"7825:209:17","text":" @notice 获取池子总价值AUM\n @param _maximise true=使用最大价格(添加流动性时), false=使用最小价格(移除流动性时)\n @return USDY计价的总价值"},"functionSelector":"cef6ef27","implemented":true,"kind":"function","modifiers":[],"name":"getAumInUsdy","nameLocation":"8048:12:17","parameters":{"id":6725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6724,"mutability":"mutable","name":"_maximise","nameLocation":"8066:9:17","nodeType":"VariableDeclaration","scope":6759,"src":"8061:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6723,"name":"bool","nodeType":"ElementaryTypeName","src":"8061:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8060:16:17"},"returnParameters":{"id":6728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6727,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6759,"src":"8098:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6726,"name":"uint256","nodeType":"ElementaryTypeName","src":"8098:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8097:9:17"},"scope":6765,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":6764,"nodeType":"VariableDeclaration","src":"8511:25:17","nodes":[],"constant":false,"documentation":{"id":6760,"nodeType":"StructuredDocumentation","src":"8370:136:17","text":" @dev 预留存储空间,用于未来升级时添加新的状态变量\n 50个slot = 50 * 32 bytes = 1600 bytes"},"mutability":"mutable","name":"__gap","nameLocation":"8531:5:17","scope":6765,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":6761,"name":"uint256","nodeType":"ElementaryTypeName","src":"8511:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6763,"length":{"hexValue":"3530","id":6762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8519:2:17","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"8511:11:17","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":6070,"name":"Initializable","nameLocations":["681:13:17"],"nodeType":"IdentifierPath","referencedDeclaration":10652,"src":"681:13:17"},"id":6071,"nodeType":"InheritanceSpecifier","src":"681:13:17"},{"baseName":{"id":6072,"name":"UUPSUpgradeable","nameLocations":["696:15:17"],"nodeType":"IdentifierPath","referencedDeclaration":10834,"src":"696:15:17"},"id":6073,"nodeType":"InheritanceSpecifier","src":"696:15:17"},{"baseName":{"id":6074,"name":"ReentrancyGuardUpgradeable","nameLocations":["713:26:17"],"nodeType":"IdentifierPath","referencedDeclaration":11786,"src":"713:26:17"},"id":6075,"nodeType":"InheritanceSpecifier","src":"713:26:17"}],"canonicalName":"YTPoolManager","contractDependencies":[],"contractKind":"contract","documentation":{"id":6069,"nodeType":"StructuredDocumentation","src":"537:117:17","text":" @title YTPoolManager\n @notice 管理ytLP的铸造和赎回计算池子AUM\n @dev UUPS可升级合约"},"fullyImplemented":true,"linearizedBaseContracts":[6765,11786,10834,12055,10652],"name":"YTPoolManager","nameLocation":"664:13:17","scope":6766,"usedErrors":[6081,6083,6085,6087,6089,6091,6093,10401,10404,10679,10684,11688,12250,12263,12686,13148,13441],"usedEvents":[6147,6163,6167,6173,10409,12028]}],"license":"MIT"}},"contracts/ytLp/core/YTPriceFeed.sol":{"id":18,"ast":{"absolutePath":"contracts/ytLp/core/YTPriceFeed.sol","id":7471,"exportedSymbols":{"ERC1967Utils":[12524],"IERC1822Proxiable":[12055],"IYTToken":[352],"Initializable":[10652],"UUPSUpgradeable":[10834],"YTPriceFeed":[7470]},"nodeType":"SourceUnit","src":"32:10637:18","nodes":[{"id":6767,"nodeType":"PragmaDirective","src":"32:23:18","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":6768,"nodeType":"ImportDirective","src":"57:75:18","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":7471,"sourceUnit":10653,"symbolAliases":[],"unitAlias":""},{"id":6769,"nodeType":"ImportDirective","src":"133:77:18","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":7471,"sourceUnit":10835,"symbolAliases":[],"unitAlias":""},{"id":6770,"nodeType":"ImportDirective","src":"211:39:18","nodes":[],"absolutePath":"contracts/interfaces/IYTToken.sol","file":"../../interfaces/IYTToken.sol","nameLocation":"-1:-1:-1","scope":7471,"sourceUnit":353,"symbolAliases":[],"unitAlias":""},{"id":7470,"nodeType":"ContractDefinition","src":"405:10263:18","nodes":[{"id":6777,"nodeType":"ErrorDefinition","src":"467:18:18","nodes":[],"errorSelector":"ee90c468","name":"Forbidden","nameLocation":"473:9:18","parameters":{"id":6776,"nodeType":"ParameterList","parameters":[],"src":"482:2:18"}},{"id":6779,"nodeType":"ErrorDefinition","src":"490:25:18","nodes":[],"errorSelector":"594ddbd4","name":"MaxChangeTooHigh","nameLocation":"496:16:18","parameters":{"id":6778,"nodeType":"ParameterList","parameters":[],"src":"512:2:18"}},{"id":6781,"nodeType":"ErrorDefinition","src":"520:28:18","nodes":[],"errorSelector":"a8eb64ed","name":"PriceChangeTooLarge","nameLocation":"526:19:18","parameters":{"id":6780,"nodeType":"ParameterList","parameters":[],"src":"545:2:18"}},{"id":6783,"nodeType":"ErrorDefinition","src":"553:22:18","nodes":[],"errorSelector":"9821c0c9","name":"SpreadTooHigh","nameLocation":"559:13:18","parameters":{"id":6782,"nodeType":"ParameterList","parameters":[],"src":"572:2:18"}},{"id":6785,"nodeType":"ErrorDefinition","src":"580:23:18","nodes":[],"errorSelector":"e6c4247b","name":"InvalidAddress","nameLocation":"586:14:18","parameters":{"id":6784,"nodeType":"ParameterList","parameters":[],"src":"600:2:18"}},{"id":6787,"nodeType":"VariableDeclaration","src":"613:18:18","nodes":[],"constant":false,"functionSelector":"12d43a51","mutability":"mutable","name":"gov","nameLocation":"628:3:18","scope":7470,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6786,"name":"address","nodeType":"ElementaryTypeName","src":"613:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":6792,"nodeType":"VariableDeclaration","src":"642:50:18","nodes":[],"constant":true,"functionSelector":"95082d25","mutability":"constant","name":"PRICE_PRECISION","nameLocation":"666:15:18","scope":7470,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6788,"name":"uint256","nodeType":"ElementaryTypeName","src":"642:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_1000000000000000000000000000000_by_1","typeString":"int_const 1000000000000000000000000000000"},"id":6791,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":6789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"684:2:18","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3330","id":6790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"690:2:18","typeDescriptions":{"typeIdentifier":"t_rational_30_by_1","typeString":"int_const 30"},"value":"30"},"src":"684:8:18","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000000000000000_by_1","typeString":"int_const 1000000000000000000000000000000"}},"visibility":"public"},{"id":6795,"nodeType":"VariableDeclaration","src":"698:52:18","nodes":[],"constant":true,"functionSelector":"126082cf","mutability":"constant","name":"BASIS_POINTS_DIVISOR","nameLocation":"722:20:18","scope":7470,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6793,"name":"uint256","nodeType":"ElementaryTypeName","src":"698:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3130303030","id":6794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"745:5:18","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"visibility":"public"},{"id":6798,"nodeType":"VariableDeclaration","src":"756:53:18","nodes":[],"constant":true,"functionSelector":"0957aed9","mutability":"constant","name":"MAX_SPREAD_BASIS_POINTS","nameLocation":"780:23:18","scope":7470,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6796,"name":"uint256","nodeType":"ElementaryTypeName","src":"756:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323030","id":6797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"806:3:18","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},"visibility":"public"},{"id":6800,"nodeType":"VariableDeclaration","src":"862:26:18","nodes":[],"constant":false,"functionSelector":"c62db206","mutability":"mutable","name":"wusdAddress","nameLocation":"877:11:18","scope":7470,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6799,"name":"address","nodeType":"ElementaryTypeName","src":"862:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":6802,"nodeType":"VariableDeclaration","src":"923:30:18","nodes":[],"constant":false,"functionSelector":"4d343496","mutability":"mutable","name":"wusdPriceSource","nameLocation":"938:15:18","scope":7470,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6801,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":6804,"nodeType":"VariableDeclaration","src":"990:32:18","nodes":[],"constant":false,"functionSelector":"697cd71a","mutability":"mutable","name":"maxPriceChangeBps","nameLocation":"1005:17:18","scope":7470,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6803,"name":"uint256","nodeType":"ElementaryTypeName","src":"990:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":6808,"nodeType":"VariableDeclaration","src":"1120:52:18","nodes":[],"constant":false,"functionSelector":"a27ea386","mutability":"mutable","name":"spreadBasisPoints","nameLocation":"1155:17:18","scope":7470,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":6807,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":6805,"name":"address","nodeType":"ElementaryTypeName","src":"1128:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1120:27:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":6806,"name":"uint256","nodeType":"ElementaryTypeName","src":"1139:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"id":6812,"nodeType":"VariableDeclaration","src":"1209:44:18","nodes":[],"constant":false,"functionSelector":"f5a6ba2e","mutability":"mutable","name":"lastPrice","nameLocation":"1244:9:18","scope":7470,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":6811,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":6809,"name":"address","nodeType":"ElementaryTypeName","src":"1217:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1209:27:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":6810,"name":"uint256","nodeType":"ElementaryTypeName","src":"1228:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"id":6816,"nodeType":"VariableDeclaration","src":"1290:40:18","nodes":[],"constant":false,"functionSelector":"6ba42aaa","mutability":"mutable","name":"isKeeper","nameLocation":"1322:8:18","scope":7470,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":6815,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":6813,"name":"address","nodeType":"ElementaryTypeName","src":"1298:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1290:24:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":6814,"name":"bool","nodeType":"ElementaryTypeName","src":"1309:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":6826,"nodeType":"EventDefinition","src":"1341:96:18","nodes":[],"anonymous":false,"eventSelector":"8647dab5101cbe18afb171756e9753802f9d66725bf2346b079b8b1a275e0116","name":"PriceUpdate","nameLocation":"1347:11:18","parameters":{"id":6825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6818,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"1375:5:18","nodeType":"VariableDeclaration","scope":6826,"src":"1359:21:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6817,"name":"address","nodeType":"ElementaryTypeName","src":"1359:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6820,"indexed":false,"mutability":"mutable","name":"oldPrice","nameLocation":"1390:8:18","nodeType":"VariableDeclaration","scope":6826,"src":"1382:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6819,"name":"uint256","nodeType":"ElementaryTypeName","src":"1382:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6822,"indexed":false,"mutability":"mutable","name":"newPrice","nameLocation":"1408:8:18","nodeType":"VariableDeclaration","scope":6826,"src":"1400:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6821,"name":"uint256","nodeType":"ElementaryTypeName","src":"1400:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6824,"indexed":false,"mutability":"mutable","name":"timestamp","nameLocation":"1426:9:18","nodeType":"VariableDeclaration","scope":6826,"src":"1418:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6823,"name":"uint256","nodeType":"ElementaryTypeName","src":"1418:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1358:78:18"}},{"id":6832,"nodeType":"EventDefinition","src":"1442:61:18","nodes":[],"anonymous":false,"eventSelector":"dc57d8716d6b33bf807c6d4f1dd2addbf67960c73ada97819316dc745dfa1179","name":"SpreadUpdate","nameLocation":"1448:12:18","parameters":{"id":6831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6828,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"1477:5:18","nodeType":"VariableDeclaration","scope":6832,"src":"1461:21:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6827,"name":"address","nodeType":"ElementaryTypeName","src":"1461:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6830,"indexed":false,"mutability":"mutable","name":"spreadBps","nameLocation":"1492:9:18","nodeType":"VariableDeclaration","scope":6832,"src":"1484:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6829,"name":"uint256","nodeType":"ElementaryTypeName","src":"1484:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1460:42:18"}},{"id":6838,"nodeType":"EventDefinition","src":"1508:55:18","nodes":[],"anonymous":false,"eventSelector":"8dd62d4e1f60b96148552898e743aa2b571686baa26f4f1b647565dc3996c1a7","name":"KeeperSet","nameLocation":"1514:9:18","parameters":{"id":6837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6834,"indexed":true,"mutability":"mutable","name":"keeper","nameLocation":"1540:6:18","nodeType":"VariableDeclaration","scope":6838,"src":"1524:22:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6833,"name":"address","nodeType":"ElementaryTypeName","src":"1524:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6836,"indexed":false,"mutability":"mutable","name":"isActive","nameLocation":"1553:8:18","nodeType":"VariableDeclaration","scope":6838,"src":"1548:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6835,"name":"bool","nodeType":"ElementaryTypeName","src":"1548:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1523:39:18"}},{"id":6850,"nodeType":"ModifierDefinition","src":"1573:88:18","nodes":[],"body":{"id":6849,"nodeType":"Block","src":"1592:69:18","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6840,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1606:3:18","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1610:6:18","memberName":"sender","nodeType":"MemberAccess","src":"1606:10:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6842,"name":"gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6787,"src":"1620:3:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1606:17:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6847,"nodeType":"IfStatement","src":"1602:41:18","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6844,"name":"Forbidden","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6777,"src":"1632:9:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1632:11:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6846,"nodeType":"RevertStatement","src":"1625:18:18"}},{"id":6848,"nodeType":"PlaceholderStatement","src":"1653:1:18"}]},"name":"onlyGov","nameLocation":"1582:7:18","parameters":{"id":6839,"nodeType":"ParameterList","parameters":[],"src":"1589:2:18"},"virtual":false,"visibility":"internal"},{"id":6868,"nodeType":"ModifierDefinition","src":"1671:116:18","nodes":[],"body":{"id":6867,"nodeType":"Block","src":"1693:94:18","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1707:21:18","subExpression":{"baseExpression":{"id":6852,"name":"isKeeper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6816,"src":"1708:8:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":6855,"indexExpression":{"expression":{"id":6853,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1717:3:18","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1721:6:18","memberName":"sender","nodeType":"MemberAccess","src":"1717:10:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1708:20:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6857,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1732:3:18","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1736:6:18","memberName":"sender","nodeType":"MemberAccess","src":"1732:10:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6859,"name":"gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6787,"src":"1746:3:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1732:17:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1707:42:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6865,"nodeType":"IfStatement","src":"1703:66:18","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6862,"name":"Forbidden","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6777,"src":"1758:9:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1758:11:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6864,"nodeType":"RevertStatement","src":"1751:18:18"}},{"id":6866,"nodeType":"PlaceholderStatement","src":"1779:1:18"}]},"name":"onlyKeeper","nameLocation":"1680:10:18","parameters":{"id":6851,"nodeType":"ParameterList","parameters":[],"src":"1690:2:18"},"virtual":false,"visibility":"internal"},{"id":6903,"nodeType":"FunctionDefinition","src":"1844:289:18","nodes":[],"body":{"id":6902,"nodeType":"Block","src":"1907:226:18","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":6876,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10706,"src":"1917:22:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":6877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1917:24:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6878,"nodeType":"ExpressionStatement","src":"1917:24:18"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6879,"name":"_wusdAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6871,"src":"1955:12:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":6882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1979:1:18","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":6881,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1971:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6880,"name":"address","nodeType":"ElementaryTypeName","src":"1971:7:18","typeDescriptions":{}}},"id":6883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1971:10:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1955:26:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6888,"nodeType":"IfStatement","src":"1951:55:18","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6885,"name":"InvalidAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6785,"src":"1990:14:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1990:16:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6887,"nodeType":"RevertStatement","src":"1983:23:18"}},{"expression":{"id":6891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6889,"name":"wusdAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6800,"src":"2016:11:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6890,"name":"_wusdAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6871,"src":"2030:12:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2016:26:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6892,"nodeType":"ExpressionStatement","src":"2016:26:18"},{"expression":{"id":6896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6893,"name":"gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6787,"src":"2052:3:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":6894,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2058:3:18","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2062:6:18","memberName":"sender","nodeType":"MemberAccess","src":"2058:10:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2052:16:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6897,"nodeType":"ExpressionStatement","src":"2052:16:18"},{"expression":{"id":6900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6898,"name":"maxPriceChangeBps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6804,"src":"2078:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"353030","id":6899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2098:3:18","typeDescriptions":{"typeIdentifier":"t_rational_500_by_1","typeString":"int_const 500"},"value":"500"},"src":"2078:23:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6901,"nodeType":"ExpressionStatement","src":"2078:23:18"}]},"documentation":{"id":6869,"nodeType":"StructuredDocumentation","src":"1797:42:18","text":" @notice 初始化合约"},"functionSelector":"c4d66de8","implemented":true,"kind":"function","modifiers":[{"id":6874,"kind":"modifierInvocation","modifierName":{"id":6873,"name":"initializer","nameLocations":["1895:11:18"],"nodeType":"IdentifierPath","referencedDeclaration":10492,"src":"1895:11:18"},"nodeType":"ModifierInvocation","src":"1895:11:18"}],"name":"initialize","nameLocation":"1853:10:18","parameters":{"id":6872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6871,"mutability":"mutable","name":"_wusdAddress","nameLocation":"1872:12:18","nodeType":"VariableDeclaration","scope":6903,"src":"1864:20:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6870,"name":"address","nodeType":"ElementaryTypeName","src":"1864:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1863:22:18"},"returnParameters":{"id":6875,"nodeType":"ParameterList","parameters":[],"src":"1907:0:18"},"scope":7470,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":6913,"nodeType":"FunctionDefinition","src":"2262:82:18","nodes":[],"body":{"id":6912,"nodeType":"Block","src":"2342:2:18","nodes":[],"statements":[]},"baseFunctions":[10788],"documentation":{"id":6904,"nodeType":"StructuredDocumentation","src":"2143:114:18","text":" @notice 授权升级仅gov可调用\n @param newImplementation 新实现合约地址"},"implemented":true,"kind":"function","modifiers":[{"id":6910,"kind":"modifierInvocation","modifierName":{"id":6909,"name":"onlyGov","nameLocations":["2334:7:18"],"nodeType":"IdentifierPath","referencedDeclaration":6850,"src":"2334:7:18"},"nodeType":"ModifierInvocation","src":"2334:7:18"}],"name":"_authorizeUpgrade","nameLocation":"2271:17:18","overrides":{"id":6908,"nodeType":"OverrideSpecifier","overrides":[],"src":"2325:8:18"},"parameters":{"id":6907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6906,"mutability":"mutable","name":"newImplementation","nameLocation":"2297:17:18","nodeType":"VariableDeclaration","scope":6913,"src":"2289:25:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6905,"name":"address","nodeType":"ElementaryTypeName","src":"2289:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2288:27:18"},"returnParameters":{"id":6911,"nodeType":"ParameterList","parameters":[],"src":"2342:0:18"},"scope":7470,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":6926,"nodeType":"FunctionDefinition","src":"2488:122:18","nodes":[],"body":{"id":6925,"nodeType":"Block","src":"2559:51:18","nodes":[],"statements":[{"expression":{"id":6923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6921,"name":"wusdPriceSource","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6802,"src":"2569:15:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6922,"name":"_wusdPriceSource","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6916,"src":"2587:16:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2569:34:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6924,"nodeType":"ExpressionStatement","src":"2569:34:18"}]},"documentation":{"id":6914,"nodeType":"StructuredDocumentation","src":"2354:129:18","text":" @notice 设置WUSD价格来源YTAssetVault地址\n @param _wusdPriceSource YTAssetVault合约地址"},"functionSelector":"229f7df7","implemented":true,"kind":"function","modifiers":[{"id":6919,"kind":"modifierInvocation","modifierName":{"id":6918,"name":"onlyGov","nameLocations":["2551:7:18"],"nodeType":"IdentifierPath","referencedDeclaration":6850,"src":"2551:7:18"},"nodeType":"ModifierInvocation","src":"2551:7:18"}],"name":"setWusdPriceSource","nameLocation":"2497:18:18","parameters":{"id":6917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6916,"mutability":"mutable","name":"_wusdPriceSource","nameLocation":"2524:16:18","nodeType":"VariableDeclaration","scope":6926,"src":"2516:24:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6915,"name":"address","nodeType":"ElementaryTypeName","src":"2516:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2515:26:18"},"returnParameters":{"id":6920,"nodeType":"ParameterList","parameters":[],"src":"2559:0:18"},"scope":7470,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":6948,"nodeType":"FunctionDefinition","src":"2742:159:18","nodes":[],"body":{"id":6947,"nodeType":"Block","src":"2811:90:18","nodes":[],"statements":[{"expression":{"id":6940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6936,"name":"isKeeper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6816,"src":"2821:8:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":6938,"indexExpression":{"id":6937,"name":"_keeper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6929,"src":"2830:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2821:17:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6939,"name":"_isActive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6931,"src":"2841:9:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2821:29:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6941,"nodeType":"ExpressionStatement","src":"2821:29:18"},{"eventCall":{"arguments":[{"id":6943,"name":"_keeper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6929,"src":"2875:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6944,"name":"_isActive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6931,"src":"2884:9:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":6942,"name":"KeeperSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6838,"src":"2865:9:18","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":6945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2865:29:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6946,"nodeType":"EmitStatement","src":"2860:34:18"}]},"documentation":{"id":6927,"nodeType":"StructuredDocumentation","src":"2620:117:18","text":" @notice 设置keeper权限\n @param _keeper keeper地址\n @param _isActive 是否激活"},"functionSelector":"d1b9e853","implemented":true,"kind":"function","modifiers":[{"id":6934,"kind":"modifierInvocation","modifierName":{"id":6933,"name":"onlyGov","nameLocations":["2803:7:18"],"nodeType":"IdentifierPath","referencedDeclaration":6850,"src":"2803:7:18"},"nodeType":"ModifierInvocation","src":"2803:7:18"}],"name":"setKeeper","nameLocation":"2751:9:18","parameters":{"id":6932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6929,"mutability":"mutable","name":"_keeper","nameLocation":"2769:7:18","nodeType":"VariableDeclaration","scope":6948,"src":"2761:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6928,"name":"address","nodeType":"ElementaryTypeName","src":"2761:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6931,"mutability":"mutable","name":"_isActive","nameLocation":"2783:9:18","nodeType":"VariableDeclaration","scope":6948,"src":"2778:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6930,"name":"bool","nodeType":"ElementaryTypeName","src":"2778:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2760:33:18"},"returnParameters":{"id":6935,"nodeType":"ParameterList","parameters":[],"src":"2811:0:18"},"scope":7470,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":6968,"nodeType":"FunctionDefinition","src":"3034:209:18","nodes":[],"body":{"id":6967,"nodeType":"Block","src":"3109:134:18","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6956,"name":"_maxPriceChangeBps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6951,"src":"3123:18:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"32303030","id":6957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3144:4:18","typeDescriptions":{"typeIdentifier":"t_rational_2000_by_1","typeString":"int_const 2000"},"value":"2000"},"src":"3123:25:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6962,"nodeType":"IfStatement","src":"3119:56:18","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6959,"name":"MaxChangeTooHigh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6779,"src":"3157:16:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3157:18:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6961,"nodeType":"RevertStatement","src":"3150:25:18"}},{"expression":{"id":6965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6963,"name":"maxPriceChangeBps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6804,"src":"3198:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6964,"name":"_maxPriceChangeBps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6951,"src":"3218:18:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3198:38:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6966,"nodeType":"ExpressionStatement","src":"3198:38:18"}]},"documentation":{"id":6949,"nodeType":"StructuredDocumentation","src":"2911:118:18","text":" @notice 设置最大价格变动百分比\n @param _maxPriceChangeBps 最大变动(基点)"},"functionSelector":"83daeb47","implemented":true,"kind":"function","modifiers":[{"id":6954,"kind":"modifierInvocation","modifierName":{"id":6953,"name":"onlyGov","nameLocations":["3101:7:18"],"nodeType":"IdentifierPath","referencedDeclaration":6850,"src":"3101:7:18"},"nodeType":"ModifierInvocation","src":"3101:7:18"}],"name":"setMaxPriceChangeBps","nameLocation":"3043:20:18","parameters":{"id":6952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6951,"mutability":"mutable","name":"_maxPriceChangeBps","nameLocation":"3072:18:18","nodeType":"VariableDeclaration","scope":6968,"src":"3064:26:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6950,"name":"uint256","nodeType":"ElementaryTypeName","src":"3064:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3063:28:18"},"returnParameters":{"id":6955,"nodeType":"ParameterList","parameters":[],"src":"3109:0:18"},"scope":7470,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":6997,"nodeType":"FunctionDefinition","src":"3417:291:18","nodes":[],"body":{"id":6996,"nodeType":"Block","src":"3508:200:18","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6978,"name":"_spreadBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6973,"src":"3522:18:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":6979,"name":"MAX_SPREAD_BASIS_POINTS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6798,"src":"3543:23:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3522:44:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6984,"nodeType":"IfStatement","src":"3518:72:18","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6981,"name":"SpreadTooHigh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6783,"src":"3575:13:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3575:15:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6983,"nodeType":"RevertStatement","src":"3568:22:18"}},{"expression":{"id":6989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6985,"name":"spreadBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6808,"src":"3600:17:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6987,"indexExpression":{"id":6986,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6971,"src":"3618:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3600:25:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6988,"name":"_spreadBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6973,"src":"3628:18:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3600:46:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6990,"nodeType":"ExpressionStatement","src":"3600:46:18"},{"eventCall":{"arguments":[{"id":6992,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6971,"src":"3674:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6993,"name":"_spreadBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6973,"src":"3682:18:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6991,"name":"SpreadUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6832,"src":"3661:12:18","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":6994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3661:40:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6995,"nodeType":"EmitStatement","src":"3656:45:18"}]},"documentation":{"id":6969,"nodeType":"StructuredDocumentation","src":"3253:159:18","text":" @notice 设置代币价差\n @param _token 代币地址\n @param _spreadBasisPoints 价差基点例如10 = 0.1%, 100 = 1%"},"functionSelector":"9b889380","implemented":true,"kind":"function","modifiers":[{"id":6976,"kind":"modifierInvocation","modifierName":{"id":6975,"name":"onlyGov","nameLocations":["3500:7:18"],"nodeType":"IdentifierPath","referencedDeclaration":6850,"src":"3500:7:18"},"nodeType":"ModifierInvocation","src":"3500:7:18"}],"name":"setSpreadBasisPoints","nameLocation":"3426:20:18","parameters":{"id":6974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6971,"mutability":"mutable","name":"_token","nameLocation":"3455:6:18","nodeType":"VariableDeclaration","scope":6997,"src":"3447:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6970,"name":"address","nodeType":"ElementaryTypeName","src":"3447:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6973,"mutability":"mutable","name":"_spreadBasisPoints","nameLocation":"3471:18:18","nodeType":"VariableDeclaration","scope":6997,"src":"3463:26:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6972,"name":"uint256","nodeType":"ElementaryTypeName","src":"3463:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3446:44:18"},"returnParameters":{"id":6977,"nodeType":"ParameterList","parameters":[],"src":"3508:0:18"},"scope":7470,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":7060,"nodeType":"FunctionDefinition","src":"3861:522:18","nodes":[],"body":{"id":7059,"nodeType":"Block","src":"4008:375:18","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7010,"name":"_tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7001,"src":"4026:7:18","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":7011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4034:6:18","memberName":"length","nodeType":"MemberAccess","src":"4026:14:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":7012,"name":"_spreadBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7004,"src":"4044:18:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":7013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4063:6:18","memberName":"length","nodeType":"MemberAccess","src":"4044:25:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4026:43:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6c656e677468206d69736d61746368","id":7015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4071:17:18","typeDescriptions":{"typeIdentifier":"t_stringliteral_01533ac81325c721faf446ceccaf9f197991bc2ad752fe9d846afddbc44cdcdd","typeString":"literal_string \"length mismatch\""},"value":"length mismatch"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_01533ac81325c721faf446ceccaf9f197991bc2ad752fe9d846afddbc44cdcdd","typeString":"literal_string \"length mismatch\""}],"id":7009,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4018:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4018:71:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7017,"nodeType":"ExpressionStatement","src":"4018:71:18"},{"body":{"id":7057,"nodeType":"Block","src":"4144:233:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":7029,"name":"_spreadBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7004,"src":"4162:18:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":7031,"indexExpression":{"id":7030,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7019,"src":"4181:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4162:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7032,"name":"MAX_SPREAD_BASIS_POINTS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6798,"src":"4186:23:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4162:47:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7037,"nodeType":"IfStatement","src":"4158:75:18","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7034,"name":"SpreadTooHigh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6783,"src":"4218:13:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4218:15:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7036,"nodeType":"RevertStatement","src":"4211:22:18"}},{"expression":{"id":7046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7038,"name":"spreadBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6808,"src":"4247:17:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7042,"indexExpression":{"baseExpression":{"id":7039,"name":"_tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7001,"src":"4265:7:18","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":7041,"indexExpression":{"id":7040,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7019,"src":"4273:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4265:10:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4247:29:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":7043,"name":"_spreadBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7004,"src":"4279:18:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":7045,"indexExpression":{"id":7044,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7019,"src":"4298:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4279:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4247:53:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7047,"nodeType":"ExpressionStatement","src":"4247:53:18"},{"eventCall":{"arguments":[{"baseExpression":{"id":7049,"name":"_tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7001,"src":"4332:7:18","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":7051,"indexExpression":{"id":7050,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7019,"src":"4340:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4332:10:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":7052,"name":"_spreadBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7004,"src":"4344:18:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":7054,"indexExpression":{"id":7053,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7019,"src":"4363:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4344:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7048,"name":"SpreadUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6832,"src":"4319:12:18","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":7055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4319:47:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7056,"nodeType":"EmitStatement","src":"4314:52:18"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7022,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7019,"src":"4119:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":7023,"name":"_tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7001,"src":"4123:7:18","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":7024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4131:6:18","memberName":"length","nodeType":"MemberAccess","src":"4123:14:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4119:18:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7058,"initializationExpression":{"assignments":[7019],"declarations":[{"constant":false,"id":7019,"mutability":"mutable","name":"i","nameLocation":"4112:1:18","nodeType":"VariableDeclaration","scope":7058,"src":"4104:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7018,"name":"uint256","nodeType":"ElementaryTypeName","src":"4104:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7021,"initialValue":{"hexValue":"30","id":7020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4116:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4104:13:18"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":7027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4139:3:18","subExpression":{"id":7026,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7019,"src":"4139:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7028,"nodeType":"ExpressionStatement","src":"4139:3:18"},"nodeType":"ForStatement","src":"4099:278:18"}]},"documentation":{"id":6998,"nodeType":"StructuredDocumentation","src":"3718:138:18","text":" @notice 批量设置代币价差\n @param _tokens 代币地址数组\n @param _spreadBasisPoints 价差数组"},"functionSelector":"c9e0c106","implemented":true,"kind":"function","modifiers":[{"id":7007,"kind":"modifierInvocation","modifierName":{"id":7006,"name":"onlyGov","nameLocations":["4000:7:18"],"nodeType":"IdentifierPath","referencedDeclaration":6850,"src":"4000:7:18"},"nodeType":"ModifierInvocation","src":"4000:7:18"}],"name":"setSpreadBasisPointsForMultiple","nameLocation":"3870:31:18","parameters":{"id":7005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7001,"mutability":"mutable","name":"_tokens","nameLocation":"3930:7:18","nodeType":"VariableDeclaration","scope":7060,"src":"3911:26:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":6999,"name":"address","nodeType":"ElementaryTypeName","src":"3911:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7000,"nodeType":"ArrayTypeName","src":"3911:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":7004,"mutability":"mutable","name":"_spreadBasisPoints","nameLocation":"3966:18:18","nodeType":"VariableDeclaration","scope":7060,"src":"3947:37:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":7002,"name":"uint256","nodeType":"ElementaryTypeName","src":"3947:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7003,"nodeType":"ArrayTypeName","src":"3947:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"3901:89:18"},"returnParameters":{"id":7008,"nodeType":"ParameterList","parameters":[],"src":"4008:0:18"},"scope":7470,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":7091,"nodeType":"FunctionDefinition","src":"4526:233:18","nodes":[],"body":{"id":7090,"nodeType":"Block","src":"4601:158:18","nodes":[],"statements":[{"assignments":[7071],"declarations":[{"constant":false,"id":7071,"mutability":"mutable","name":"oldPrice","nameLocation":"4619:8:18","nodeType":"VariableDeclaration","scope":7090,"src":"4611:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7070,"name":"uint256","nodeType":"ElementaryTypeName","src":"4611:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7075,"initialValue":{"baseExpression":{"id":7072,"name":"lastPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6812,"src":"4630:9:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7074,"indexExpression":{"id":7073,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7063,"src":"4640:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4630:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4611:36:18"},{"expression":{"id":7080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7076,"name":"lastPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6812,"src":"4657:9:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7078,"indexExpression":{"id":7077,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7063,"src":"4667:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4657:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7079,"name":"_price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7065,"src":"4677:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4657:26:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7081,"nodeType":"ExpressionStatement","src":"4657:26:18"},{"eventCall":{"arguments":[{"id":7083,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7063,"src":"4710:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7084,"name":"oldPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7071,"src":"4718:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7085,"name":"_price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7065,"src":"4728:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7086,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4736:5:18","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":7087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4742:9:18","memberName":"timestamp","nodeType":"MemberAccess","src":"4736:15:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7082,"name":"PriceUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6826,"src":"4698:11:18","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,uint256)"}},"id":7088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4698:54:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7089,"nodeType":"EmitStatement","src":"4693:59:18"}]},"documentation":{"id":7061,"nodeType":"StructuredDocumentation","src":"4393:128:18","text":" @notice 强制更新价格(紧急情况)\n @param _token 代币地址\n @param _price 新价格"},"functionSelector":"5d42fb6b","implemented":true,"kind":"function","modifiers":[{"id":7068,"kind":"modifierInvocation","modifierName":{"id":7067,"name":"onlyGov","nameLocations":["4593:7:18"],"nodeType":"IdentifierPath","referencedDeclaration":6850,"src":"4593:7:18"},"nodeType":"ModifierInvocation","src":"4593:7:18"}],"name":"forceUpdatePrice","nameLocation":"4535:16:18","parameters":{"id":7066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7063,"mutability":"mutable","name":"_token","nameLocation":"4560:6:18","nodeType":"VariableDeclaration","scope":7091,"src":"4552:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7062,"name":"address","nodeType":"ElementaryTypeName","src":"4552:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7065,"mutability":"mutable","name":"_price","nameLocation":"4576:6:18","nodeType":"VariableDeclaration","scope":7091,"src":"4568:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7064,"name":"uint256","nodeType":"ElementaryTypeName","src":"4568:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4551:32:18"},"returnParameters":{"id":7069,"nodeType":"ParameterList","parameters":[],"src":"4601:0:18"},"scope":7470,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":7127,"nodeType":"FunctionDefinition","src":"5582:411:18","nodes":[],"body":{"id":7126,"nodeType":"Block","src":"5664:329:18","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7101,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"5678:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7102,"name":"wusdAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6800,"src":"5688:11:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5678:21:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7108,"nodeType":"IfStatement","src":"5674:74:18","trueBody":{"id":7107,"nodeType":"Block","src":"5701:47:18","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7104,"name":"_getWUSDPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7217,"src":"5722:13:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":7105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5722:15:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7100,"id":7106,"nodeType":"Return","src":"5715:22:18"}]}},{"assignments":[7110],"declarations":[{"constant":false,"id":7110,"mutability":"mutable","name":"basePrice","nameLocation":"5774:9:18","nodeType":"VariableDeclaration","scope":7126,"src":"5766:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7109,"name":"uint256","nodeType":"ElementaryTypeName","src":"5766:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7114,"initialValue":{"arguments":[{"id":7112,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"5799:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7111,"name":"_getRawPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7194,"src":"5786:12:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":7113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5786:20:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5766:40:18"},{"expression":{"arguments":[{"id":7116,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"5876:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7117,"name":"basePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7110,"src":"5884:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7115,"name":"_validatePriceChange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7314,"src":"5855:20:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) view"}},"id":7118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5855:39:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7119,"nodeType":"ExpressionStatement","src":"5855:39:18"},{"expression":{"arguments":[{"id":7121,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7094,"src":"5957:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7122,"name":"basePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7110,"src":"5965:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7123,"name":"_maximise","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7096,"src":"5976:9:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7120,"name":"_applySpread","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7265,"src":"5944:12:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$","typeString":"function (address,uint256,bool) view returns (uint256)"}},"id":7124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5944:42:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7100,"id":7125,"nodeType":"Return","src":"5937:49:18"}]},"documentation":{"id":7092,"nodeType":"StructuredDocumentation","src":"4769:808:18","text":" @notice 获取YT代币价格带波动保护和价差\n @param _token 代币地址\n @param _maximise true=最大价格(上浮价差,对协议有利), false=最小价格(下压价差,对协议有利)\n @return 价格30位精度\n \n 使用场景:\n - 添加流动性时AUM计算_maximise=true高估AUM用户获得较少LP\n - 移除流动性时AUM计算_maximise=false低估AUM用户获得较少代币\n - buyUSDY时用户卖代币_maximise=false低估用户代币价值\n - sellUSDY时用户买代币_maximise=true高估需支付的代币价值\n - swap时tokenIn_maximise=false低估输入\n - swap时tokenOut_maximise=true高估输出"},"functionSelector":"76d69760","implemented":true,"kind":"function","modifiers":[],"name":"getPrice","nameLocation":"5591:8:18","parameters":{"id":7097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7094,"mutability":"mutable","name":"_token","nameLocation":"5608:6:18","nodeType":"VariableDeclaration","scope":7127,"src":"5600:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7093,"name":"address","nodeType":"ElementaryTypeName","src":"5600:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7096,"mutability":"mutable","name":"_maximise","nameLocation":"5621:9:18","nodeType":"VariableDeclaration","scope":7127,"src":"5616:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7095,"name":"bool","nodeType":"ElementaryTypeName","src":"5616:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5599:32:18"},"returnParameters":{"id":7100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7099,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7127,"src":"5655:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7098,"name":"uint256","nodeType":"ElementaryTypeName","src":"5655:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5654:9:18"},"scope":7470,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":7179,"nodeType":"FunctionDefinition","src":"6136:517:18","nodes":[],"body":{"id":7178,"nodeType":"Block","src":"6211:442:18","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7137,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7130,"src":"6225:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7138,"name":"wusdAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6800,"src":"6235:11:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6225:21:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7144,"nodeType":"IfStatement","src":"6221:74:18","trueBody":{"id":7143,"nodeType":"Block","src":"6248:47:18","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7140,"name":"_getWUSDPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7217,"src":"6269:13:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":7141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6269:15:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7136,"id":7142,"nodeType":"Return","src":"6262:22:18"}]}},{"assignments":[7146],"declarations":[{"constant":false,"id":7146,"mutability":"mutable","name":"oldPrice","nameLocation":"6321:8:18","nodeType":"VariableDeclaration","scope":7178,"src":"6313:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7145,"name":"uint256","nodeType":"ElementaryTypeName","src":"6313:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7150,"initialValue":{"baseExpression":{"id":7147,"name":"lastPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6812,"src":"6332:9:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7149,"indexExpression":{"id":7148,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7130,"src":"6342:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6332:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6313:36:18"},{"assignments":[7152],"declarations":[{"constant":false,"id":7152,"mutability":"mutable","name":"newPrice","nameLocation":"6367:8:18","nodeType":"VariableDeclaration","scope":7178,"src":"6359:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7151,"name":"uint256","nodeType":"ElementaryTypeName","src":"6359:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7156,"initialValue":{"arguments":[{"id":7154,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7130,"src":"6391:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7153,"name":"_getRawPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7194,"src":"6378:12:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":7155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6378:20:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6359:39:18"},{"expression":{"arguments":[{"id":7158,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7130,"src":"6468:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7159,"name":"newPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7152,"src":"6476:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7157,"name":"_validatePriceChange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7314,"src":"6447:20:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) view"}},"id":7160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6447:38:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7161,"nodeType":"ExpressionStatement","src":"6447:38:18"},{"expression":{"id":7166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7162,"name":"lastPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6812,"src":"6504:9:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7164,"indexExpression":{"id":7163,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7130,"src":"6514:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6504:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7165,"name":"newPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7152,"src":"6524:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6504:28:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7167,"nodeType":"ExpressionStatement","src":"6504:28:18"},{"eventCall":{"arguments":[{"id":7169,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7130,"src":"6568:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7170,"name":"oldPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7146,"src":"6576:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7171,"name":"newPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7152,"src":"6586:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7172,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"6596:5:18","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":7173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6602:9:18","memberName":"timestamp","nodeType":"MemberAccess","src":"6596:15:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7168,"name":"PriceUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6826,"src":"6556:11:18","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,uint256)"}},"id":7174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6556:56:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7175,"nodeType":"EmitStatement","src":"6551:61:18"},{"expression":{"id":7176,"name":"newPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7152,"src":"6638:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7136,"id":7177,"nodeType":"Return","src":"6631:15:18"}]},"documentation":{"id":7128,"nodeType":"StructuredDocumentation","src":"6003:128:18","text":" @notice 更新价格并返回由keeper调用\n @param _token 代币地址\n @return 新价格"},"functionSelector":"96e85ced","implemented":true,"kind":"function","modifiers":[{"id":7133,"kind":"modifierInvocation","modifierName":{"id":7132,"name":"onlyKeeper","nameLocations":["6182:10:18"],"nodeType":"IdentifierPath","referencedDeclaration":6868,"src":"6182:10:18"},"nodeType":"ModifierInvocation","src":"6182:10:18"}],"name":"updatePrice","nameLocation":"6145:11:18","parameters":{"id":7131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7130,"mutability":"mutable","name":"_token","nameLocation":"6165:6:18","nodeType":"VariableDeclaration","scope":7179,"src":"6157:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7129,"name":"address","nodeType":"ElementaryTypeName","src":"6157:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6156:16:18"},"returnParameters":{"id":7136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7135,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7179,"src":"6202:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7134,"name":"uint256","nodeType":"ElementaryTypeName","src":"6202:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6201:9:18"},"scope":7470,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":7194,"nodeType":"FunctionDefinition","src":"6731:119:18","nodes":[],"body":{"id":7193,"nodeType":"Block","src":"6800:50:18","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":7188,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7182,"src":"6826:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7187,"name":"IYTToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":352,"src":"6817:8:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IYTToken_$352_$","typeString":"type(contract IYTToken)"}},"id":7189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6817:16:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IYTToken_$352","typeString":"contract IYTToken"}},"id":7190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6834:7:18","memberName":"ytPrice","nodeType":"MemberAccess","referencedDeclaration":346,"src":"6817:24:18","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":7191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6817:26:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7186,"id":7192,"nodeType":"Return","src":"6810:33:18"}]},"documentation":{"id":7180,"nodeType":"StructuredDocumentation","src":"6663:63:18","text":" @notice 直接读取YT代币的ytPrice变量"},"implemented":true,"kind":"function","modifiers":[],"name":"_getRawPrice","nameLocation":"6740:12:18","parameters":{"id":7183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7182,"mutability":"mutable","name":"_token","nameLocation":"6761:6:18","nodeType":"VariableDeclaration","scope":7194,"src":"6753:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7181,"name":"address","nodeType":"ElementaryTypeName","src":"6753:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6752:16:18"},"returnParameters":{"id":7186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7185,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7194,"src":"6791:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7184,"name":"uint256","nodeType":"ElementaryTypeName","src":"6791:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6790:9:18"},"scope":7470,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":7217,"nodeType":"FunctionDefinition","src":"6994:221:18","nodes":[],"body":{"id":7216,"nodeType":"Block","src":"7050:165:18","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7200,"name":"wusdPriceSource","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6802,"src":"7064:15:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":7203,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7091:1:18","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":7202,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7083:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7201,"name":"address","nodeType":"ElementaryTypeName","src":"7083:7:18","typeDescriptions":{}}},"id":7204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7083:10:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7064:29:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7209,"nodeType":"IfStatement","src":"7060:95:18","trueBody":{"id":7208,"nodeType":"Block","src":"7095:60:18","statements":[{"expression":{"id":7206,"name":"PRICE_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6792,"src":"7116:15:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7199,"id":7207,"nodeType":"Return","src":"7109:22:18"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":7211,"name":"wusdPriceSource","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6802,"src":"7180:15:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7210,"name":"IYTToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":352,"src":"7171:8:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IYTToken_$352_$","typeString":"type(contract IYTToken)"}},"id":7212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7171:25:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IYTToken_$352","typeString":"contract IYTToken"}},"id":7213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7197:9:18","memberName":"wusdPrice","nodeType":"MemberAccess","referencedDeclaration":351,"src":"7171:35:18","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":7214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7171:37:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7199,"id":7215,"nodeType":"Return","src":"7164:44:18"}]},"documentation":{"id":7195,"nodeType":"StructuredDocumentation","src":"6856:133:18","text":" @notice 从配置的YTAssetVault读取wusdPrice\n @dev 如果未设置wusdPriceSource返回固定价格1.0"},"implemented":true,"kind":"function","modifiers":[],"name":"_getWUSDPrice","nameLocation":"7003:13:18","parameters":{"id":7196,"nodeType":"ParameterList","parameters":[],"src":"7016:2:18"},"returnParameters":{"id":7199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7198,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7217,"src":"7041:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7197,"name":"uint256","nodeType":"ElementaryTypeName","src":"7041:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7040:9:18"},"scope":7470,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":7265,"nodeType":"FunctionDefinition","src":"7444:683:18","nodes":[],"body":{"id":7264,"nodeType":"Block","src":"7579:548:18","nodes":[],"statements":[{"assignments":[7230],"declarations":[{"constant":false,"id":7230,"mutability":"mutable","name":"spread","nameLocation":"7597:6:18","nodeType":"VariableDeclaration","scope":7264,"src":"7589:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7229,"name":"uint256","nodeType":"ElementaryTypeName","src":"7589:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7234,"initialValue":{"baseExpression":{"id":7231,"name":"spreadBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6808,"src":"7606:17:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7233,"indexExpression":{"id":7232,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7220,"src":"7624:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7606:25:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7589:42:18"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7235,"name":"spread","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7230,"src":"7717:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7727:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7717:11:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7241,"nodeType":"IfStatement","src":"7713:59:18","trueBody":{"id":7240,"nodeType":"Block","src":"7730:42:18","statements":[{"expression":{"id":7238,"name":"_basePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7222,"src":"7751:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7228,"id":7239,"nodeType":"Return","src":"7744:17:18"}]}},{"condition":{"id":7242,"name":"_maximise","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7224,"src":"7794:9:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7262,"nodeType":"Block","src":"7966:155:18","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7253,"name":"_basePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7222,"src":"8043:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7254,"name":"BASIS_POINTS_DIVISOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6795,"src":"8057:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7255,"name":"spread","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7230,"src":"8080:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8057:29:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7257,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8056:31:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8043:44:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7259,"name":"BASIS_POINTS_DIVISOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6795,"src":"8090:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8043:67:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7228,"id":7261,"nodeType":"Return","src":"8036:74:18"}]},"id":7263,"nodeType":"IfStatement","src":"7790:331:18","trueBody":{"id":7252,"nodeType":"Block","src":"7805:155:18","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7243,"name":"_basePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7222,"src":"7882:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7244,"name":"BASIS_POINTS_DIVISOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6795,"src":"7896:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":7245,"name":"spread","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7230,"src":"7919:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7896:29:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7247,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7895:31:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7882:44:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7249,"name":"BASIS_POINTS_DIVISOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6795,"src":"7929:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7882:67:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7228,"id":7251,"nodeType":"Return","src":"7875:74:18"}]}}]},"documentation":{"id":7218,"nodeType":"StructuredDocumentation","src":"7225:214:18","text":" @notice 应用价差\n @param _token 代币地址\n @param _basePrice 基础价格\n @param _maximise true=上浮价格false=下压价格\n @return 应用价差后的价格"},"implemented":true,"kind":"function","modifiers":[],"name":"_applySpread","nameLocation":"7453:12:18","parameters":{"id":7225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7220,"mutability":"mutable","name":"_token","nameLocation":"7483:6:18","nodeType":"VariableDeclaration","scope":7265,"src":"7475:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7219,"name":"address","nodeType":"ElementaryTypeName","src":"7475:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7222,"mutability":"mutable","name":"_basePrice","nameLocation":"7507:10:18","nodeType":"VariableDeclaration","scope":7265,"src":"7499:18:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7221,"name":"uint256","nodeType":"ElementaryTypeName","src":"7499:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7224,"mutability":"mutable","name":"_maximise","nameLocation":"7532:9:18","nodeType":"VariableDeclaration","scope":7265,"src":"7527:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7223,"name":"bool","nodeType":"ElementaryTypeName","src":"7527:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7465:82:18"},"returnParameters":{"id":7228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7227,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7265,"src":"7570:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7570:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7569:9:18"},"scope":7470,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":7314,"nodeType":"FunctionDefinition","src":"8211:539:18","nodes":[],"body":{"id":7313,"nodeType":"Block","src":"8289:461:18","nodes":[],"statements":[{"assignments":[7274],"declarations":[{"constant":false,"id":7274,"mutability":"mutable","name":"oldPrice","nameLocation":"8307:8:18","nodeType":"VariableDeclaration","scope":7313,"src":"8299:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7273,"name":"uint256","nodeType":"ElementaryTypeName","src":"8299:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7278,"initialValue":{"baseExpression":{"id":7275,"name":"lastPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6812,"src":"8318:9:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7277,"indexExpression":{"id":7276,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7268,"src":"8328:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8318:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8299:36:18"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7279,"name":"oldPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7274,"src":"8403:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8415:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8403:13:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7284,"nodeType":"IfStatement","src":"8399:50:18","trueBody":{"id":7283,"nodeType":"Block","src":"8418:31:18","statements":[{"functionReturnParameters":7272,"id":7282,"nodeType":"Return","src":"8432:7:18"}]}},{"assignments":[7286],"declarations":[{"constant":false,"id":7286,"mutability":"mutable","name":"priceDiff","nameLocation":"8514:9:18","nodeType":"VariableDeclaration","scope":7313,"src":"8506:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7285,"name":"uint256","nodeType":"ElementaryTypeName","src":"8506:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7297,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7287,"name":"_newPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7270,"src":"8526:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7288,"name":"oldPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7274,"src":"8538:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8526:20:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7293,"name":"oldPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7274,"src":"8572:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7294,"name":"_newPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7270,"src":"8583:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8572:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8526:66:18","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7290,"name":"_newPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7270,"src":"8549:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7291,"name":"oldPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7274,"src":"8561:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8549:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8506:86:18"},{"assignments":[7299],"declarations":[{"constant":false,"id":7299,"mutability":"mutable","name":"maxDiff","nameLocation":"8610:7:18","nodeType":"VariableDeclaration","scope":7313,"src":"8602:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7298,"name":"uint256","nodeType":"ElementaryTypeName","src":"8602:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7305,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7300,"name":"oldPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7274,"src":"8620:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7301,"name":"maxPriceChangeBps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6804,"src":"8631:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8620:28:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7303,"name":"BASIS_POINTS_DIVISOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6795,"src":"8651:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8620:51:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8602:69:18"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7306,"name":"priceDiff","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7286,"src":"8694:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7307,"name":"maxDiff","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7299,"src":"8706:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8694:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7312,"nodeType":"IfStatement","src":"8690:53:18","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7309,"name":"PriceChangeTooLarge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6781,"src":"8722:19:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8722:21:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7311,"nodeType":"RevertStatement","src":"8715:28:18"}}]},"documentation":{"id":7266,"nodeType":"StructuredDocumentation","src":"8137:69:18","text":" @notice 验证价格变动是否在允许范围内"},"implemented":true,"kind":"function","modifiers":[],"name":"_validatePriceChange","nameLocation":"8220:20:18","parameters":{"id":7271,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7268,"mutability":"mutable","name":"_token","nameLocation":"8249:6:18","nodeType":"VariableDeclaration","scope":7314,"src":"8241:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7267,"name":"address","nodeType":"ElementaryTypeName","src":"8241:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7270,"mutability":"mutable","name":"_newPrice","nameLocation":"8265:9:18","nodeType":"VariableDeclaration","scope":7314,"src":"8257:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7269,"name":"uint256","nodeType":"ElementaryTypeName","src":"8257:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8240:35:18"},"returnParameters":{"id":7272,"nodeType":"ParameterList","parameters":[],"src":"8289:0:18"},"scope":7470,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":7396,"nodeType":"FunctionDefinition","src":"8816:762:18","nodes":[],"body":{"id":7395,"nodeType":"Block","src":"9018:560:18","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7330,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7317,"src":"9032:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7331,"name":"wusdAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6800,"src":"9042:11:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9032:21:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7393,"nodeType":"Block","src":"9288:284:18","statements":[{"expression":{"id":7363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7359,"name":"currentPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7320,"src":"9302:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7361,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7317,"src":"9330:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7360,"name":"_getRawPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7194,"src":"9317:12:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":7362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9317:20:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9302:35:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7364,"nodeType":"ExpressionStatement","src":"9302:35:18"},{"expression":{"id":7369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7365,"name":"cachedPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7322,"src":"9351:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":7366,"name":"lastPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6812,"src":"9365:9:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7368,"indexExpression":{"id":7367,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7317,"src":"9375:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9365:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9351:31:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7370,"nodeType":"ExpressionStatement","src":"9351:31:18"},{"expression":{"id":7375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7371,"name":"spread","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7328,"src":"9396:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":7372,"name":"spreadBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6808,"src":"9405:17:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7374,"indexExpression":{"id":7373,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7317,"src":"9423:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9405:25:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9396:34:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7376,"nodeType":"ExpressionStatement","src":"9396:34:18"},{"expression":{"id":7383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7377,"name":"maxPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7324,"src":"9444:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7379,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7317,"src":"9468:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7380,"name":"currentPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7320,"src":"9476:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":7381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9490:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7378,"name":"_applySpread","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7265,"src":"9455:12:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$","typeString":"function (address,uint256,bool) view returns (uint256)"}},"id":7382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9455:40:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9444:51:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7384,"nodeType":"ExpressionStatement","src":"9444:51:18"},{"expression":{"id":7391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7385,"name":"minPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7326,"src":"9509:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7387,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7317,"src":"9533:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7388,"name":"currentPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7320,"src":"9541:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":7389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9555:5:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7386,"name":"_applySpread","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7265,"src":"9520:12:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$","typeString":"function (address,uint256,bool) view returns (uint256)"}},"id":7390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9520:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9509:52:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7392,"nodeType":"ExpressionStatement","src":"9509:52:18"}]},"id":7394,"nodeType":"IfStatement","src":"9028:544:18","trueBody":{"id":7358,"nodeType":"Block","src":"9055:227:18","statements":[{"assignments":[7334],"declarations":[{"constant":false,"id":7334,"mutability":"mutable","name":"wusdPrice","nameLocation":"9077:9:18","nodeType":"VariableDeclaration","scope":7358,"src":"9069:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7333,"name":"uint256","nodeType":"ElementaryTypeName","src":"9069:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7337,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":7335,"name":"_getWUSDPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7217,"src":"9089:13:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":7336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9089:15:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9069:35:18"},{"expression":{"id":7340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7338,"name":"currentPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7320,"src":"9118:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7339,"name":"wusdPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7334,"src":"9133:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9118:24:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7341,"nodeType":"ExpressionStatement","src":"9118:24:18"},{"expression":{"id":7344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7342,"name":"cachedPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7322,"src":"9156:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7343,"name":"wusdPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7334,"src":"9170:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9156:23:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7345,"nodeType":"ExpressionStatement","src":"9156:23:18"},{"expression":{"id":7348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7346,"name":"maxPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7324,"src":"9193:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7347,"name":"wusdPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7334,"src":"9204:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9193:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7349,"nodeType":"ExpressionStatement","src":"9193:20:18"},{"expression":{"id":7352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7350,"name":"minPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7326,"src":"9227:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7351,"name":"wusdPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7334,"src":"9238:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9227:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7353,"nodeType":"ExpressionStatement","src":"9227:20:18"},{"expression":{"id":7356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7354,"name":"spread","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7328,"src":"9261:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":7355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9270:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9261:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7357,"nodeType":"ExpressionStatement","src":"9261:10:18"}]}}]},"documentation":{"id":7315,"nodeType":"StructuredDocumentation","src":"8760:51:18","text":" @notice 获取价格详细信息"},"functionSelector":"8edbf436","implemented":true,"kind":"function","modifiers":[],"name":"getPriceInfo","nameLocation":"8825:12:18","parameters":{"id":7318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7317,"mutability":"mutable","name":"_token","nameLocation":"8846:6:18","nodeType":"VariableDeclaration","scope":7396,"src":"8838:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7316,"name":"address","nodeType":"ElementaryTypeName","src":"8838:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8837:16:18"},"returnParameters":{"id":7329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7320,"mutability":"mutable","name":"currentPrice","nameLocation":"8894:12:18","nodeType":"VariableDeclaration","scope":7396,"src":"8886:20:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7319,"name":"uint256","nodeType":"ElementaryTypeName","src":"8886:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7322,"mutability":"mutable","name":"cachedPrice","nameLocation":"8924:11:18","nodeType":"VariableDeclaration","scope":7396,"src":"8916:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7321,"name":"uint256","nodeType":"ElementaryTypeName","src":"8916:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7324,"mutability":"mutable","name":"maxPrice","nameLocation":"8953:8:18","nodeType":"VariableDeclaration","scope":7396,"src":"8945:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7323,"name":"uint256","nodeType":"ElementaryTypeName","src":"8945:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7326,"mutability":"mutable","name":"minPrice","nameLocation":"8979:8:18","nodeType":"VariableDeclaration","scope":7396,"src":"8971:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7325,"name":"uint256","nodeType":"ElementaryTypeName","src":"8971:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7328,"mutability":"mutable","name":"spread","nameLocation":"9005:6:18","nodeType":"VariableDeclaration","scope":7396,"src":"8997:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7327,"name":"uint256","nodeType":"ElementaryTypeName","src":"8997:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8876:141:18"},"scope":7470,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":7430,"nodeType":"FunctionDefinition","src":"9656:377:18","nodes":[],"body":{"id":7429,"nodeType":"Block","src":"9725:308:18","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7404,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7399,"src":"9739:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7405,"name":"wusdAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6800,"src":"9749:11:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9739:21:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7411,"nodeType":"IfStatement","src":"9735:139:18","trueBody":{"id":7410,"nodeType":"Block","src":"9762:112:18","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7407,"name":"_getWUSDPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7217,"src":"9848:13:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":7408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9848:15:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7403,"id":7409,"nodeType":"Return","src":"9841:22:18"}]}},{"assignments":[7413],"declarations":[{"constant":false,"id":7413,"mutability":"mutable","name":"basePrice","nameLocation":"9891:9:18","nodeType":"VariableDeclaration","scope":7429,"src":"9883:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7412,"name":"uint256","nodeType":"ElementaryTypeName","src":"9883:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7417,"initialValue":{"arguments":[{"id":7415,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7399,"src":"9916:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7414,"name":"_getRawPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7194,"src":"9903:12:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":7416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9903:20:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9883:40:18"},{"expression":{"arguments":[{"id":7419,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7399,"src":"9954:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7420,"name":"basePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"9962:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7418,"name":"_validatePriceChange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7314,"src":"9933:20:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) view"}},"id":7421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9933:39:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7422,"nodeType":"ExpressionStatement","src":"9933:39:18"},{"expression":{"arguments":[{"id":7424,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7399,"src":"10002:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7425,"name":"basePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"10010:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":7426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10021:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7423,"name":"_applySpread","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7265,"src":"9989:12:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$","typeString":"function (address,uint256,bool) view returns (uint256)"}},"id":7427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9989:37:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7403,"id":7428,"nodeType":"Return","src":"9982:44:18"}]},"documentation":{"id":7397,"nodeType":"StructuredDocumentation","src":"9588:63:18","text":" @notice 获取最大价格(上浮价差)"},"functionSelector":"e124e6d2","implemented":true,"kind":"function","modifiers":[],"name":"getMaxPrice","nameLocation":"9665:11:18","parameters":{"id":7400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7399,"mutability":"mutable","name":"_token","nameLocation":"9685:6:18","nodeType":"VariableDeclaration","scope":7430,"src":"9677:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7398,"name":"address","nodeType":"ElementaryTypeName","src":"9677:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9676:16:18"},"returnParameters":{"id":7403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7402,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7430,"src":"9716:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7401,"name":"uint256","nodeType":"ElementaryTypeName","src":"9716:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9715:9:18"},"scope":7470,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":7464,"nodeType":"FunctionDefinition","src":"10111:378:18","nodes":[],"body":{"id":7463,"nodeType":"Block","src":"10180:309:18","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7438,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7433,"src":"10194:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7439,"name":"wusdAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6800,"src":"10204:11:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10194:21:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7445,"nodeType":"IfStatement","src":"10190:139:18","trueBody":{"id":7444,"nodeType":"Block","src":"10217:112:18","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7441,"name":"_getWUSDPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7217,"src":"10303:13:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":7442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10303:15:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7437,"id":7443,"nodeType":"Return","src":"10296:22:18"}]}},{"assignments":[7447],"declarations":[{"constant":false,"id":7447,"mutability":"mutable","name":"basePrice","nameLocation":"10346:9:18","nodeType":"VariableDeclaration","scope":7463,"src":"10338:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7446,"name":"uint256","nodeType":"ElementaryTypeName","src":"10338:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7451,"initialValue":{"arguments":[{"id":7449,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7433,"src":"10371:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7448,"name":"_getRawPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7194,"src":"10358:12:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":7450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10358:20:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10338:40:18"},{"expression":{"arguments":[{"id":7453,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7433,"src":"10409:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7454,"name":"basePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7447,"src":"10417:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7452,"name":"_validatePriceChange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7314,"src":"10388:20:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) view"}},"id":7455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10388:39:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7456,"nodeType":"ExpressionStatement","src":"10388:39:18"},{"expression":{"arguments":[{"id":7458,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7433,"src":"10457:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7459,"name":"basePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7447,"src":"10465:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":7460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10476:5:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":7457,"name":"_applySpread","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7265,"src":"10444:12:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$","typeString":"function (address,uint256,bool) view returns (uint256)"}},"id":7461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10444:38:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7437,"id":7462,"nodeType":"Return","src":"10437:45:18"}]},"documentation":{"id":7431,"nodeType":"StructuredDocumentation","src":"10043:63:18","text":" @notice 获取最小价格(下压价差)"},"functionSelector":"81a612d6","implemented":true,"kind":"function","modifiers":[],"name":"getMinPrice","nameLocation":"10120:11:18","parameters":{"id":7434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7433,"mutability":"mutable","name":"_token","nameLocation":"10140:6:18","nodeType":"VariableDeclaration","scope":7464,"src":"10132:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7432,"name":"address","nodeType":"ElementaryTypeName","src":"10132:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10131:16:18"},"returnParameters":{"id":7437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7436,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7464,"src":"10171:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7435,"name":"uint256","nodeType":"ElementaryTypeName","src":"10171:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10170:9:18"},"scope":7470,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":7469,"nodeType":"VariableDeclaration","src":"10640:25:18","nodes":[],"constant":false,"documentation":{"id":7465,"nodeType":"StructuredDocumentation","src":"10499:136:18","text":" @dev 预留存储空间,用于未来升级时添加新的状态变量\n 50个slot = 50 * 32 bytes = 1600 bytes"},"mutability":"mutable","name":"__gap","nameLocation":"10660:5:18","scope":7470,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":7466,"name":"uint256","nodeType":"ElementaryTypeName","src":"10640:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7468,"length":{"hexValue":"3530","id":7467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10648:2:18","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"10640:11:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":6772,"name":"Initializable","nameLocations":["429:13:18"],"nodeType":"IdentifierPath","referencedDeclaration":10652,"src":"429:13:18"},"id":6773,"nodeType":"InheritanceSpecifier","src":"429:13:18"},{"baseName":{"id":6774,"name":"UUPSUpgradeable","nameLocations":["444:15:18"],"nodeType":"IdentifierPath","referencedDeclaration":10834,"src":"444:15:18"},"id":6775,"nodeType":"InheritanceSpecifier","src":"444:15:18"}],"canonicalName":"YTPriceFeed","contractDependencies":[],"contractKind":"contract","documentation":{"id":6771,"nodeType":"StructuredDocumentation","src":"252:152:18","text":" @title YTPriceFeed\n @notice 价格读取器直接从YT合约读取价格变量带保护机制和价差\n @dev UUPS可升级合约"},"fullyImplemented":true,"linearizedBaseContracts":[7470,10834,12055,10652],"name":"YTPriceFeed","nameLocation":"414:11:18","scope":7471,"usedErrors":[6777,6779,6781,6783,6785,10401,10404,10679,10684,12250,12263,13148,13441],"usedEvents":[6826,6832,6838,10409,12028]}],"license":"MIT"}},"contracts/ytLp/core/YTRewardRouter.sol":{"id":19,"ast":{"absolutePath":"contracts/ytLp/core/YTRewardRouter.sol","id":7895,"exportedSymbols":{"ContextUpgradeable":[11497],"ERC1967Utils":[12524],"IERC1363":[12016],"IERC1822Proxiable":[12055],"IERC20":[12648],"IYTPoolManager":[327],"IYTVault":[434],"Initializable":[10652],"PausableUpgradeable":[11657],"ReentrancyGuardUpgradeable":[11786],"SafeERC20":[13138],"UUPSUpgradeable":[10834],"YTRewardRouter":[7894]},"nodeType":"SourceUnit","src":"32:6335:19","nodes":[{"id":7472,"nodeType":"PragmaDirective","src":"32:23:19","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":7473,"nodeType":"ImportDirective","src":"57:82:19","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","nameLocation":"-1:-1:-1","scope":7895,"sourceUnit":11787,"symbolAliases":[],"unitAlias":""},{"id":7474,"nodeType":"ImportDirective","src":"140:75:19","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":7895,"sourceUnit":10653,"symbolAliases":[],"unitAlias":""},{"id":7475,"nodeType":"ImportDirective","src":"216:77:19","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":7895,"sourceUnit":10835,"symbolAliases":[],"unitAlias":""},{"id":7476,"nodeType":"ImportDirective","src":"294:75:19","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":7895,"sourceUnit":11658,"symbolAliases":[],"unitAlias":""},{"id":7477,"nodeType":"ImportDirective","src":"370:56:19","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","nameLocation":"-1:-1:-1","scope":7895,"sourceUnit":12649,"symbolAliases":[],"unitAlias":""},{"id":7478,"nodeType":"ImportDirective","src":"427:65:19","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","nameLocation":"-1:-1:-1","scope":7895,"sourceUnit":13139,"symbolAliases":[],"unitAlias":""},{"id":7479,"nodeType":"ImportDirective","src":"493:45:19","nodes":[],"absolutePath":"contracts/interfaces/IYTPoolManager.sol","file":"../../interfaces/IYTPoolManager.sol","nameLocation":"-1:-1:-1","scope":7895,"sourceUnit":328,"symbolAliases":[],"unitAlias":""},{"id":7480,"nodeType":"ImportDirective","src":"539:39:19","nodes":[],"absolutePath":"contracts/interfaces/IYTVault.sol","file":"../../interfaces/IYTVault.sol","nameLocation":"-1:-1:-1","scope":7895,"sourceUnit":435,"symbolAliases":[],"unitAlias":""},{"id":7894,"nodeType":"ContractDefinition","src":"671:5694:19","nodes":[{"id":7493,"nodeType":"UsingForDirective","src":"784:27:19","nodes":[],"global":false,"libraryName":{"id":7490,"name":"SafeERC20","nameLocations":["790:9:19"],"nodeType":"IdentifierPath","referencedDeclaration":13138,"src":"790:9:19"},"typeName":{"id":7492,"nodeType":"UserDefinedTypeName","pathNode":{"id":7491,"name":"IERC20","nameLocations":["804:6:19"],"nodeType":"IdentifierPath","referencedDeclaration":12648,"src":"804:6:19"},"referencedDeclaration":12648,"src":"804:6:19","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}}},{"id":7495,"nodeType":"ErrorDefinition","src":"821:18:19","nodes":[],"errorSelector":"ee90c468","name":"Forbidden","nameLocation":"827:9:19","parameters":{"id":7494,"nodeType":"ParameterList","parameters":[],"src":"836:2:19"}},{"id":7497,"nodeType":"ErrorDefinition","src":"844:27:19","nodes":[],"errorSelector":"0dc149f0","name":"AlreadyInitialized","nameLocation":"850:18:19","parameters":{"id":7496,"nodeType":"ParameterList","parameters":[],"src":"868:2:19"}},{"id":7499,"nodeType":"ErrorDefinition","src":"876:23:19","nodes":[],"errorSelector":"e6c4247b","name":"InvalidAddress","nameLocation":"882:14:19","parameters":{"id":7498,"nodeType":"ParameterList","parameters":[],"src":"896:2:19"}},{"id":7501,"nodeType":"ErrorDefinition","src":"904:22:19","nodes":[],"errorSelector":"2c5211c6","name":"InvalidAmount","nameLocation":"910:13:19","parameters":{"id":7500,"nodeType":"ParameterList","parameters":[],"src":"923:2:19"}},{"id":7503,"nodeType":"ErrorDefinition","src":"931:27:19","nodes":[],"errorSelector":"bb2875c3","name":"InsufficientOutput","nameLocation":"937:18:19","parameters":{"id":7502,"nodeType":"ParameterList","parameters":[],"src":"955:2:19"}},{"id":7505,"nodeType":"VariableDeclaration","src":"968:18:19","nodes":[],"constant":false,"functionSelector":"12d43a51","mutability":"mutable","name":"gov","nameLocation":"983:3:19","scope":7894,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7504,"name":"address","nodeType":"ElementaryTypeName","src":"968:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":7507,"nodeType":"VariableDeclaration","src":"992:19:19","nodes":[],"constant":false,"functionSelector":"98d506e9","mutability":"mutable","name":"usdy","nameLocation":"1007:4:19","scope":7894,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7506,"name":"address","nodeType":"ElementaryTypeName","src":"992:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":7509,"nodeType":"VariableDeclaration","src":"1017:19:19","nodes":[],"constant":false,"functionSelector":"e348031b","mutability":"mutable","name":"ytLP","nameLocation":"1032:4:19","scope":7894,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7508,"name":"address","nodeType":"ElementaryTypeName","src":"1017:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":7511,"nodeType":"VariableDeclaration","src":"1042:28:19","nodes":[],"constant":false,"functionSelector":"778d733d","mutability":"mutable","name":"ytPoolManager","nameLocation":"1057:13:19","scope":7894,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7510,"name":"address","nodeType":"ElementaryTypeName","src":"1042:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":7513,"nodeType":"VariableDeclaration","src":"1076:22:19","nodes":[],"constant":false,"functionSelector":"84a08e63","mutability":"mutable","name":"ytVault","nameLocation":"1091:7:19","scope":7894,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7512,"name":"address","nodeType":"ElementaryTypeName","src":"1076:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":7525,"nodeType":"EventDefinition","src":"1109:154:19","nodes":[],"anonymous":false,"eventSelector":"cd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062","name":"Swap","nameLocation":"1115:4:19","parameters":{"id":7524,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7515,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1145:7:19","nodeType":"VariableDeclaration","scope":7525,"src":"1129:23:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7514,"name":"address","nodeType":"ElementaryTypeName","src":"1129:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7517,"indexed":false,"mutability":"mutable","name":"tokenIn","nameLocation":"1170:7:19","nodeType":"VariableDeclaration","scope":7525,"src":"1162:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7516,"name":"address","nodeType":"ElementaryTypeName","src":"1162:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7519,"indexed":false,"mutability":"mutable","name":"tokenOut","nameLocation":"1195:8:19","nodeType":"VariableDeclaration","scope":7525,"src":"1187:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7518,"name":"address","nodeType":"ElementaryTypeName","src":"1187:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7521,"indexed":false,"mutability":"mutable","name":"amountIn","nameLocation":"1221:8:19","nodeType":"VariableDeclaration","scope":7525,"src":"1213:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7520,"name":"uint256","nodeType":"ElementaryTypeName","src":"1213:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7523,"indexed":false,"mutability":"mutable","name":"amountOut","nameLocation":"1247:9:19","nodeType":"VariableDeclaration","scope":7525,"src":"1239:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7522,"name":"uint256","nodeType":"ElementaryTypeName","src":"1239:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1119:143:19"}},{"id":7537,"nodeType":"ModifierDefinition","src":"1273:88:19","nodes":[],"body":{"id":7536,"nodeType":"Block","src":"1292:69:19","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7527,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1306:3:19","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1310:6:19","memberName":"sender","nodeType":"MemberAccess","src":"1306:10:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":7529,"name":"gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7505,"src":"1320:3:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1306:17:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7534,"nodeType":"IfStatement","src":"1302:41:19","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7531,"name":"Forbidden","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7495,"src":"1332:9:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1332:11:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7533,"nodeType":"RevertStatement","src":"1325:18:19"}},{"id":7535,"nodeType":"PlaceholderStatement","src":"1353:1:19"}]},"name":"onlyGov","nameLocation":"1282:7:19","parameters":{"id":7526,"nodeType":"ParameterList","parameters":[],"src":"1289:2:19"},"virtual":false,"visibility":"internal"},{"id":7622,"nodeType":"FunctionDefinition","src":"1578:663:19","nodes":[],"body":{"id":7621,"nodeType":"Block","src":"1729:512:19","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7551,"name":"_usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7540,"src":"1743:5:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":7554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1760:1:19","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":7553,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1752:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7552,"name":"address","nodeType":"ElementaryTypeName","src":"1752:7:19","typeDescriptions":{}}},"id":7555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1752:10:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1743:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7560,"nodeType":"IfStatement","src":"1739:48:19","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7557,"name":"InvalidAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7499,"src":"1771:14:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7558,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1771:16:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7559,"nodeType":"RevertStatement","src":"1764:23:19"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7561,"name":"_ytLP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7542,"src":"1801:5:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":7564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1818:1:19","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":7563,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1810:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7562,"name":"address","nodeType":"ElementaryTypeName","src":"1810:7:19","typeDescriptions":{}}},"id":7565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1810:10:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1801:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7570,"nodeType":"IfStatement","src":"1797:48:19","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7567,"name":"InvalidAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7499,"src":"1829:14:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1829:16:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7569,"nodeType":"RevertStatement","src":"1822:23:19"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7571,"name":"_ytPoolManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7544,"src":"1859:14:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":7574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1885:1:19","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":7573,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1877:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7572,"name":"address","nodeType":"ElementaryTypeName","src":"1877:7:19","typeDescriptions":{}}},"id":7575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1877:10:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1859:28:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7580,"nodeType":"IfStatement","src":"1855:57:19","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7577,"name":"InvalidAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7499,"src":"1896:14:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1896:16:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7579,"nodeType":"RevertStatement","src":"1889:23:19"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7581,"name":"_ytVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7546,"src":"1926:8:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":7584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1946:1:19","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":7583,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1938:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7582,"name":"address","nodeType":"ElementaryTypeName","src":"1938:7:19","typeDescriptions":{}}},"id":7585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1938:10:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1926:22:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7590,"nodeType":"IfStatement","src":"1922:51:19","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7587,"name":"InvalidAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7499,"src":"1957:14:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1957:16:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7589,"nodeType":"RevertStatement","src":"1950:23:19"}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7591,"name":"__ReentrancyGuard_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11697,"src":"1992:22:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1992:24:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7593,"nodeType":"ExpressionStatement","src":"1992:24:19"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7594,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10706,"src":"2026:22:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2026:24:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7596,"nodeType":"ExpressionStatement","src":"2026:24:19"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7597,"name":"__Pausable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11561,"src":"2060:15:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2060:17:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7599,"nodeType":"ExpressionStatement","src":"2060:17:19"},{"expression":{"id":7603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7600,"name":"gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7505,"src":"2096:3:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":7601,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2102:3:19","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2106:6:19","memberName":"sender","nodeType":"MemberAccess","src":"2102:10:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2096:16:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7604,"nodeType":"ExpressionStatement","src":"2096:16:19"},{"expression":{"id":7607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7605,"name":"usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7507,"src":"2132:4:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7606,"name":"_usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7540,"src":"2139:5:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2132:12:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7608,"nodeType":"ExpressionStatement","src":"2132:12:19"},{"expression":{"id":7611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7609,"name":"ytLP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7509,"src":"2154:4:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7610,"name":"_ytLP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7542,"src":"2161:5:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2154:12:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7612,"nodeType":"ExpressionStatement","src":"2154:12:19"},{"expression":{"id":7615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7613,"name":"ytPoolManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7511,"src":"2176:13:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7614,"name":"_ytPoolManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7544,"src":"2192:14:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2176:30:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7616,"nodeType":"ExpressionStatement","src":"2176:30:19"},{"expression":{"id":7619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7617,"name":"ytVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7513,"src":"2216:7:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7618,"name":"_ytVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7546,"src":"2226:8:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2216:18:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7620,"nodeType":"ExpressionStatement","src":"2216:18:19"}]},"documentation":{"id":7538,"nodeType":"StructuredDocumentation","src":"1371:202:19","text":" @notice 初始化合约\n @param _usdy USDY代币地址\n @param _ytLP ytLP代币地址\n @param _ytPoolManager YTPoolManager地址\n @param _ytVault YTVault地址"},"functionSelector":"f8c8765e","implemented":true,"kind":"function","modifiers":[{"id":7549,"kind":"modifierInvocation","modifierName":{"id":7548,"name":"initializer","nameLocations":["1717:11:19"],"nodeType":"IdentifierPath","referencedDeclaration":10492,"src":"1717:11:19"},"nodeType":"ModifierInvocation","src":"1717:11:19"}],"name":"initialize","nameLocation":"1587:10:19","parameters":{"id":7547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7540,"mutability":"mutable","name":"_usdy","nameLocation":"1615:5:19","nodeType":"VariableDeclaration","scope":7622,"src":"1607:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7539,"name":"address","nodeType":"ElementaryTypeName","src":"1607:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7542,"mutability":"mutable","name":"_ytLP","nameLocation":"1638:5:19","nodeType":"VariableDeclaration","scope":7622,"src":"1630:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7541,"name":"address","nodeType":"ElementaryTypeName","src":"1630:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7544,"mutability":"mutable","name":"_ytPoolManager","nameLocation":"1661:14:19","nodeType":"VariableDeclaration","scope":7622,"src":"1653:22:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7543,"name":"address","nodeType":"ElementaryTypeName","src":"1653:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7546,"mutability":"mutable","name":"_ytVault","nameLocation":"1693:8:19","nodeType":"VariableDeclaration","scope":7622,"src":"1685:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7545,"name":"address","nodeType":"ElementaryTypeName","src":"1685:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1597:110:19"},"returnParameters":{"id":7550,"nodeType":"ParameterList","parameters":[],"src":"1729:0:19"},"scope":7894,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":7632,"nodeType":"FunctionDefinition","src":"2370:82:19","nodes":[],"body":{"id":7631,"nodeType":"Block","src":"2450:2:19","nodes":[],"statements":[]},"baseFunctions":[10788],"documentation":{"id":7623,"nodeType":"StructuredDocumentation","src":"2251:114:19","text":" @notice 授权升级仅gov可调用\n @param newImplementation 新实现合约地址"},"implemented":true,"kind":"function","modifiers":[{"id":7629,"kind":"modifierInvocation","modifierName":{"id":7628,"name":"onlyGov","nameLocations":["2442:7:19"],"nodeType":"IdentifierPath","referencedDeclaration":7537,"src":"2442:7:19"},"nodeType":"ModifierInvocation","src":"2442:7:19"}],"name":"_authorizeUpgrade","nameLocation":"2379:17:19","overrides":{"id":7627,"nodeType":"OverrideSpecifier","overrides":[],"src":"2433:8:19"},"parameters":{"id":7626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7625,"mutability":"mutable","name":"newImplementation","nameLocation":"2405:17:19","nodeType":"VariableDeclaration","scope":7632,"src":"2397:25:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7624,"name":"address","nodeType":"ElementaryTypeName","src":"2397:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2396:27:19"},"returnParameters":{"id":7630,"nodeType":"ParameterList","parameters":[],"src":"2450:0:19"},"scope":7894,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":7642,"nodeType":"FunctionDefinition","src":"2588:59:19","nodes":[],"body":{"id":7641,"nodeType":"Block","src":"2622:25:19","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7638,"name":"_pause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11632,"src":"2632:6:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2632:8:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7640,"nodeType":"ExpressionStatement","src":"2632:8:19"}]},"documentation":{"id":7633,"nodeType":"StructuredDocumentation","src":"2462:121:19","text":" @notice 暂停合约仅gov可调用\n @dev 暂停后,所有资金流动操作将被禁止"},"functionSelector":"8456cb59","implemented":true,"kind":"function","modifiers":[{"id":7636,"kind":"modifierInvocation","modifierName":{"id":7635,"name":"onlyGov","nameLocations":["2614:7:19"],"nodeType":"IdentifierPath","referencedDeclaration":7537,"src":"2614:7:19"},"nodeType":"ModifierInvocation","src":"2614:7:19"}],"name":"pause","nameLocation":"2597:5:19","parameters":{"id":7634,"nodeType":"ParameterList","parameters":[],"src":"2602:2:19"},"returnParameters":{"id":7637,"nodeType":"ParameterList","parameters":[],"src":"2622:0:19"},"scope":7894,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":7652,"nodeType":"FunctionDefinition","src":"2722:63:19","nodes":[],"body":{"id":7651,"nodeType":"Block","src":"2758:27:19","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7648,"name":"_unpause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11656,"src":"2768:8:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2768:10:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7650,"nodeType":"ExpressionStatement","src":"2768:10:19"}]},"documentation":{"id":7643,"nodeType":"StructuredDocumentation","src":"2657:60:19","text":" @notice 恢复合约仅gov可调用"},"functionSelector":"3f4ba83a","implemented":true,"kind":"function","modifiers":[{"id":7646,"kind":"modifierInvocation","modifierName":{"id":7645,"name":"onlyGov","nameLocations":["2750:7:19"],"nodeType":"IdentifierPath","referencedDeclaration":7537,"src":"2750:7:19"},"nodeType":"ModifierInvocation","src":"2750:7:19"}],"name":"unpause","nameLocation":"2731:7:19","parameters":{"id":7644,"nodeType":"ParameterList","parameters":[],"src":"2738:2:19"},"returnParameters":{"id":7647,"nodeType":"ParameterList","parameters":[],"src":"2758:0:19"},"scope":7894,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":7722,"nodeType":"FunctionDefinition","src":"3046:697:19","nodes":[],"body":{"id":7721,"nodeType":"Block","src":"3229:514:19","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7670,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7657,"src":"3243:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3254:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3243:12:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7676,"nodeType":"IfStatement","src":"3239:40:19","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7673,"name":"InvalidAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7501,"src":"3264:13:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3264:15:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7675,"nodeType":"RevertStatement","src":"3257:22:19"}},{"assignments":[7678],"declarations":[{"constant":false,"id":7678,"mutability":"mutable","name":"account","nameLocation":"3306:7:19","nodeType":"VariableDeclaration","scope":7721,"src":"3298:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7677,"name":"address","nodeType":"ElementaryTypeName","src":"3298:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7681,"initialValue":{"expression":{"id":7679,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3316:3:19","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3320:6:19","memberName":"sender","nodeType":"MemberAccess","src":"3316:10:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3298:28:19"},{"expression":{"arguments":[{"id":7686,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7678,"src":"3377:7:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":7689,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3394:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_YTRewardRouter_$7894","typeString":"contract YTRewardRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_YTRewardRouter_$7894","typeString":"contract YTRewardRouter"}],"id":7688,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3386:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7687,"name":"address","nodeType":"ElementaryTypeName","src":"3386:7:19","typeDescriptions":{}}},"id":7690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3386:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7691,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7657,"src":"3401:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":7683,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7655,"src":"3352:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7682,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"3345:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":7684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3345:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":7685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3360:16:19","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":12746,"src":"3345:31:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$12648_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":7692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3345:64:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7693,"nodeType":"ExpressionStatement","src":"3345:64:19"},{"expression":{"arguments":[{"id":7698,"name":"ytPoolManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7511,"src":"3442:13:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7699,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7657,"src":"3457:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":7695,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7655,"src":"3426:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7694,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"3419:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":7696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3419:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":7697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3434:7:19","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":12635,"src":"3419:22:19","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":7700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3419:46:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7701,"nodeType":"ExpressionStatement","src":"3419:46:19"},{"assignments":[7703],"declarations":[{"constant":false,"id":7703,"mutability":"mutable","name":"ytLPAmount","nameLocation":"3492:10:19","nodeType":"VariableDeclaration","scope":7721,"src":"3484:18:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7702,"name":"uint256","nodeType":"ElementaryTypeName","src":"3484:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7718,"initialValue":{"arguments":[{"arguments":[{"id":7710,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3579:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_YTRewardRouter_$7894","typeString":"contract YTRewardRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_YTRewardRouter_$7894","typeString":"contract YTRewardRouter"}],"id":7709,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3571:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7708,"name":"address","nodeType":"ElementaryTypeName","src":"3571:7:19","typeDescriptions":{}}},"id":7711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3571:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7712,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7678,"src":"3598:7:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7713,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7655,"src":"3619:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7714,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7657,"src":"3639:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7715,"name":"_minUsdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7659,"src":"3660:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7716,"name":"_minYtLP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7661,"src":"3682:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":7705,"name":"ytPoolManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7511,"src":"3520:13:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7704,"name":"IYTPoolManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":327,"src":"3505:14:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IYTPoolManager_$327_$","typeString":"type(contract IYTPoolManager)"}},"id":7706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3505:29:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IYTPoolManager_$327","typeString":"contract IYTPoolManager"}},"id":7707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3535:22:19","memberName":"addLiquidityForAccount","nodeType":"MemberAccess","referencedDeclaration":304,"src":"3505:52:19","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,address,uint256,uint256,uint256) external returns (uint256)"}},"id":7717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3505:195:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3484:216:19"},{"expression":{"id":7719,"name":"ytLPAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7703,"src":"3726:10:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7669,"id":7720,"nodeType":"Return","src":"3719:17:19"}]},"documentation":{"id":7653,"nodeType":"StructuredDocumentation","src":"2795:246:19","text":" @notice 添加流动性\n @param _token YT代币或WUSD地址\n @param _amount 代币数量\n @param _minUsdy 最小USDY数量\n @param _minYtLP 最小ytLP数量\n @return ytLPAmount 获得的ytLP数量"},"functionSelector":"1ece366a","implemented":true,"kind":"function","modifiers":[{"id":7664,"kind":"modifierInvocation","modifierName":{"id":7663,"name":"nonReentrant","nameLocations":["3184:12:19"],"nodeType":"IdentifierPath","referencedDeclaration":11726,"src":"3184:12:19"},"nodeType":"ModifierInvocation","src":"3184:12:19"},{"id":7666,"kind":"modifierInvocation","modifierName":{"id":7665,"name":"whenNotPaused","nameLocations":["3197:13:19"],"nodeType":"IdentifierPath","referencedDeclaration":11547,"src":"3197:13:19"},"nodeType":"ModifierInvocation","src":"3197:13:19"}],"name":"addLiquidity","nameLocation":"3055:12:19","parameters":{"id":7662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7655,"mutability":"mutable","name":"_token","nameLocation":"3085:6:19","nodeType":"VariableDeclaration","scope":7722,"src":"3077:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7654,"name":"address","nodeType":"ElementaryTypeName","src":"3077:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7657,"mutability":"mutable","name":"_amount","nameLocation":"3109:7:19","nodeType":"VariableDeclaration","scope":7722,"src":"3101:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7656,"name":"uint256","nodeType":"ElementaryTypeName","src":"3101:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7659,"mutability":"mutable","name":"_minUsdy","nameLocation":"3134:8:19","nodeType":"VariableDeclaration","scope":7722,"src":"3126:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7658,"name":"uint256","nodeType":"ElementaryTypeName","src":"3126:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7661,"mutability":"mutable","name":"_minYtLP","nameLocation":"3160:8:19","nodeType":"VariableDeclaration","scope":7722,"src":"3152:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7660,"name":"uint256","nodeType":"ElementaryTypeName","src":"3152:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3067:107:19"},"returnParameters":{"id":7669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7668,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7722,"src":"3220:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7667,"name":"uint256","nodeType":"ElementaryTypeName","src":"3220:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3219:9:19"},"scope":7894,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":7768,"nodeType":"FunctionDefinition","src":"4005:553:19","nodes":[],"body":{"id":7767,"nodeType":"Block","src":"4198:360:19","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7740,"name":"_ytLPAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7727,"src":"4212:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4227:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4212:16:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7746,"nodeType":"IfStatement","src":"4208:44:19","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7743,"name":"InvalidAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7501,"src":"4237:13:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4237:15:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7745,"nodeType":"RevertStatement","src":"4230:22:19"}},{"assignments":[7748],"declarations":[{"constant":false,"id":7748,"mutability":"mutable","name":"account","nameLocation":"4279:7:19","nodeType":"VariableDeclaration","scope":7767,"src":"4271:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7747,"name":"address","nodeType":"ElementaryTypeName","src":"4271:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7751,"initialValue":{"expression":{"id":7749,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4289:3:19","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4293:6:19","memberName":"sender","nodeType":"MemberAccess","src":"4289:10:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4271:28:19"},{"assignments":[7753],"declarations":[{"constant":false,"id":7753,"mutability":"mutable","name":"amountOut","nameLocation":"4326:9:19","nodeType":"VariableDeclaration","scope":7767,"src":"4318:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7752,"name":"uint256","nodeType":"ElementaryTypeName","src":"4318:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7764,"initialValue":{"arguments":[{"id":7758,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7748,"src":"4407:7:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7759,"name":"_tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7725,"src":"4428:9:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7760,"name":"_ytLPAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7727,"src":"4451:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7761,"name":"_minOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7729,"src":"4476:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7762,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7731,"src":"4497:9:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":7755,"name":"ytPoolManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7511,"src":"4353:13:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7754,"name":"IYTPoolManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":327,"src":"4338:14:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IYTPoolManager_$327_$","typeString":"type(contract IYTPoolManager)"}},"id":7756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4338:29:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IYTPoolManager_$327","typeString":"contract IYTPoolManager"}},"id":7757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4368:25:19","memberName":"removeLiquidityForAccount","nodeType":"MemberAccess","referencedDeclaration":319,"src":"4338:55:19","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address,uint256,uint256,address) external returns (uint256)"}},"id":7763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4338:178:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4318:198:19"},{"expression":{"id":7765,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7753,"src":"4542:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7739,"id":7766,"nodeType":"Return","src":"4535:16:19"}]},"documentation":{"id":7723,"nodeType":"StructuredDocumentation","src":"3753:247:19","text":" @notice 移除流动性\n @param _tokenOut 输出代币地址\n @param _ytLPAmount ytLP数量\n @param _minOut 最小输出数量\n @param _receiver 接收地址\n @return amountOut 获得的代币数量"},"functionSelector":"8fed0b2c","implemented":true,"kind":"function","modifiers":[{"id":7734,"kind":"modifierInvocation","modifierName":{"id":7733,"name":"nonReentrant","nameLocations":["4153:12:19"],"nodeType":"IdentifierPath","referencedDeclaration":11726,"src":"4153:12:19"},"nodeType":"ModifierInvocation","src":"4153:12:19"},{"id":7736,"kind":"modifierInvocation","modifierName":{"id":7735,"name":"whenNotPaused","nameLocations":["4166:13:19"],"nodeType":"IdentifierPath","referencedDeclaration":11547,"src":"4166:13:19"},"nodeType":"ModifierInvocation","src":"4166:13:19"}],"name":"removeLiquidity","nameLocation":"4014:15:19","parameters":{"id":7732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7725,"mutability":"mutable","name":"_tokenOut","nameLocation":"4047:9:19","nodeType":"VariableDeclaration","scope":7768,"src":"4039:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7724,"name":"address","nodeType":"ElementaryTypeName","src":"4039:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7727,"mutability":"mutable","name":"_ytLPAmount","nameLocation":"4074:11:19","nodeType":"VariableDeclaration","scope":7768,"src":"4066:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7726,"name":"uint256","nodeType":"ElementaryTypeName","src":"4066:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7729,"mutability":"mutable","name":"_minOut","nameLocation":"4103:7:19","nodeType":"VariableDeclaration","scope":7768,"src":"4095:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7728,"name":"uint256","nodeType":"ElementaryTypeName","src":"4095:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7731,"mutability":"mutable","name":"_receiver","nameLocation":"4128:9:19","nodeType":"VariableDeclaration","scope":7768,"src":"4120:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7730,"name":"address","nodeType":"ElementaryTypeName","src":"4120:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4029:114:19"},"returnParameters":{"id":7739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7738,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7768,"src":"4189:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7737,"name":"uint256","nodeType":"ElementaryTypeName","src":"4189:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4188:9:19"},"scope":7894,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":7838,"nodeType":"FunctionDefinition","src":"4861:674:19","nodes":[],"body":{"id":7837,"nodeType":"Block","src":"5069:466:19","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7788,"name":"_amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7775,"src":"5083:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5096:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5083:14:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7794,"nodeType":"IfStatement","src":"5079:42:19","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7791,"name":"InvalidAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7501,"src":"5106:13:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5106:15:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7793,"nodeType":"RevertStatement","src":"5099:22:19"}},{"assignments":[7796],"declarations":[{"constant":false,"id":7796,"mutability":"mutable","name":"account","nameLocation":"5148:7:19","nodeType":"VariableDeclaration","scope":7837,"src":"5140:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7795,"name":"address","nodeType":"ElementaryTypeName","src":"5140:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7799,"initialValue":{"expression":{"id":7797,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5158:3:19","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5162:6:19","memberName":"sender","nodeType":"MemberAccess","src":"5158:10:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5140:28:19"},{"expression":{"arguments":[{"id":7804,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7796,"src":"5221:7:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7805,"name":"ytVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7513,"src":"5230:7:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7806,"name":"_amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7775,"src":"5239:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":7801,"name":"_tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7771,"src":"5194:8:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7800,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"5187:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":7802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5187:16:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":7803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5204:16:19","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":12746,"src":"5187:33:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$12648_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":7807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5187:62:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7808,"nodeType":"ExpressionStatement","src":"5187:62:19"},{"assignments":[7810],"declarations":[{"constant":false,"id":7810,"mutability":"mutable","name":"amountOut","nameLocation":"5276:9:19","nodeType":"VariableDeclaration","scope":7837,"src":"5268:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7809,"name":"uint256","nodeType":"ElementaryTypeName","src":"5268:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7819,"initialValue":{"arguments":[{"id":7815,"name":"_tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7771,"src":"5311:8:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7816,"name":"_tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7773,"src":"5321:9:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7817,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7779,"src":"5332:9:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":7812,"name":"ytVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7513,"src":"5297:7:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7811,"name":"IYTVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":434,"src":"5288:8:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IYTVault_$434_$","typeString":"type(contract IYTVault)"}},"id":7813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5288:17:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IYTVault_$434","typeString":"contract IYTVault"}},"id":7814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5306:4:19","memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":383,"src":"5288:22:19","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address,address) external returns (uint256)"}},"id":7818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5288:54:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5268:74:19"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7820,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7810,"src":"5365:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7821,"name":"_minOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7777,"src":"5377:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5365:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7826,"nodeType":"IfStatement","src":"5361:52:19","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7823,"name":"InsufficientOutput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7503,"src":"5393:18:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5393:20:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7825,"nodeType":"RevertStatement","src":"5386:27:19"}},{"eventCall":{"arguments":[{"id":7828,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7796,"src":"5442:7:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7829,"name":"_tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7771,"src":"5451:8:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7830,"name":"_tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7773,"src":"5461:9:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7831,"name":"_amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7775,"src":"5472:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7832,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7810,"src":"5483:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7827,"name":"Swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7525,"src":"5437:4:19","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256)"}},"id":7833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5437:56:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7834,"nodeType":"EmitStatement","src":"5432:61:19"},{"expression":{"id":7835,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7810,"src":"5519:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7787,"id":7836,"nodeType":"Return","src":"5512:16:19"}]},"documentation":{"id":7769,"nodeType":"StructuredDocumentation","src":"4568:288:19","text":" @notice YT代币互换\n @param _tokenIn 输入代币地址\n @param _tokenOut 输出代币地址\n @param _amountIn 输入数量\n @param _minOut 最小输出数量\n @param _receiver 接收地址\n @return amountOut 获得的代币数量"},"functionSelector":"925a9aef","implemented":true,"kind":"function","modifiers":[{"id":7782,"kind":"modifierInvocation","modifierName":{"id":7781,"name":"nonReentrant","nameLocations":["5024:12:19"],"nodeType":"IdentifierPath","referencedDeclaration":11726,"src":"5024:12:19"},"nodeType":"ModifierInvocation","src":"5024:12:19"},{"id":7784,"kind":"modifierInvocation","modifierName":{"id":7783,"name":"whenNotPaused","nameLocations":["5037:13:19"],"nodeType":"IdentifierPath","referencedDeclaration":11547,"src":"5037:13:19"},"nodeType":"ModifierInvocation","src":"5037:13:19"}],"name":"swapYT","nameLocation":"4870:6:19","parameters":{"id":7780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7771,"mutability":"mutable","name":"_tokenIn","nameLocation":"4894:8:19","nodeType":"VariableDeclaration","scope":7838,"src":"4886:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7770,"name":"address","nodeType":"ElementaryTypeName","src":"4886:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7773,"mutability":"mutable","name":"_tokenOut","nameLocation":"4920:9:19","nodeType":"VariableDeclaration","scope":7838,"src":"4912:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7772,"name":"address","nodeType":"ElementaryTypeName","src":"4912:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7775,"mutability":"mutable","name":"_amountIn","nameLocation":"4947:9:19","nodeType":"VariableDeclaration","scope":7838,"src":"4939:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7774,"name":"uint256","nodeType":"ElementaryTypeName","src":"4939:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7777,"mutability":"mutable","name":"_minOut","nameLocation":"4974:7:19","nodeType":"VariableDeclaration","scope":7838,"src":"4966:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7776,"name":"uint256","nodeType":"ElementaryTypeName","src":"4966:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7779,"mutability":"mutable","name":"_receiver","nameLocation":"4999:9:19","nodeType":"VariableDeclaration","scope":7838,"src":"4991:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7778,"name":"address","nodeType":"ElementaryTypeName","src":"4991:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4876:138:19"},"returnParameters":{"id":7787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7786,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7838,"src":"5060:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7785,"name":"uint256","nodeType":"ElementaryTypeName","src":"5060:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5059:9:19"},"scope":7894,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":7852,"nodeType":"FunctionDefinition","src":"5636:124:19","nodes":[],"body":{"id":7851,"nodeType":"Block","src":"5692:68:19","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"74727565","id":7848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5748:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[{"id":7845,"name":"ytPoolManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7511,"src":"5724:13:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7844,"name":"IYTPoolManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":327,"src":"5709:14:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IYTPoolManager_$327_$","typeString":"type(contract IYTPoolManager)"}},"id":7846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5709:29:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IYTPoolManager_$327","typeString":"contract IYTPoolManager"}},"id":7847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5739:8:19","memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":326,"src":"5709:38:19","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) view external returns (uint256)"}},"id":7849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5709:44:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7843,"id":7850,"nodeType":"Return","src":"5702:51:19"}]},"documentation":{"id":7839,"nodeType":"StructuredDocumentation","src":"5545:86:19","text":" @notice 获取ytLP价格\n @return ytLP价格18位精度"},"functionSelector":"1fb73c8b","implemented":true,"kind":"function","modifiers":[],"name":"getYtLPPrice","nameLocation":"5645:12:19","parameters":{"id":7840,"nodeType":"ParameterList","parameters":[],"src":"5657:2:19"},"returnParameters":{"id":7843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7842,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7852,"src":"5683:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7841,"name":"uint256","nodeType":"ElementaryTypeName","src":"5683:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5682:9:19"},"scope":7894,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":7888,"nodeType":"FunctionDefinition","src":"5913:273:19","nodes":[],"body":{"id":7887,"nodeType":"Block","src":"5988:198:19","nodes":[],"statements":[{"assignments":[7861],"declarations":[{"constant":false,"id":7861,"mutability":"mutable","name":"ytLPBalance","nameLocation":"6006:11:19","nodeType":"VariableDeclaration","scope":7887,"src":"5998:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7860,"name":"uint256","nodeType":"ElementaryTypeName","src":"5998:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7868,"initialValue":{"arguments":[{"id":7866,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7855,"src":"6043:8:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":7863,"name":"ytLP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7509,"src":"6027:4:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7862,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"6020:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":7864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6020:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":7865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6033:9:19","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":12605,"src":"6020:22:19","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":7867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6020:32:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5998:54:19"},{"assignments":[7870],"declarations":[{"constant":false,"id":7870,"mutability":"mutable","name":"ytLPPrice","nameLocation":"6070:9:19","nodeType":"VariableDeclaration","scope":7887,"src":"6062:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7869,"name":"uint256","nodeType":"ElementaryTypeName","src":"6062:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7877,"initialValue":{"arguments":[{"hexValue":"74727565","id":7875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6121:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[{"id":7872,"name":"ytPoolManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7511,"src":"6097:13:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7871,"name":"IYTPoolManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":327,"src":"6082:14:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IYTPoolManager_$327_$","typeString":"type(contract IYTPoolManager)"}},"id":7873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6082:29:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IYTPoolManager_$327","typeString":"contract IYTPoolManager"}},"id":7874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6112:8:19","memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":326,"src":"6082:38:19","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) view external returns (uint256)"}},"id":7876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6082:44:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6062:64:19"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7878,"name":"ytLPBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7861,"src":"6143:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7879,"name":"ytLPPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7870,"src":"6157:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6143:23:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"id":7883,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6170:2:19","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3138","id":7882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6176:2:19","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"6170:8:19","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}}],"id":7884,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6169:10:19","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}},"src":"6143:36:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7859,"id":7886,"nodeType":"Return","src":"6136:43:19"}]},"documentation":{"id":7853,"nodeType":"StructuredDocumentation","src":"5770:138:19","text":" @notice 获取账户价值\n @param _account 账户地址\n @return 账户持有的ytLP价值USDY计价"},"functionSelector":"5ae80951","implemented":true,"kind":"function","modifiers":[],"name":"getAccountValue","nameLocation":"5922:15:19","parameters":{"id":7856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7855,"mutability":"mutable","name":"_account","nameLocation":"5946:8:19","nodeType":"VariableDeclaration","scope":7888,"src":"5938:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7854,"name":"address","nodeType":"ElementaryTypeName","src":"5938:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5937:18:19"},"returnParameters":{"id":7859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7858,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7888,"src":"5979:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7857,"name":"uint256","nodeType":"ElementaryTypeName","src":"5979:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5978:9:19"},"scope":7894,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":7893,"nodeType":"VariableDeclaration","src":"6337:25:19","nodes":[],"constant":false,"documentation":{"id":7889,"nodeType":"StructuredDocumentation","src":"6196:136:19","text":" @dev 预留存储空间,用于未来升级时添加新的状态变量\n 50个slot = 50 * 32 bytes = 1600 bytes"},"mutability":"mutable","name":"__gap","nameLocation":"6357:5:19","scope":7894,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":7890,"name":"uint256","nodeType":"ElementaryTypeName","src":"6337:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7892,"length":{"hexValue":"3530","id":7891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6345:2:19","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"6337:11:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":7482,"name":"Initializable","nameLocations":["698:13:19"],"nodeType":"IdentifierPath","referencedDeclaration":10652,"src":"698:13:19"},"id":7483,"nodeType":"InheritanceSpecifier","src":"698:13:19"},{"baseName":{"id":7484,"name":"UUPSUpgradeable","nameLocations":["713:15:19"],"nodeType":"IdentifierPath","referencedDeclaration":10834,"src":"713:15:19"},"id":7485,"nodeType":"InheritanceSpecifier","src":"713:15:19"},{"baseName":{"id":7486,"name":"ReentrancyGuardUpgradeable","nameLocations":["730:26:19"],"nodeType":"IdentifierPath","referencedDeclaration":11786,"src":"730:26:19"},"id":7487,"nodeType":"InheritanceSpecifier","src":"730:26:19"},{"baseName":{"id":7488,"name":"PausableUpgradeable","nameLocations":["758:19:19"],"nodeType":"IdentifierPath","referencedDeclaration":11657,"src":"758:19:19"},"id":7489,"nodeType":"InheritanceSpecifier","src":"758:19:19"}],"canonicalName":"YTRewardRouter","contractDependencies":[],"contractKind":"contract","documentation":{"id":7481,"nodeType":"StructuredDocumentation","src":"580:90:19","text":" @title YTRewardRouter\n @notice 用户交互入口\n @dev UUPS可升级合约"},"fullyImplemented":true,"linearizedBaseContracts":[7894,11657,11497,11786,10834,12055,10652],"name":"YTRewardRouter","nameLocation":"680:14:19","scope":7895,"usedErrors":[7495,7497,7499,7501,7503,10401,10404,10679,10684,11536,11539,11688,12250,12263,12686,13148,13441],"usedEvents":[7525,10409,11528,11533,12028]}],"license":"MIT"}},"contracts/ytLp/core/YTVault.sol":{"id":20,"ast":{"absolutePath":"contracts/ytLp/core/YTVault.sol","id":9801,"exportedSymbols":{"ERC1967Utils":[12524],"IERC1363":[12016],"IERC1822Proxiable":[12055],"IERC20":[12648],"IUSDY":[268],"IYTPriceFeed":[339],"Initializable":[10652],"ReentrancyGuardUpgradeable":[11786],"SafeERC20":[13138],"UUPSUpgradeable":[10834],"YTVault":[9800]},"nodeType":"SourceUnit","src":"32:22450:20","nodes":[{"id":7896,"nodeType":"PragmaDirective","src":"32:23:20","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":7897,"nodeType":"ImportDirective","src":"57:82:20","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","nameLocation":"-1:-1:-1","scope":9801,"sourceUnit":11787,"symbolAliases":[],"unitAlias":""},{"id":7898,"nodeType":"ImportDirective","src":"140:75:20","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":9801,"sourceUnit":10653,"symbolAliases":[],"unitAlias":""},{"id":7899,"nodeType":"ImportDirective","src":"216:77:20","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":9801,"sourceUnit":10835,"symbolAliases":[],"unitAlias":""},{"id":7900,"nodeType":"ImportDirective","src":"294:56:20","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","nameLocation":"-1:-1:-1","scope":9801,"sourceUnit":12649,"symbolAliases":[],"unitAlias":""},{"id":7901,"nodeType":"ImportDirective","src":"351:65:20","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","nameLocation":"-1:-1:-1","scope":9801,"sourceUnit":13139,"symbolAliases":[],"unitAlias":""},{"id":7902,"nodeType":"ImportDirective","src":"417:36:20","nodes":[],"absolutePath":"contracts/interfaces/IUSDY.sol","file":"../../interfaces/IUSDY.sol","nameLocation":"-1:-1:-1","scope":9801,"sourceUnit":269,"symbolAliases":[],"unitAlias":""},{"id":7903,"nodeType":"ImportDirective","src":"454:43:20","nodes":[],"absolutePath":"contracts/interfaces/IYTPriceFeed.sol","file":"../../interfaces/IYTPriceFeed.sol","nameLocation":"-1:-1:-1","scope":9801,"sourceUnit":340,"symbolAliases":[],"unitAlias":""},{"id":9800,"nodeType":"ContractDefinition","src":"633:21847:20","nodes":[{"id":7914,"nodeType":"UsingForDirective","src":"718:27:20","nodes":[],"global":false,"libraryName":{"id":7911,"name":"SafeERC20","nameLocations":["724:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":13138,"src":"724:9:20"},"typeName":{"id":7913,"nodeType":"UserDefinedTypeName","pathNode":{"id":7912,"name":"IERC20","nameLocations":["738:6:20"],"nodeType":"IdentifierPath","referencedDeclaration":12648,"src":"738:6:20"},"referencedDeclaration":12648,"src":"738:6:20","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}}},{"id":7916,"nodeType":"ErrorDefinition","src":"755:18:20","nodes":[],"errorSelector":"ee90c468","name":"Forbidden","nameLocation":"761:9:20","parameters":{"id":7915,"nodeType":"ParameterList","parameters":[],"src":"770:2:20"}},{"id":7918,"nodeType":"ErrorDefinition","src":"778:24:20","nodes":[],"errorSelector":"f655705d","name":"OnlyPoolManager","nameLocation":"784:15:20","parameters":{"id":7917,"nodeType":"ParameterList","parameters":[],"src":"799:2:20"}},{"id":7920,"nodeType":"ErrorDefinition","src":"807:19:20","nodes":[],"errorSelector":"1e2885aa","name":"NotSwapper","nameLocation":"813:10:20","parameters":{"id":7919,"nodeType":"ParameterList","parameters":[],"src":"823:2:20"}},{"id":7922,"nodeType":"ErrorDefinition","src":"831:22:20","nodes":[],"errorSelector":"185079b9","name":"EmergencyMode","nameLocation":"837:13:20","parameters":{"id":7921,"nodeType":"ParameterList","parameters":[],"src":"850:2:20"}},{"id":7924,"nodeType":"ErrorDefinition","src":"858:23:20","nodes":[],"errorSelector":"e6c4247b","name":"InvalidAddress","nameLocation":"864:14:20","parameters":{"id":7923,"nodeType":"ParameterList","parameters":[],"src":"878:2:20"}},{"id":7926,"nodeType":"ErrorDefinition","src":"886:28:20","nodes":[],"errorSelector":"f84835a0","name":"TokenNotWhitelisted","nameLocation":"892:19:20","parameters":{"id":7925,"nodeType":"ParameterList","parameters":[],"src":"911:2:20"}},{"id":7928,"nodeType":"ErrorDefinition","src":"919:19:20","nodes":[],"errorSelector":"58d620b3","name":"InvalidFee","nameLocation":"925:10:20","parameters":{"id":7927,"nodeType":"ParameterList","parameters":[],"src":"935:2:20"}},{"id":7930,"nodeType":"ErrorDefinition","src":"943:23:20","nodes":[],"errorSelector":"ec73ce5c","name":"NotInEmergency","nameLocation":"949:14:20","parameters":{"id":7929,"nodeType":"ParameterList","parameters":[],"src":"963:2:20"}},{"id":7932,"nodeType":"ErrorDefinition","src":"971:24:20","nodes":[],"errorSelector":"850c6f76","name":"SlippageTooHigh","nameLocation":"977:15:20","parameters":{"id":7931,"nodeType":"ParameterList","parameters":[],"src":"992:2:20"}},{"id":7934,"nodeType":"ErrorDefinition","src":"1000:21:20","nodes":[],"errorSelector":"0a4f9ef2","name":"SwapDisabled","nameLocation":"1006:12:20","parameters":{"id":7933,"nodeType":"ParameterList","parameters":[],"src":"1018:2:20"}},{"id":7936,"nodeType":"ErrorDefinition","src":"1026:22:20","nodes":[],"errorSelector":"2c5211c6","name":"InvalidAmount","nameLocation":"1032:13:20","parameters":{"id":7935,"nodeType":"ParameterList","parameters":[],"src":"1045:2:20"}},{"id":7938,"nodeType":"ErrorDefinition","src":"1053:25:20","nodes":[],"errorSelector":"785eab37","name":"InsufficientPool","nameLocation":"1059:16:20","parameters":{"id":7937,"nodeType":"ParameterList","parameters":[],"src":"1075:2:20"}},{"id":7940,"nodeType":"ErrorDefinition","src":"1083:18:20","nodes":[],"errorSelector":"201b580a","name":"SameToken","nameLocation":"1089:9:20","parameters":{"id":7939,"nodeType":"ParameterList","parameters":[],"src":"1098:2:20"}},{"id":7942,"nodeType":"ErrorDefinition","src":"1106:27:20","nodes":[],"errorSelector":"b95eb508","name":"AmountExceedsLimit","nameLocation":"1112:18:20","parameters":{"id":7941,"nodeType":"ParameterList","parameters":[],"src":"1130:2:20"}},{"id":7944,"nodeType":"ErrorDefinition","src":"1138:24:20","nodes":[],"errorSelector":"a5659812","name":"MaxUSDYExceeded","nameLocation":"1144:15:20","parameters":{"id":7943,"nodeType":"ParameterList","parameters":[],"src":"1159:2:20"}},{"id":7946,"nodeType":"ErrorDefinition","src":"1167:31:20","nodes":[],"errorSelector":"55dcccf3","name":"InsufficientUSDYAmount","nameLocation":"1173:22:20","parameters":{"id":7945,"nodeType":"ParameterList","parameters":[],"src":"1195:2:20"}},{"id":7948,"nodeType":"ErrorDefinition","src":"1203:26:20","nodes":[],"errorSelector":"4c937ab5","name":"InvalidPoolAmount","nameLocation":"1209:17:20","parameters":{"id":7947,"nodeType":"ParameterList","parameters":[],"src":"1226:2:20"}},{"id":7950,"nodeType":"ErrorDefinition","src":"1234:27:20","nodes":[],"errorSelector":"194bd314","name":"DailyLimitExceeded","nameLocation":"1240:18:20","parameters":{"id":7949,"nodeType":"ParameterList","parameters":[],"src":"1258:2:20"}},{"id":7955,"nodeType":"VariableDeclaration","src":"1271:50:20","nodes":[],"constant":true,"functionSelector":"95082d25","mutability":"constant","name":"PRICE_PRECISION","nameLocation":"1295:15:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7951,"name":"uint256","nodeType":"ElementaryTypeName","src":"1271:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_1000000000000000000000000000000_by_1","typeString":"int_const 1000000000000000000000000000000"},"id":7954,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1313:2:20","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3330","id":7953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1319:2:20","typeDescriptions":{"typeIdentifier":"t_rational_30_by_1","typeString":"int_const 30"},"value":"30"},"src":"1313:8:20","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000000000000000_by_1","typeString":"int_const 1000000000000000000000000000000"}},"visibility":"public"},{"id":7958,"nodeType":"VariableDeclaration","src":"1327:52:20","nodes":[],"constant":true,"functionSelector":"126082cf","mutability":"constant","name":"BASIS_POINTS_DIVISOR","nameLocation":"1351:20:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7956,"name":"uint256","nodeType":"ElementaryTypeName","src":"1327:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3130303030","id":7957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1374:5:20","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"visibility":"public"},{"id":7961,"nodeType":"VariableDeclaration","src":"1385:42:20","nodes":[],"constant":true,"functionSelector":"cffc734c","mutability":"constant","name":"USDY_DECIMALS","nameLocation":"1409:13:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7959,"name":"uint256","nodeType":"ElementaryTypeName","src":"1385:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3138","id":7960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1425:2:20","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"visibility":"public"},{"id":7963,"nodeType":"VariableDeclaration","src":"1438:18:20","nodes":[],"constant":false,"functionSelector":"12d43a51","mutability":"mutable","name":"gov","nameLocation":"1453:3:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7962,"name":"address","nodeType":"ElementaryTypeName","src":"1438:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":7965,"nodeType":"VariableDeclaration","src":"1462:28:20","nodes":[],"constant":false,"functionSelector":"778d733d","mutability":"mutable","name":"ytPoolManager","nameLocation":"1477:13:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7964,"name":"address","nodeType":"ElementaryTypeName","src":"1462:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":7967,"nodeType":"VariableDeclaration","src":"1496:24:20","nodes":[],"constant":false,"functionSelector":"741bef1a","mutability":"mutable","name":"priceFeed","nameLocation":"1511:9:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7966,"name":"address","nodeType":"ElementaryTypeName","src":"1496:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":7969,"nodeType":"VariableDeclaration","src":"1526:19:20","nodes":[],"constant":false,"functionSelector":"98d506e9","mutability":"mutable","name":"usdy","nameLocation":"1541:4:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7968,"name":"address","nodeType":"ElementaryTypeName","src":"1526:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":7973,"nodeType":"VariableDeclaration","src":"1556:41:20","nodes":[],"constant":false,"functionSelector":"b64230ba","mutability":"mutable","name":"isSwapper","nameLocation":"1588:9:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":7972,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":7970,"name":"address","nodeType":"ElementaryTypeName","src":"1564:7:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1556:24:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":7971,"name":"bool","nodeType":"ElementaryTypeName","src":"1575:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":7975,"nodeType":"VariableDeclaration","src":"1634:25:20","nodes":[],"constant":false,"functionSelector":"351a964d","mutability":"mutable","name":"isSwapEnabled","nameLocation":"1646:13:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7974,"name":"bool","nodeType":"ElementaryTypeName","src":"1634:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"id":7977,"nodeType":"VariableDeclaration","src":"1665:25:20","nodes":[],"constant":false,"functionSelector":"0905f560","mutability":"mutable","name":"emergencyMode","nameLocation":"1677:13:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7976,"name":"bool","nodeType":"ElementaryTypeName","src":"1665:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"id":7980,"nodeType":"VariableDeclaration","src":"1724:37:20","nodes":[],"constant":false,"functionSelector":"e468baf0","mutability":"mutable","name":"allWhitelistedTokens","nameLocation":"1741:20:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[]"},"typeName":{"baseType":{"id":7978,"name":"address","nodeType":"ElementaryTypeName","src":"1724:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7979,"nodeType":"ArrayTypeName","src":"1724:9:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"public"},{"id":7984,"nodeType":"VariableDeclaration","src":"1767:49:20","nodes":[],"constant":false,"functionSelector":"daf9c210","mutability":"mutable","name":"whitelistedTokens","nameLocation":"1799:17:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":7983,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":7981,"name":"address","nodeType":"ElementaryTypeName","src":"1775:7:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1767:24:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":7982,"name":"bool","nodeType":"ElementaryTypeName","src":"1786:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":7988,"nodeType":"VariableDeclaration","src":"1822:44:20","nodes":[],"constant":false,"functionSelector":"42b60b03","mutability":"mutable","name":"stableTokens","nameLocation":"1854:12:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":7987,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":7985,"name":"address","nodeType":"ElementaryTypeName","src":"1830:7:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1822:24:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":7986,"name":"bool","nodeType":"ElementaryTypeName","src":"1841:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":7992,"nodeType":"VariableDeclaration","src":"1892:48:20","nodes":[],"constant":false,"functionSelector":"8ee573ac","mutability":"mutable","name":"tokenDecimals","nameLocation":"1927:13:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":7991,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":7989,"name":"address","nodeType":"ElementaryTypeName","src":"1900:7:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1892:27:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":7990,"name":"uint256","nodeType":"ElementaryTypeName","src":"1911:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"id":7996,"nodeType":"VariableDeclaration","src":"1946:47:20","nodes":[],"constant":false,"functionSelector":"ab2f3ad4","mutability":"mutable","name":"tokenWeights","nameLocation":"1981:12:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":7995,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":7993,"name":"address","nodeType":"ElementaryTypeName","src":"1954:7:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1946:27:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":7994,"name":"uint256","nodeType":"ElementaryTypeName","src":"1965:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"id":7998,"nodeType":"VariableDeclaration","src":"1999:32:20","nodes":[],"constant":false,"functionSelector":"dc8f5fac","mutability":"mutable","name":"totalTokenWeights","nameLocation":"2014:17:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7997,"name":"uint256","nodeType":"ElementaryTypeName","src":"1999:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":8002,"nodeType":"VariableDeclaration","src":"2062:46:20","nodes":[],"constant":false,"functionSelector":"52f55eed","mutability":"mutable","name":"poolAmounts","nameLocation":"2097:11:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":8001,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":7999,"name":"address","nodeType":"ElementaryTypeName","src":"2070:7:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2062:27:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8000,"name":"uint256","nodeType":"ElementaryTypeName","src":"2081:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"id":8006,"nodeType":"VariableDeclaration","src":"2114:48:20","nodes":[],"constant":false,"functionSelector":"523fba7f","mutability":"mutable","name":"tokenBalances","nameLocation":"2149:13:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":8005,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8003,"name":"address","nodeType":"ElementaryTypeName","src":"2122:7:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2114:27:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8004,"name":"uint256","nodeType":"ElementaryTypeName","src":"2133:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"id":8010,"nodeType":"VariableDeclaration","src":"2252:46:20","nodes":[],"constant":false,"functionSelector":"d3af922d","mutability":"mutable","name":"usdyAmounts","nameLocation":"2287:11:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":8009,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8007,"name":"address","nodeType":"ElementaryTypeName","src":"2260:7:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2252:27:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8008,"name":"uint256","nodeType":"ElementaryTypeName","src":"2271:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"id":8014,"nodeType":"VariableDeclaration","src":"2304:49:20","nodes":[],"constant":false,"functionSelector":"e17d4308","mutability":"mutable","name":"maxUsdyAmounts","nameLocation":"2339:14:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":8013,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8011,"name":"address","nodeType":"ElementaryTypeName","src":"2312:7:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2304:27:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8012,"name":"uint256","nodeType":"ElementaryTypeName","src":"2323:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"id":8016,"nodeType":"VariableDeclaration","src":"2387:33:20","nodes":[],"constant":false,"functionSelector":"a22f2392","mutability":"mutable","name":"swapFeeBasisPoints","nameLocation":"2402:18:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8015,"name":"uint256","nodeType":"ElementaryTypeName","src":"2387:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":8018,"nodeType":"VariableDeclaration","src":"2426:39:20","nodes":[],"constant":false,"functionSelector":"df73a267","mutability":"mutable","name":"stableSwapFeeBasisPoints","nameLocation":"2441:24:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8017,"name":"uint256","nodeType":"ElementaryTypeName","src":"2426:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":8020,"nodeType":"VariableDeclaration","src":"2471:29:20","nodes":[],"constant":false,"functionSelector":"7a210a2b","mutability":"mutable","name":"taxBasisPoints","nameLocation":"2486:14:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8019,"name":"uint256","nodeType":"ElementaryTypeName","src":"2471:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":8022,"nodeType":"VariableDeclaration","src":"2506:35:20","nodes":[],"constant":false,"functionSelector":"10eb56c2","mutability":"mutable","name":"stableTaxBasisPoints","nameLocation":"2521:20:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8021,"name":"uint256","nodeType":"ElementaryTypeName","src":"2506:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":8024,"nodeType":"VariableDeclaration","src":"2547:26:20","nodes":[],"constant":false,"functionSelector":"9f392eb3","mutability":"mutable","name":"hasDynamicFees","nameLocation":"2559:14:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8023,"name":"bool","nodeType":"ElementaryTypeName","src":"2547:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"id":8026,"nodeType":"VariableDeclaration","src":"2610:33:20","nodes":[],"constant":false,"functionSelector":"b7c3565d","mutability":"mutable","name":"maxSwapSlippageBps","nameLocation":"2625:18:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8025,"name":"uint256","nodeType":"ElementaryTypeName","src":"2610:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":8030,"nodeType":"VariableDeclaration","src":"2700:48:20","nodes":[],"constant":false,"functionSelector":"e7881011","mutability":"mutable","name":"maxSwapAmount","nameLocation":"2735:13:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":8029,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8027,"name":"address","nodeType":"ElementaryTypeName","src":"2708:7:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2700:27:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8028,"name":"uint256","nodeType":"ElementaryTypeName","src":"2719:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"id":8044,"nodeType":"EventDefinition","src":"2759:202:20","nodes":[],"anonymous":false,"eventSelector":"d6d34547c69c5ee3d2667625c188acf1006abb93e0ee7cf03925c67cf7760413","name":"Swap","nameLocation":"2765:4:20","parameters":{"id":8043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8032,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"2795:7:20","nodeType":"VariableDeclaration","scope":8044,"src":"2779:23:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8031,"name":"address","nodeType":"ElementaryTypeName","src":"2779:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8034,"indexed":true,"mutability":"mutable","name":"tokenIn","nameLocation":"2828:7:20","nodeType":"VariableDeclaration","scope":8044,"src":"2812:23:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8033,"name":"address","nodeType":"ElementaryTypeName","src":"2812:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8036,"indexed":true,"mutability":"mutable","name":"tokenOut","nameLocation":"2861:8:20","nodeType":"VariableDeclaration","scope":8044,"src":"2845:24:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8035,"name":"address","nodeType":"ElementaryTypeName","src":"2845:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8038,"indexed":false,"mutability":"mutable","name":"amountIn","nameLocation":"2887:8:20","nodeType":"VariableDeclaration","scope":8044,"src":"2879:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8037,"name":"uint256","nodeType":"ElementaryTypeName","src":"2879:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8040,"indexed":false,"mutability":"mutable","name":"amountOut","nameLocation":"2913:9:20","nodeType":"VariableDeclaration","scope":8044,"src":"2905:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8039,"name":"uint256","nodeType":"ElementaryTypeName","src":"2905:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8042,"indexed":false,"mutability":"mutable","name":"feeBasisPoints","nameLocation":"2940:14:20","nodeType":"VariableDeclaration","scope":8044,"src":"2932:22:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8041,"name":"uint256","nodeType":"ElementaryTypeName","src":"2932:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2769:191:20"}},{"id":8054,"nodeType":"EventDefinition","src":"2966:141:20","nodes":[],"anonymous":false,"eventSelector":"d2491a9b4fe81a7cd4511e8b7b7743951b061dad5bed7da8a7795b080ee08c7e","name":"AddLiquidity","nameLocation":"2972:12:20","parameters":{"id":8053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8046,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"3010:7:20","nodeType":"VariableDeclaration","scope":8054,"src":"2994:23:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8045,"name":"address","nodeType":"ElementaryTypeName","src":"2994:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8048,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"3043:5:20","nodeType":"VariableDeclaration","scope":8054,"src":"3027:21:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8047,"name":"address","nodeType":"ElementaryTypeName","src":"3027:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8050,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"3066:6:20","nodeType":"VariableDeclaration","scope":8054,"src":"3058:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8049,"name":"uint256","nodeType":"ElementaryTypeName","src":"3058:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8052,"indexed":false,"mutability":"mutable","name":"usdyAmount","nameLocation":"3090:10:20","nodeType":"VariableDeclaration","scope":8054,"src":"3082:18:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8051,"name":"uint256","nodeType":"ElementaryTypeName","src":"3082:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2984:122:20"}},{"id":8064,"nodeType":"EventDefinition","src":"3112:147:20","nodes":[],"anonymous":false,"eventSelector":"34ef8e86237e7385b43618862e895c6ce827b2b7d6107ad415d54336c1dd2dd6","name":"RemoveLiquidity","nameLocation":"3118:15:20","parameters":{"id":8063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8056,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"3159:7:20","nodeType":"VariableDeclaration","scope":8064,"src":"3143:23:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8055,"name":"address","nodeType":"ElementaryTypeName","src":"3143:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8058,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"3192:5:20","nodeType":"VariableDeclaration","scope":8064,"src":"3176:21:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8057,"name":"address","nodeType":"ElementaryTypeName","src":"3176:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8060,"indexed":false,"mutability":"mutable","name":"usdyAmount","nameLocation":"3215:10:20","nodeType":"VariableDeclaration","scope":8064,"src":"3207:18:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8059,"name":"uint256","nodeType":"ElementaryTypeName","src":"3207:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8062,"indexed":false,"mutability":"mutable","name":"amountOut","nameLocation":"3243:9:20","nodeType":"VariableDeclaration","scope":8064,"src":"3235:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8061,"name":"uint256","nodeType":"ElementaryTypeName","src":"3235:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3133:125:20"}},{"id":8068,"nodeType":"EventDefinition","src":"3264:37:20","nodes":[],"anonymous":false,"eventSelector":"63382423ad002e5a7fcc41286858cb0a9ac9251517adf5d154e219544c40f445","name":"EmergencyModeSet","nameLocation":"3270:16:20","parameters":{"id":8067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8066,"indexed":false,"mutability":"mutable","name":"enabled","nameLocation":"3292:7:20","nodeType":"VariableDeclaration","scope":8068,"src":"3287:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8065,"name":"bool","nodeType":"ElementaryTypeName","src":"3287:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3286:14:20"}},{"id":8072,"nodeType":"EventDefinition","src":"3306:35:20","nodes":[],"anonymous":false,"eventSelector":"5a9e84f78f7957cb4ed7478eb0fcad35ee4ecbe2e0f298420b28a3955392573f","name":"SwapEnabledSet","nameLocation":"3312:14:20","parameters":{"id":8071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8070,"indexed":false,"mutability":"mutable","name":"enabled","nameLocation":"3332:7:20","nodeType":"VariableDeclaration","scope":8072,"src":"3327:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8069,"name":"bool","nodeType":"ElementaryTypeName","src":"3327:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3326:14:20"}},{"id":8084,"nodeType":"ModifierDefinition","src":"3351:88:20","nodes":[],"body":{"id":8083,"nodeType":"Block","src":"3370:69:20","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8074,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3384:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3388:6:20","memberName":"sender","nodeType":"MemberAccess","src":"3384:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8076,"name":"gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7963,"src":"3398:3:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3384:17:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8081,"nodeType":"IfStatement","src":"3380:41:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8078,"name":"Forbidden","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7916,"src":"3410:9:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3410:11:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8080,"nodeType":"RevertStatement","src":"3403:18:20"}},{"id":8082,"nodeType":"PlaceholderStatement","src":"3431:1:20"}]},"name":"onlyGov","nameLocation":"3360:7:20","parameters":{"id":8073,"nodeType":"ParameterList","parameters":[],"src":"3367:2:20"},"virtual":false,"visibility":"internal"},{"id":8096,"nodeType":"ModifierDefinition","src":"3449:112:20","nodes":[],"body":{"id":8095,"nodeType":"Block","src":"3476:85:20","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8086,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3490:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3494:6:20","memberName":"sender","nodeType":"MemberAccess","src":"3490:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8088,"name":"ytPoolManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7965,"src":"3504:13:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3490:27:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8093,"nodeType":"IfStatement","src":"3486:57:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8090,"name":"OnlyPoolManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7918,"src":"3526:15:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3526:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8092,"nodeType":"RevertStatement","src":"3519:24:20"}},{"id":8094,"nodeType":"PlaceholderStatement","src":"3553:1:20"}]},"name":"onlyPoolManager","nameLocation":"3458:15:20","parameters":{"id":8085,"nodeType":"ParameterList","parameters":[],"src":"3473:2:20"},"virtual":false,"visibility":"internal"},{"id":8114,"nodeType":"ModifierDefinition","src":"3571:129:20","nodes":[],"body":{"id":8113,"nodeType":"Block","src":"3594:106:20","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3608:22:20","subExpression":{"baseExpression":{"id":8098,"name":"isSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7973,"src":"3609:9:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":8101,"indexExpression":{"expression":{"id":8099,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3619:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3623:6:20","memberName":"sender","nodeType":"MemberAccess","src":"3619:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3609:21:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8103,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3634:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3638:6:20","memberName":"sender","nodeType":"MemberAccess","src":"3634:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8105,"name":"ytPoolManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7965,"src":"3648:13:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3634:27:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3608:53:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8111,"nodeType":"IfStatement","src":"3604:78:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8108,"name":"NotSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7920,"src":"3670:10:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3670:12:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8110,"nodeType":"RevertStatement","src":"3663:19:20"}},{"id":8112,"nodeType":"PlaceholderStatement","src":"3692:1:20"}]},"name":"onlySwapper","nameLocation":"3580:11:20","parameters":{"id":8097,"nodeType":"ParameterList","parameters":[],"src":"3591:2:20"},"virtual":false,"visibility":"internal"},{"id":8123,"nodeType":"ModifierDefinition","src":"3710:95:20","nodes":[],"body":{"id":8122,"nodeType":"Block","src":"3736:69:20","nodes":[],"statements":[{"condition":{"id":8116,"name":"emergencyMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7977,"src":"3750:13:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8120,"nodeType":"IfStatement","src":"3746:41:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8117,"name":"EmergencyMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7922,"src":"3772:13:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3772:15:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8119,"nodeType":"RevertStatement","src":"3765:22:20"}},{"id":8121,"nodeType":"PlaceholderStatement","src":"3797:1:20"}]},"name":"notInEmergency","nameLocation":"3719:14:20","parameters":{"id":8115,"nodeType":"ParameterList","parameters":[],"src":"3733:2:20"},"virtual":false,"visibility":"internal"},{"id":8208,"nodeType":"FunctionDefinition","src":"3946:798:20","nodes":[],"body":{"id":8207,"nodeType":"Block","src":"4022:722:20","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8133,"name":"_usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8126,"src":"4036:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4053:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4045:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8134,"name":"address","nodeType":"ElementaryTypeName","src":"4045:7:20","typeDescriptions":{}}},"id":8137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4045:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4036:19:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8139,"name":"_priceFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8128,"src":"4059:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4081:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8141,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4073:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8140,"name":"address","nodeType":"ElementaryTypeName","src":"4073:7:20","typeDescriptions":{}}},"id":8143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4073:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4059:24:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4036:47:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8149,"nodeType":"IfStatement","src":"4032:76:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8146,"name":"InvalidAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"4092:14:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4092:16:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8148,"nodeType":"RevertStatement","src":"4085:23:20"}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8150,"name":"__ReentrancyGuard_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11697,"src":"4127:22:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4127:24:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8152,"nodeType":"ExpressionStatement","src":"4127:24:20"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8153,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10706,"src":"4161:22:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4161:24:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8155,"nodeType":"ExpressionStatement","src":"4161:24:20"},{"expression":{"id":8159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8156,"name":"gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7963,"src":"4204:3:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":8157,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4210:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4214:6:20","memberName":"sender","nodeType":"MemberAccess","src":"4210:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4204:16:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8160,"nodeType":"ExpressionStatement","src":"4204:16:20"},{"expression":{"id":8163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8161,"name":"usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7969,"src":"4230:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8162,"name":"_usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8126,"src":"4237:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4230:12:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8164,"nodeType":"ExpressionStatement","src":"4230:12:20"},{"expression":{"id":8167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8165,"name":"priceFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7967,"src":"4252:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8166,"name":"_priceFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8128,"src":"4264:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4252:22:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8168,"nodeType":"ExpressionStatement","src":"4252:22:20"},{"expression":{"id":8171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8169,"name":"isSwapEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7975,"src":"4323:13:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":8170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4339:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4323:20:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8172,"nodeType":"ExpressionStatement","src":"4323:20:20"},{"expression":{"id":8175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8173,"name":"emergencyMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7977,"src":"4353:13:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":8174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4369:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"4353:21:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8176,"nodeType":"ExpressionStatement","src":"4353:21:20"},{"expression":{"id":8179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8177,"name":"swapFeeBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8016,"src":"4384:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3330","id":8178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4405:2:20","typeDescriptions":{"typeIdentifier":"t_rational_30_by_1","typeString":"int_const 30"},"value":"30"},"src":"4384:23:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8180,"nodeType":"ExpressionStatement","src":"4384:23:20"},{"expression":{"id":8183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8181,"name":"stableSwapFeeBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8018,"src":"4417:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"34","id":8182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4444:1:20","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"4417:28:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8184,"nodeType":"ExpressionStatement","src":"4417:28:20"},{"expression":{"id":8187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8185,"name":"taxBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8020,"src":"4455:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3530","id":8186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4472:2:20","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"src":"4455:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8188,"nodeType":"ExpressionStatement","src":"4455:19:20"},{"expression":{"id":8191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8189,"name":"stableTaxBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8022,"src":"4484:20:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3230","id":8190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4507:2:20","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"src":"4484:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8192,"nodeType":"ExpressionStatement","src":"4484:25:20"},{"expression":{"id":8195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8193,"name":"hasDynamicFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8024,"src":"4519:14:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":8194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4536:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4519:21:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8196,"nodeType":"ExpressionStatement","src":"4519:21:20"},{"expression":{"id":8199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8197,"name":"maxSwapSlippageBps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8026,"src":"4550:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31303030","id":8198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4571:4:20","typeDescriptions":{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},"value":"1000"},"src":"4550:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8200,"nodeType":"ExpressionStatement","src":"4550:25:20"},{"expression":{"id":8205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8201,"name":"stableTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7988,"src":"4711:12:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":8203,"indexExpression":{"id":8202,"name":"_usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8126,"src":"4724:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4711:19:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":8204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4733:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4711:26:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8206,"nodeType":"ExpressionStatement","src":"4711:26:20"}]},"documentation":{"id":8124,"nodeType":"StructuredDocumentation","src":"3815:126:20","text":" @notice 初始化合约\n @param _usdy USDY代币地址\n @param _priceFeed 价格预言机地址"},"functionSelector":"485cc955","implemented":true,"kind":"function","modifiers":[{"id":8131,"kind":"modifierInvocation","modifierName":{"id":8130,"name":"initializer","nameLocations":["4010:11:20"],"nodeType":"IdentifierPath","referencedDeclaration":10492,"src":"4010:11:20"},"nodeType":"ModifierInvocation","src":"4010:11:20"}],"name":"initialize","nameLocation":"3955:10:20","parameters":{"id":8129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8126,"mutability":"mutable","name":"_usdy","nameLocation":"3974:5:20","nodeType":"VariableDeclaration","scope":8208,"src":"3966:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8125,"name":"address","nodeType":"ElementaryTypeName","src":"3966:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8128,"mutability":"mutable","name":"_priceFeed","nameLocation":"3989:10:20","nodeType":"VariableDeclaration","scope":8208,"src":"3981:18:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8127,"name":"address","nodeType":"ElementaryTypeName","src":"3981:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3965:35:20"},"returnParameters":{"id":8132,"nodeType":"ParameterList","parameters":[],"src":"4022:0:20"},"scope":9800,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":8218,"nodeType":"FunctionDefinition","src":"4873:82:20","nodes":[],"body":{"id":8217,"nodeType":"Block","src":"4953:2:20","nodes":[],"statements":[]},"baseFunctions":[10788],"documentation":{"id":8209,"nodeType":"StructuredDocumentation","src":"4754:114:20","text":" @notice 授权升级仅gov可调用\n @param newImplementation 新实现合约地址"},"implemented":true,"kind":"function","modifiers":[{"id":8215,"kind":"modifierInvocation","modifierName":{"id":8214,"name":"onlyGov","nameLocations":["4945:7:20"],"nodeType":"IdentifierPath","referencedDeclaration":8084,"src":"4945:7:20"},"nodeType":"ModifierInvocation","src":"4945:7:20"}],"name":"_authorizeUpgrade","nameLocation":"4882:17:20","overrides":{"id":8213,"nodeType":"OverrideSpecifier","overrides":[],"src":"4936:8:20"},"parameters":{"id":8212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8211,"mutability":"mutable","name":"newImplementation","nameLocation":"4908:17:20","nodeType":"VariableDeclaration","scope":8218,"src":"4900:25:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8210,"name":"address","nodeType":"ElementaryTypeName","src":"4900:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4899:27:20"},"returnParameters":{"id":8216,"nodeType":"ParameterList","parameters":[],"src":"4953:0:20"},"scope":9800,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":8240,"nodeType":"FunctionDefinition","src":"4965:131:20","nodes":[],"body":{"id":8239,"nodeType":"Block","src":"5012:84:20","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8225,"name":"_gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8220,"src":"5026:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5042:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5034:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8226,"name":"address","nodeType":"ElementaryTypeName","src":"5034:7:20","typeDescriptions":{}}},"id":8229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5034:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5026:18:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8234,"nodeType":"IfStatement","src":"5022:47:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8231,"name":"InvalidAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"5053:14:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5053:16:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8233,"nodeType":"RevertStatement","src":"5046:23:20"}},{"expression":{"id":8237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8235,"name":"gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7963,"src":"5079:3:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8236,"name":"_gov","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8220,"src":"5085:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5079:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8238,"nodeType":"ExpressionStatement","src":"5079:10:20"}]},"functionSelector":"cfad57a2","implemented":true,"kind":"function","modifiers":[{"id":8223,"kind":"modifierInvocation","modifierName":{"id":8222,"name":"onlyGov","nameLocations":["5004:7:20"],"nodeType":"IdentifierPath","referencedDeclaration":8084,"src":"5004:7:20"},"nodeType":"ModifierInvocation","src":"5004:7:20"}],"name":"setGov","nameLocation":"4974:6:20","parameters":{"id":8221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8220,"mutability":"mutable","name":"_gov","nameLocation":"4989:4:20","nodeType":"VariableDeclaration","scope":8240,"src":"4981:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8219,"name":"address","nodeType":"ElementaryTypeName","src":"4981:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4980:14:20"},"returnParameters":{"id":8224,"nodeType":"ParameterList","parameters":[],"src":"5012:0:20"},"scope":9800,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":8262,"nodeType":"FunctionDefinition","src":"5106:161:20","nodes":[],"body":{"id":8261,"nodeType":"Block","src":"5165:102:20","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8247,"name":"_manager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8242,"src":"5179:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5199:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8249,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5191:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8248,"name":"address","nodeType":"ElementaryTypeName","src":"5191:7:20","typeDescriptions":{}}},"id":8251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5191:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5179:22:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8256,"nodeType":"IfStatement","src":"5175:51:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8253,"name":"InvalidAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"5210:14:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5210:16:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8255,"nodeType":"RevertStatement","src":"5203:23:20"}},{"expression":{"id":8259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8257,"name":"ytPoolManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7965,"src":"5236:13:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8258,"name":"_manager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8242,"src":"5252:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5236:24:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8260,"nodeType":"ExpressionStatement","src":"5236:24:20"}]},"functionSelector":"7aef6715","implemented":true,"kind":"function","modifiers":[{"id":8245,"kind":"modifierInvocation","modifierName":{"id":8244,"name":"onlyGov","nameLocations":["5157:7:20"],"nodeType":"IdentifierPath","referencedDeclaration":8084,"src":"5157:7:20"},"nodeType":"ModifierInvocation","src":"5157:7:20"}],"name":"setPoolManager","nameLocation":"5115:14:20","parameters":{"id":8243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8242,"mutability":"mutable","name":"_manager","nameLocation":"5138:8:20","nodeType":"VariableDeclaration","scope":8262,"src":"5130:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8241,"name":"address","nodeType":"ElementaryTypeName","src":"5130:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5129:18:20"},"returnParameters":{"id":8246,"nodeType":"ParameterList","parameters":[],"src":"5165:0:20"},"scope":9800,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":8288,"nodeType":"FunctionDefinition","src":"5277:180:20","nodes":[],"body":{"id":8287,"nodeType":"Block","src":"5348:109:20","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8271,"name":"_swapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8264,"src":"5362:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5382:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8273,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5374:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8272,"name":"address","nodeType":"ElementaryTypeName","src":"5374:7:20","typeDescriptions":{}}},"id":8275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5374:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5362:22:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8280,"nodeType":"IfStatement","src":"5358:51:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8277,"name":"InvalidAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"5393:14:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5393:16:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8279,"nodeType":"RevertStatement","src":"5386:23:20"}},{"expression":{"id":8285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8281,"name":"isSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7973,"src":"5419:9:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":8283,"indexExpression":{"id":8282,"name":"_swapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8264,"src":"5429:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5419:19:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8284,"name":"_isActive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8266,"src":"5441:9:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5419:31:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8286,"nodeType":"ExpressionStatement","src":"5419:31:20"}]},"functionSelector":"3f2617cb","implemented":true,"kind":"function","modifiers":[{"id":8269,"kind":"modifierInvocation","modifierName":{"id":8268,"name":"onlyGov","nameLocations":["5340:7:20"],"nodeType":"IdentifierPath","referencedDeclaration":8084,"src":"5340:7:20"},"nodeType":"ModifierInvocation","src":"5340:7:20"}],"name":"setSwapper","nameLocation":"5286:10:20","parameters":{"id":8267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8264,"mutability":"mutable","name":"_swapper","nameLocation":"5305:8:20","nodeType":"VariableDeclaration","scope":8288,"src":"5297:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8263,"name":"address","nodeType":"ElementaryTypeName","src":"5297:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8266,"mutability":"mutable","name":"_isActive","nameLocation":"5320:9:20","nodeType":"VariableDeclaration","scope":8288,"src":"5315:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8265,"name":"bool","nodeType":"ElementaryTypeName","src":"5315:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5296:34:20"},"returnParameters":{"id":8270,"nodeType":"ParameterList","parameters":[],"src":"5348:0:20"},"scope":9800,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":8366,"nodeType":"FunctionDefinition","src":"5467:667:20","nodes":[],"body":{"id":8365,"nodeType":"Block","src":"5651:483:20","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8303,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8290,"src":"5665:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8306,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5683:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8305,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5675:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8304,"name":"address","nodeType":"ElementaryTypeName","src":"5675:7:20","typeDescriptions":{}}},"id":8307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5675:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5665:20:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8312,"nodeType":"IfStatement","src":"5661:49:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8309,"name":"InvalidAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"5694:14:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5694:16:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8311,"nodeType":"RevertStatement","src":"5687:23:20"}},{"condition":{"id":8316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5733:26:20","subExpression":{"baseExpression":{"id":8313,"name":"whitelistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7984,"src":"5734:17:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":8315,"indexExpression":{"id":8314,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8290,"src":"5752:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5734:25:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8330,"nodeType":"IfStatement","src":"5729:136:20","trueBody":{"id":8329,"nodeType":"Block","src":"5761:104:20","statements":[{"expression":{"arguments":[{"id":8320,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8290,"src":"5801:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8317,"name":"allWhitelistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7980,"src":"5775:20:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":8319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5796:4:20","memberName":"push","nodeType":"MemberAccess","src":"5775:25:20","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer,address)"}},"id":8321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5775:33:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8322,"nodeType":"ExpressionStatement","src":"5775:33:20"},{"expression":{"id":8327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8323,"name":"whitelistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7984,"src":"5822:17:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":8325,"indexExpression":{"id":8324,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8290,"src":"5840:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5822:25:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":8326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5850:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5822:32:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8328,"nodeType":"ExpressionStatement","src":"5822:32:20"}]}},{"expression":{"id":8339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8331,"name":"totalTokenWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7998,"src":"5883:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8332,"name":"totalTokenWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7998,"src":"5903:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"baseExpression":{"id":8333,"name":"tokenWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7996,"src":"5923:12:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8335,"indexExpression":{"id":8334,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8290,"src":"5936:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5923:20:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5903:40:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":8337,"name":"_weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8294,"src":"5946:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5903:50:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5883:70:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8340,"nodeType":"ExpressionStatement","src":"5883:70:20"},{"expression":{"id":8345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8341,"name":"tokenDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7992,"src":"5963:13:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8343,"indexExpression":{"id":8342,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8290,"src":"5977:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5963:21:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8344,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8292,"src":"5987:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5963:33:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8346,"nodeType":"ExpressionStatement","src":"5963:33:20"},{"expression":{"id":8351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8347,"name":"tokenWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7996,"src":"6006:12:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8349,"indexExpression":{"id":8348,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8290,"src":"6019:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6006:20:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8350,"name":"_weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8294,"src":"6029:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6006:30:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8352,"nodeType":"ExpressionStatement","src":"6006:30:20"},{"expression":{"id":8357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8353,"name":"maxUsdyAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8014,"src":"6046:14:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8355,"indexExpression":{"id":8354,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8290,"src":"6061:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6046:22:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8356,"name":"_maxUsdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8296,"src":"6071:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6046:39:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8358,"nodeType":"ExpressionStatement","src":"6046:39:20"},{"expression":{"id":8363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8359,"name":"stableTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7988,"src":"6095:12:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":8361,"indexExpression":{"id":8360,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8290,"src":"6108:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6095:20:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8362,"name":"_isStable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8298,"src":"6118:9:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6095:32:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8364,"nodeType":"ExpressionStatement","src":"6095:32:20"}]},"functionSelector":"3a0ede36","implemented":true,"kind":"function","modifiers":[{"id":8301,"kind":"modifierInvocation","modifierName":{"id":8300,"name":"onlyGov","nameLocations":["5643:7:20"],"nodeType":"IdentifierPath","referencedDeclaration":8084,"src":"5643:7:20"},"nodeType":"ModifierInvocation","src":"5643:7:20"}],"name":"setWhitelistedToken","nameLocation":"5476:19:20","parameters":{"id":8299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8290,"mutability":"mutable","name":"_token","nameLocation":"5513:6:20","nodeType":"VariableDeclaration","scope":8366,"src":"5505:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8289,"name":"address","nodeType":"ElementaryTypeName","src":"5505:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8292,"mutability":"mutable","name":"_decimals","nameLocation":"5537:9:20","nodeType":"VariableDeclaration","scope":8366,"src":"5529:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8291,"name":"uint256","nodeType":"ElementaryTypeName","src":"5529:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8294,"mutability":"mutable","name":"_weight","nameLocation":"5564:7:20","nodeType":"VariableDeclaration","scope":8366,"src":"5556:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8293,"name":"uint256","nodeType":"ElementaryTypeName","src":"5556:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8296,"mutability":"mutable","name":"_maxUsdyAmount","nameLocation":"5589:14:20","nodeType":"VariableDeclaration","scope":8366,"src":"5581:22:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8295,"name":"uint256","nodeType":"ElementaryTypeName","src":"5581:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8298,"mutability":"mutable","name":"_isStable","nameLocation":"5618:9:20","nodeType":"VariableDeclaration","scope":8366,"src":"5613:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8297,"name":"bool","nodeType":"ElementaryTypeName","src":"5613:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5495:138:20"},"returnParameters":{"id":8302,"nodeType":"ParameterList","parameters":[],"src":"5651:0:20"},"scope":9800,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":8415,"nodeType":"FunctionDefinition","src":"6144:404:20","nodes":[],"body":{"id":8414,"nodeType":"Block","src":"6208:340:20","nodes":[],"statements":[{"condition":{"id":8376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6222:26:20","subExpression":{"baseExpression":{"id":8373,"name":"whitelistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7984,"src":"6223:17:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":8375,"indexExpression":{"id":8374,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"6241:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6223:25:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8380,"nodeType":"IfStatement","src":"6218:60:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8377,"name":"TokenNotWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7926,"src":"6257:19:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6257:21:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8379,"nodeType":"RevertStatement","src":"6250:28:20"}},{"expression":{"id":8387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8381,"name":"totalTokenWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7998,"src":"6288:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8382,"name":"totalTokenWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7998,"src":"6308:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"baseExpression":{"id":8383,"name":"tokenWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7996,"src":"6328:12:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8385,"indexExpression":{"id":8384,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"6341:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6328:20:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6308:40:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6288:60:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8388,"nodeType":"ExpressionStatement","src":"6288:60:20"},{"expression":{"id":8392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"6358:32:20","subExpression":{"baseExpression":{"id":8389,"name":"whitelistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7984,"src":"6365:17:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":8391,"indexExpression":{"id":8390,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"6383:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6365:25:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8393,"nodeType":"ExpressionStatement","src":"6358:32:20"},{"expression":{"id":8397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"6400:27:20","subExpression":{"baseExpression":{"id":8394,"name":"stableTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7988,"src":"6407:12:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":8396,"indexExpression":{"id":8395,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"6420:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6407:20:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8398,"nodeType":"ExpressionStatement","src":"6400:27:20"},{"expression":{"id":8402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"6437:28:20","subExpression":{"baseExpression":{"id":8399,"name":"tokenDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7992,"src":"6444:13:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8401,"indexExpression":{"id":8400,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"6458:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6444:21:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8403,"nodeType":"ExpressionStatement","src":"6437:28:20"},{"expression":{"id":8407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"6475:27:20","subExpression":{"baseExpression":{"id":8404,"name":"tokenWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7996,"src":"6482:12:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8406,"indexExpression":{"id":8405,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"6495:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6482:20:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8408,"nodeType":"ExpressionStatement","src":"6475:27:20"},{"expression":{"id":8412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"6512:29:20","subExpression":{"baseExpression":{"id":8409,"name":"maxUsdyAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8014,"src":"6519:14:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8411,"indexExpression":{"id":8410,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"6534:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6519:22:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8413,"nodeType":"ExpressionStatement","src":"6512:29:20"}]},"functionSelector":"1d517d65","implemented":true,"kind":"function","modifiers":[{"id":8371,"kind":"modifierInvocation","modifierName":{"id":8370,"name":"onlyGov","nameLocations":["6200:7:20"],"nodeType":"IdentifierPath","referencedDeclaration":8084,"src":"6200:7:20"},"nodeType":"ModifierInvocation","src":"6200:7:20"}],"name":"clearWhitelistedToken","nameLocation":"6153:21:20","parameters":{"id":8369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8368,"mutability":"mutable","name":"_token","nameLocation":"6183:6:20","nodeType":"VariableDeclaration","scope":8415,"src":"6175:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8367,"name":"address","nodeType":"ElementaryTypeName","src":"6175:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6174:16:20"},"returnParameters":{"id":8372,"nodeType":"ParameterList","parameters":[],"src":"6208:0:20"},"scope":9800,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":8456,"nodeType":"FunctionDefinition","src":"6558:439:20","nodes":[],"body":{"id":8455,"nodeType":"Block","src":"6732:265:20","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8428,"name":"_swapFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8417,"src":"6746:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"313030","id":8429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6757:3:20","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"6746:14:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8431,"name":"_stableSwapFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8419,"src":"6764:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3530","id":8432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6781:2:20","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"src":"6764:19:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6746:37:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8438,"nodeType":"IfStatement","src":"6742:62:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8435,"name":"InvalidFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7928,"src":"6792:10:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6792:12:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8437,"nodeType":"RevertStatement","src":"6785:19:20"}},{"expression":{"id":8441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8439,"name":"swapFeeBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8016,"src":"6814:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8440,"name":"_swapFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8417,"src":"6835:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6814:29:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8442,"nodeType":"ExpressionStatement","src":"6814:29:20"},{"expression":{"id":8445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8443,"name":"stableSwapFeeBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8018,"src":"6853:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8444,"name":"_stableSwapFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8419,"src":"6880:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6853:41:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8446,"nodeType":"ExpressionStatement","src":"6853:41:20"},{"expression":{"id":8449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8447,"name":"taxBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8020,"src":"6904:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8448,"name":"_taxBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8421,"src":"6921:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6904:32:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8450,"nodeType":"ExpressionStatement","src":"6904:32:20"},{"expression":{"id":8453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8451,"name":"stableTaxBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8022,"src":"6946:20:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8452,"name":"_stableTaxBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8423,"src":"6969:21:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6946:44:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8454,"nodeType":"ExpressionStatement","src":"6946:44:20"}]},"functionSelector":"8038cbd3","implemented":true,"kind":"function","modifiers":[{"id":8426,"kind":"modifierInvocation","modifierName":{"id":8425,"name":"onlyGov","nameLocations":["6724:7:20"],"nodeType":"IdentifierPath","referencedDeclaration":8084,"src":"6724:7:20"},"nodeType":"ModifierInvocation","src":"6724:7:20"}],"name":"setSwapFees","nameLocation":"6567:11:20","parameters":{"id":8424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8417,"mutability":"mutable","name":"_swapFee","nameLocation":"6596:8:20","nodeType":"VariableDeclaration","scope":8456,"src":"6588:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8416,"name":"uint256","nodeType":"ElementaryTypeName","src":"6588:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8419,"mutability":"mutable","name":"_stableSwapFee","nameLocation":"6622:14:20","nodeType":"VariableDeclaration","scope":8456,"src":"6614:22:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8418,"name":"uint256","nodeType":"ElementaryTypeName","src":"6614:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8421,"mutability":"mutable","name":"_taxBasisPoints","nameLocation":"6654:15:20","nodeType":"VariableDeclaration","scope":8456,"src":"6646:23:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8420,"name":"uint256","nodeType":"ElementaryTypeName","src":"6646:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8423,"mutability":"mutable","name":"_stableTaxBasisPoints","nameLocation":"6687:21:20","nodeType":"VariableDeclaration","scope":8456,"src":"6679:29:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8422,"name":"uint256","nodeType":"ElementaryTypeName","src":"6679:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6578:136:20"},"returnParameters":{"id":8427,"nodeType":"ParameterList","parameters":[],"src":"6732:0:20"},"scope":9800,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":8468,"nodeType":"FunctionDefinition","src":"7007:112:20","nodes":[],"body":{"id":8467,"nodeType":"Block","src":"7070:49:20","nodes":[],"statements":[{"expression":{"id":8465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8463,"name":"hasDynamicFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8024,"src":"7080:14:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8464,"name":"_hasDynamicFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8458,"src":"7097:15:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7080:32:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8466,"nodeType":"ExpressionStatement","src":"7080:32:20"}]},"functionSelector":"2f1983d4","implemented":true,"kind":"function","modifiers":[{"id":8461,"kind":"modifierInvocation","modifierName":{"id":8460,"name":"onlyGov","nameLocations":["7062:7:20"],"nodeType":"IdentifierPath","referencedDeclaration":8084,"src":"7062:7:20"},"nodeType":"ModifierInvocation","src":"7062:7:20"}],"name":"setDynamicFees","nameLocation":"7016:14:20","parameters":{"id":8459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8458,"mutability":"mutable","name":"_hasDynamicFees","nameLocation":"7036:15:20","nodeType":"VariableDeclaration","scope":8468,"src":"7031:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8457,"name":"bool","nodeType":"ElementaryTypeName","src":"7031:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7030:22:20"},"returnParameters":{"id":8462,"nodeType":"ParameterList","parameters":[],"src":"7070:0:20"},"scope":9800,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":8484,"nodeType":"FunctionDefinition","src":"7129:158:20","nodes":[],"body":{"id":8483,"nodeType":"Block","src":"7193:94:20","nodes":[],"statements":[{"expression":{"id":8477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8475,"name":"emergencyMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7977,"src":"7203:13:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8476,"name":"_emergencyMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8470,"src":"7219:14:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7203:30:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8478,"nodeType":"ExpressionStatement","src":"7203:30:20"},{"eventCall":{"arguments":[{"id":8480,"name":"_emergencyMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8470,"src":"7265:14:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8479,"name":"EmergencyModeSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8068,"src":"7248:16:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":8481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7248:32:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8482,"nodeType":"EmitStatement","src":"7243:37:20"}]},"functionSelector":"be32b3f8","implemented":true,"kind":"function","modifiers":[{"id":8473,"kind":"modifierInvocation","modifierName":{"id":8472,"name":"onlyGov","nameLocations":["7185:7:20"],"nodeType":"IdentifierPath","referencedDeclaration":8084,"src":"7185:7:20"},"nodeType":"ModifierInvocation","src":"7185:7:20"}],"name":"setEmergencyMode","nameLocation":"7138:16:20","parameters":{"id":8471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8470,"mutability":"mutable","name":"_emergencyMode","nameLocation":"7160:14:20","nodeType":"VariableDeclaration","scope":8484,"src":"7155:19:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8469,"name":"bool","nodeType":"ElementaryTypeName","src":"7155:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7154:21:20"},"returnParameters":{"id":8474,"nodeType":"ParameterList","parameters":[],"src":"7193:0:20"},"scope":9800,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":8500,"nodeType":"FunctionDefinition","src":"7297:154:20","nodes":[],"body":{"id":8499,"nodeType":"Block","src":"7359:92:20","nodes":[],"statements":[{"expression":{"id":8493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8491,"name":"isSwapEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7975,"src":"7369:13:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8492,"name":"_isSwapEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8486,"src":"7385:14:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7369:30:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8494,"nodeType":"ExpressionStatement","src":"7369:30:20"},{"eventCall":{"arguments":[{"id":8496,"name":"_isSwapEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8486,"src":"7429:14:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8495,"name":"SwapEnabledSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8072,"src":"7414:14:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":8497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7414:30:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8498,"nodeType":"EmitStatement","src":"7409:35:20"}]},"functionSelector":"e01af92c","implemented":true,"kind":"function","modifiers":[{"id":8489,"kind":"modifierInvocation","modifierName":{"id":8488,"name":"onlyGov","nameLocations":["7351:7:20"],"nodeType":"IdentifierPath","referencedDeclaration":8084,"src":"7351:7:20"},"nodeType":"ModifierInvocation","src":"7351:7:20"}],"name":"setSwapEnabled","nameLocation":"7306:14:20","parameters":{"id":8487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8486,"mutability":"mutable","name":"_isSwapEnabled","nameLocation":"7326:14:20","nodeType":"VariableDeclaration","scope":8500,"src":"7321:19:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8485,"name":"bool","nodeType":"ElementaryTypeName","src":"7321:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7320:21:20"},"returnParameters":{"id":8490,"nodeType":"ParameterList","parameters":[],"src":"7359:0:20"},"scope":9800,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":8530,"nodeType":"FunctionDefinition","src":"7461:246:20","nodes":[],"body":{"id":8529,"nodeType":"Block","src":"7553:154:20","nodes":[],"statements":[{"condition":{"id":8512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7567:14:20","subExpression":{"id":8511,"name":"emergencyMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7977,"src":"7568:13:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8516,"nodeType":"IfStatement","src":"7563:43:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8513,"name":"NotInEmergency","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7930,"src":"7590:14:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7590:16:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8515,"nodeType":"RevertStatement","src":"7583:23:20"}},{"expression":{"arguments":[{"id":8521,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8504,"src":"7644:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8522,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8506,"src":"7655:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8518,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8502,"src":"7623:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8517,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"7616:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":8519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7616:14:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":8520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7631:12:20","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":12719,"src":"7616:27:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$12648_$","typeString":"function (contract IERC20,address,uint256)"}},"id":8523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7616:47:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8524,"nodeType":"ExpressionStatement","src":"7616:47:20"},{"expression":{"arguments":[{"id":8526,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8502,"src":"7693:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8525,"name":"_updateTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9609,"src":"7673:19:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7673:27:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8528,"nodeType":"ExpressionStatement","src":"7673:27:20"}]},"functionSelector":"01e33667","implemented":true,"kind":"function","modifiers":[{"id":8509,"kind":"modifierInvocation","modifierName":{"id":8508,"name":"onlyGov","nameLocations":["7545:7:20"],"nodeType":"IdentifierPath","referencedDeclaration":8084,"src":"7545:7:20"},"nodeType":"ModifierInvocation","src":"7545:7:20"}],"name":"withdrawToken","nameLocation":"7470:13:20","parameters":{"id":8507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8502,"mutability":"mutable","name":"_token","nameLocation":"7492:6:20","nodeType":"VariableDeclaration","scope":8530,"src":"7484:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8501,"name":"address","nodeType":"ElementaryTypeName","src":"7484:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8504,"mutability":"mutable","name":"_receiver","nameLocation":"7508:9:20","nodeType":"VariableDeclaration","scope":8530,"src":"7500:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8503,"name":"address","nodeType":"ElementaryTypeName","src":"7500:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8506,"mutability":"mutable","name":"_amount","nameLocation":"7527:7:20","nodeType":"VariableDeclaration","scope":8530,"src":"7519:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8505,"name":"uint256","nodeType":"ElementaryTypeName","src":"7519:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7483:52:20"},"returnParameters":{"id":8510,"nodeType":"ParameterList","parameters":[],"src":"7553:0:20"},"scope":9800,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":8549,"nodeType":"FunctionDefinition","src":"7717:192:20","nodes":[],"body":{"id":8548,"nodeType":"Block","src":"7787:122:20","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8537,"name":"_slippageBps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8532,"src":"7801:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"32303030","id":8538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7816:4:20","typeDescriptions":{"typeIdentifier":"t_rational_2000_by_1","typeString":"int_const 2000"},"value":"2000"},"src":"7801:19:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8543,"nodeType":"IfStatement","src":"7797:49:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8540,"name":"SlippageTooHigh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7932,"src":"7829:15:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7829:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8542,"nodeType":"RevertStatement","src":"7822:24:20"}},{"expression":{"id":8546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8544,"name":"maxSwapSlippageBps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8026,"src":"7869:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8545,"name":"_slippageBps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8532,"src":"7890:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7869:33:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8547,"nodeType":"ExpressionStatement","src":"7869:33:20"}]},"functionSelector":"e89d59de","implemented":true,"kind":"function","modifiers":[{"id":8535,"kind":"modifierInvocation","modifierName":{"id":8534,"name":"onlyGov","nameLocations":["7779:7:20"],"nodeType":"IdentifierPath","referencedDeclaration":8084,"src":"7779:7:20"},"nodeType":"ModifierInvocation","src":"7779:7:20"}],"name":"setMaxSwapSlippageBps","nameLocation":"7726:21:20","parameters":{"id":8533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8532,"mutability":"mutable","name":"_slippageBps","nameLocation":"7756:12:20","nodeType":"VariableDeclaration","scope":8549,"src":"7748:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8531,"name":"uint256","nodeType":"ElementaryTypeName","src":"7748:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7747:22:20"},"returnParameters":{"id":8536,"nodeType":"ParameterList","parameters":[],"src":"7787:0:20"},"scope":9800,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":8565,"nodeType":"FunctionDefinition","src":"7919:124:20","nodes":[],"body":{"id":8564,"nodeType":"Block","src":"7995:48:20","nodes":[],"statements":[{"expression":{"id":8562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8558,"name":"maxSwapAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8030,"src":"8005:13:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8560,"indexExpression":{"id":8559,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8551,"src":"8019:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8005:21:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8561,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8553,"src":"8029:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8005:31:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8563,"nodeType":"ExpressionStatement","src":"8005:31:20"}]},"functionSelector":"a589d319","implemented":true,"kind":"function","modifiers":[{"id":8556,"kind":"modifierInvocation","modifierName":{"id":8555,"name":"onlyGov","nameLocations":["7987:7:20"],"nodeType":"IdentifierPath","referencedDeclaration":8084,"src":"7987:7:20"},"nodeType":"ModifierInvocation","src":"7987:7:20"}],"name":"setMaxSwapAmount","nameLocation":"7928:16:20","parameters":{"id":8554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8551,"mutability":"mutable","name":"_token","nameLocation":"7953:6:20","nodeType":"VariableDeclaration","scope":8565,"src":"7945:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8550,"name":"address","nodeType":"ElementaryTypeName","src":"7945:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8553,"mutability":"mutable","name":"_amount","nameLocation":"7969:7:20","nodeType":"VariableDeclaration","scope":8565,"src":"7961:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8552,"name":"uint256","nodeType":"ElementaryTypeName","src":"7961:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7944:33:20"},"returnParameters":{"id":8557,"nodeType":"ParameterList","parameters":[],"src":"7995:0:20"},"scope":9800,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":8704,"nodeType":"FunctionDefinition","src":"8274:1490:20","nodes":[],"body":{"id":8703,"nodeType":"Block","src":"8446:1318:20","nodes":[],"statements":[{"condition":{"id":8584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8460:26:20","subExpression":{"baseExpression":{"id":8581,"name":"whitelistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7984,"src":"8461:17:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":8583,"indexExpression":{"id":8582,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8568,"src":"8479:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8461:25:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8588,"nodeType":"IfStatement","src":"8456:60:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8585,"name":"TokenNotWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7926,"src":"8495:19:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8495:21:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8587,"nodeType":"RevertStatement","src":"8488:28:20"}},{"condition":{"id":8590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8530:14:20","subExpression":{"id":8589,"name":"isSwapEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7975,"src":"8531:13:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8594,"nodeType":"IfStatement","src":"8526:41:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8591,"name":"SwapDisabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7934,"src":"8553:12:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8553:14:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8593,"nodeType":"RevertStatement","src":"8546:21:20"}},{"assignments":[8596],"declarations":[{"constant":false,"id":8596,"mutability":"mutable","name":"tokenAmount","nameLocation":"8594:11:20","nodeType":"VariableDeclaration","scope":8703,"src":"8586:19:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8595,"name":"uint256","nodeType":"ElementaryTypeName","src":"8586:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8600,"initialValue":{"arguments":[{"id":8598,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8568,"src":"8620:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8597,"name":"_transferIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9589,"src":"8608:11:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) returns (uint256)"}},"id":8599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8608:19:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8586:41:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8601,"name":"tokenAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8596,"src":"8641:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8656:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8641:16:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8607,"nodeType":"IfStatement","src":"8637:44:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8604,"name":"InvalidAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7936,"src":"8666:13:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8666:15:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8606,"nodeType":"RevertStatement","src":"8659:22:20"}},{"assignments":[8609],"declarations":[{"constant":false,"id":8609,"mutability":"mutable","name":"price","nameLocation":"8708:5:20","nodeType":"VariableDeclaration","scope":8703,"src":"8700:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8608,"name":"uint256","nodeType":"ElementaryTypeName","src":"8700:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8614,"initialValue":{"arguments":[{"id":8611,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8568,"src":"8726:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":8612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8734:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8610,"name":"_getPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9728,"src":"8716:9:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$returns$_t_uint256_$","typeString":"function (address,bool) view returns (uint256)"}},"id":8613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8716:24:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8700:40:20"},{"assignments":[8616],"declarations":[{"constant":false,"id":8616,"mutability":"mutable","name":"usdyAmount","nameLocation":"8758:10:20","nodeType":"VariableDeclaration","scope":8703,"src":"8750:18:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8615,"name":"uint256","nodeType":"ElementaryTypeName","src":"8750:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8622,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8617,"name":"tokenAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8596,"src":"8771:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8618,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8609,"src":"8785:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8771:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8620,"name":"PRICE_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7955,"src":"8793:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8771:37:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8750:58:20"},{"expression":{"id":8629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8623,"name":"usdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8616,"src":"8818:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8625,"name":"usdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8616,"src":"8850:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8626,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8568,"src":"8862:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8627,"name":"usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7969,"src":"8870:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8624,"name":"_adjustForDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9794,"src":"8831:18:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address,address) view returns (uint256)"}},"id":8628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8831:44:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8818:57:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8630,"nodeType":"ExpressionStatement","src":"8818:57:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8631,"name":"usdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8616,"src":"8889:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8903:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8889:15:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8637,"nodeType":"IfStatement","src":"8885:43:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8634,"name":"InvalidAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7936,"src":"8913:13:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8913:15:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8636,"nodeType":"RevertStatement","src":"8906:22:20"}},{"assignments":[8639],"declarations":[{"constant":false,"id":8639,"mutability":"mutable","name":"feeBasisPoints","nameLocation":"8955:14:20","nodeType":"VariableDeclaration","scope":8703,"src":"8947:22:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8638,"name":"uint256","nodeType":"ElementaryTypeName","src":"8947:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8645,"initialValue":{"arguments":[{"id":8641,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8568,"src":"8995:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8642,"name":"usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7969,"src":"9003:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8643,"name":"usdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8616,"src":"9009:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8640,"name":"_getSwapFeeBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9413,"src":"8972:22:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view returns (uint256)"}},"id":8644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8972:48:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8947:73:20"},{"assignments":[8647],"declarations":[{"constant":false,"id":8647,"mutability":"mutable","name":"feeAmount","nameLocation":"9038:9:20","nodeType":"VariableDeclaration","scope":8703,"src":"9030:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8646,"name":"uint256","nodeType":"ElementaryTypeName","src":"9030:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8653,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8648,"name":"tokenAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8596,"src":"9050:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8649,"name":"feeBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8639,"src":"9064:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9050:28:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8651,"name":"BASIS_POINTS_DIVISOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7958,"src":"9081:20:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9050:51:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9030:71:20"},{"assignments":[8655],"declarations":[{"constant":false,"id":8655,"mutability":"mutable","name":"amountAfterFees","nameLocation":"9119:15:20","nodeType":"VariableDeclaration","scope":8703,"src":"9111:23:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8654,"name":"uint256","nodeType":"ElementaryTypeName","src":"9111:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8659,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8656,"name":"tokenAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8596,"src":"9137:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8657,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8647,"src":"9151:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9137:23:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9111:49:20"},{"assignments":[8661],"declarations":[{"constant":false,"id":8661,"mutability":"mutable","name":"usdyAmountAfterFees","nameLocation":"9187:19:20","nodeType":"VariableDeclaration","scope":8703,"src":"9179:27:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8660,"name":"uint256","nodeType":"ElementaryTypeName","src":"9179:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8667,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8662,"name":"amountAfterFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"9209:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8663,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8609,"src":"9227:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9209:23:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8665,"name":"PRICE_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7955,"src":"9235:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9209:41:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9179:71:20"},{"expression":{"id":8674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8668,"name":"usdyAmountAfterFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8661,"src":"9260:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8670,"name":"usdyAmountAfterFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8661,"src":"9301:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8671,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8568,"src":"9322:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8672,"name":"usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7969,"src":"9330:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8669,"name":"_adjustForDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9794,"src":"9282:18:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address,address) view returns (uint256)"}},"id":8673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9282:53:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9260:75:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8675,"nodeType":"ExpressionStatement","src":"9260:75:20"},{"expression":{"arguments":[{"id":8677,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8568,"src":"9478:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8678,"name":"tokenAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8596,"src":"9486:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8676,"name":"_increasePoolAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9627,"src":"9458:19:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":8679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9458:40:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8680,"nodeType":"ExpressionStatement","src":"9458:40:20"},{"expression":{"arguments":[{"id":8682,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8568,"src":"9528:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8683,"name":"usdyAmountAfterFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8661,"src":"9536:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8681,"name":"_increaseUsdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9279,"src":"9508:19:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":8684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9508:48:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8685,"nodeType":"ExpressionStatement","src":"9508:48:20"},{"expression":{"arguments":[{"id":8690,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8570,"src":"9592:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8691,"name":"usdyAmountAfterFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8661,"src":"9603:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8687,"name":"usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7969,"src":"9581:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8686,"name":"IUSDY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":268,"src":"9575:5:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IUSDY_$268_$","typeString":"type(contract IUSDY)"}},"id":8688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9575:11:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IUSDY_$268","typeString":"contract IUSDY"}},"id":8689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9587:4:20","memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":255,"src":"9575:16:20","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":8692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9575:48:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8693,"nodeType":"ExpressionStatement","src":"9575:48:20"},{"eventCall":{"arguments":[{"id":8695,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8570,"src":"9660:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8696,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8568,"src":"9671:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8697,"name":"tokenAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8596,"src":"9679:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8698,"name":"usdyAmountAfterFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8661,"src":"9692:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8694,"name":"AddLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8054,"src":"9647:12:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":8699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9647:65:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8700,"nodeType":"EmitStatement","src":"9642:70:20"},{"expression":{"id":8701,"name":"usdyAmountAfterFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8661,"src":"9738:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8580,"id":8702,"nodeType":"Return","src":"9731:26:20"}]},"documentation":{"id":8566,"nodeType":"StructuredDocumentation","src":"8053:216:20","text":" @notice 用YT代币购买USDY添加流动性时调用\n @param _token YT代币地址\n @param _receiver USDY接收地址\n @return usdyAmountAfterFees 实际获得的USDY数量"},"functionSelector":"2efc7660","implemented":true,"kind":"function","modifiers":[{"id":8573,"kind":"modifierInvocation","modifierName":{"id":8572,"name":"onlyPoolManager","nameLocations":["8353:15:20"],"nodeType":"IdentifierPath","referencedDeclaration":8096,"src":"8353:15:20"},"nodeType":"ModifierInvocation","src":"8353:15:20"},{"id":8575,"kind":"modifierInvocation","modifierName":{"id":8574,"name":"nonReentrant","nameLocations":["8378:12:20"],"nodeType":"IdentifierPath","referencedDeclaration":11726,"src":"8378:12:20"},"nodeType":"ModifierInvocation","src":"8378:12:20"},{"id":8577,"kind":"modifierInvocation","modifierName":{"id":8576,"name":"notInEmergency","nameLocations":["8400:14:20"],"nodeType":"IdentifierPath","referencedDeclaration":8123,"src":"8400:14:20"},"nodeType":"ModifierInvocation","src":"8400:14:20"}],"name":"buyUSDY","nameLocation":"8283:7:20","parameters":{"id":8571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8568,"mutability":"mutable","name":"_token","nameLocation":"8299:6:20","nodeType":"VariableDeclaration","scope":8704,"src":"8291:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8567,"name":"address","nodeType":"ElementaryTypeName","src":"8291:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8570,"mutability":"mutable","name":"_receiver","nameLocation":"8315:9:20","nodeType":"VariableDeclaration","scope":8704,"src":"8307:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8569,"name":"address","nodeType":"ElementaryTypeName","src":"8307:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8290:35:20"},"returnParameters":{"id":8580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8579,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8704,"src":"8432:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8578,"name":"uint256","nodeType":"ElementaryTypeName","src":"8432:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8431:9:20"},"scope":9800,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":8871,"nodeType":"FunctionDefinition","src":"10008:1862:20","nodes":[],"body":{"id":8870,"nodeType":"Block","src":"10181:1689:20","nodes":[],"statements":[{"condition":{"id":8723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10195:26:20","subExpression":{"baseExpression":{"id":8720,"name":"whitelistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7984,"src":"10196:17:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":8722,"indexExpression":{"id":8721,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8707,"src":"10214:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10196:25:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8727,"nodeType":"IfStatement","src":"10191:60:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8724,"name":"TokenNotWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7926,"src":"10230:19:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10230:21:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8726,"nodeType":"RevertStatement","src":"10223:28:20"}},{"condition":{"id":8729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10265:14:20","subExpression":{"id":8728,"name":"isSwapEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7975,"src":"10266:13:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8733,"nodeType":"IfStatement","src":"10261:41:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8730,"name":"SwapDisabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7934,"src":"10288:12:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10288:14:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8732,"nodeType":"RevertStatement","src":"10281:21:20"}},{"assignments":[8735],"declarations":[{"constant":false,"id":8735,"mutability":"mutable","name":"usdyAmount","nameLocation":"10329:10:20","nodeType":"VariableDeclaration","scope":8870,"src":"10321:18:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8734,"name":"uint256","nodeType":"ElementaryTypeName","src":"10321:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8739,"initialValue":{"arguments":[{"id":8737,"name":"usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7969,"src":"10354:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8736,"name":"_transferIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9589,"src":"10342:11:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) returns (uint256)"}},"id":8738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10342:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10321:38:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8740,"name":"usdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8735,"src":"10373:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10387:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10373:15:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8746,"nodeType":"IfStatement","src":"10369:43:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8743,"name":"InvalidAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7936,"src":"10397:13:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10397:15:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8745,"nodeType":"RevertStatement","src":"10390:22:20"}},{"assignments":[8748],"declarations":[{"constant":false,"id":8748,"mutability":"mutable","name":"price","nameLocation":"10439:5:20","nodeType":"VariableDeclaration","scope":8870,"src":"10431:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8747,"name":"uint256","nodeType":"ElementaryTypeName","src":"10431:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8753,"initialValue":{"arguments":[{"id":8750,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8707,"src":"10457:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":8751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10465:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8749,"name":"_getPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9728,"src":"10447:9:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$returns$_t_uint256_$","typeString":"function (address,bool) view returns (uint256)"}},"id":8752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10447:23:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10431:39:20"},{"assignments":[8755],"declarations":[{"constant":false,"id":8755,"mutability":"mutable","name":"redemptionAmount","nameLocation":"10542:16:20","nodeType":"VariableDeclaration","scope":8870,"src":"10534:24:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8754,"name":"uint256","nodeType":"ElementaryTypeName","src":"10534:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8761,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8756,"name":"usdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8735,"src":"10561:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8757,"name":"PRICE_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7955,"src":"10574:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10561:28:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8759,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8748,"src":"10592:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10561:36:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10534:63:20"},{"expression":{"id":8768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8762,"name":"redemptionAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8755,"src":"10607:16:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8764,"name":"redemptionAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8755,"src":"10645:16:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8765,"name":"usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7969,"src":"10663:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8766,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8707,"src":"10669:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8763,"name":"_adjustForDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9794,"src":"10626:18:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address,address) view returns (uint256)"}},"id":8767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10626:50:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10607:69:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8769,"nodeType":"ExpressionStatement","src":"10607:69:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8770,"name":"redemptionAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8755,"src":"10690:16:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10710:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10690:21:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8776,"nodeType":"IfStatement","src":"10686:49:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8773,"name":"InvalidAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7936,"src":"10720:13:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10720:15:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8775,"nodeType":"RevertStatement","src":"10713:22:20"}},{"assignments":[8778],"declarations":[{"constant":false,"id":8778,"mutability":"mutable","name":"feeBasisPoints","nameLocation":"10810:14:20","nodeType":"VariableDeclaration","scope":8870,"src":"10802:22:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8777,"name":"uint256","nodeType":"ElementaryTypeName","src":"10802:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8784,"initialValue":{"arguments":[{"id":8780,"name":"usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7969,"src":"10850:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8781,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8707,"src":"10856:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8782,"name":"redemptionAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8755,"src":"10864:16:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8779,"name":"_getSwapFeeBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9413,"src":"10827:22:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view returns (uint256)"}},"id":8783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10827:54:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10802:79:20"},{"assignments":[8786],"declarations":[{"constant":false,"id":8786,"mutability":"mutable","name":"amountOut","nameLocation":"10899:9:20","nodeType":"VariableDeclaration","scope":8870,"src":"10891:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8785,"name":"uint256","nodeType":"ElementaryTypeName","src":"10891:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8795,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8787,"name":"redemptionAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8755,"src":"10911:16:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8788,"name":"BASIS_POINTS_DIVISOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7958,"src":"10931:20:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8789,"name":"feeBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8778,"src":"10954:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10931:37:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8791,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10930:39:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10911:58:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8793,"name":"BASIS_POINTS_DIVISOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7958,"src":"10972:20:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10911:81:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10891:101:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8796,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8786,"src":"11006:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11019:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11006:14:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8802,"nodeType":"IfStatement","src":"11002:42:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8799,"name":"InvalidAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7936,"src":"11029:13:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11029:15:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8801,"nodeType":"RevertStatement","src":"11022:22:20"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":8803,"name":"poolAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8002,"src":"11058:11:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8805,"indexExpression":{"id":8804,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8707,"src":"11070:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11058:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8806,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8786,"src":"11080:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11058:31:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8811,"nodeType":"IfStatement","src":"11054:62:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8808,"name":"InsufficientPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7938,"src":"11098:16:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11098:18:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8810,"nodeType":"RevertStatement","src":"11091:25:20"}},{"assignments":[8813],"declarations":[{"constant":false,"id":8813,"mutability":"mutable","name":"usdyAmountOut","nameLocation":"11235:13:20","nodeType":"VariableDeclaration","scope":8870,"src":"11227:21:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8812,"name":"uint256","nodeType":"ElementaryTypeName","src":"11227:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8819,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8814,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8786,"src":"11251:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8815,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8748,"src":"11263:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11251:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8817,"name":"PRICE_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7955,"src":"11271:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11251:35:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11227:59:20"},{"expression":{"id":8826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8820,"name":"usdyAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8813,"src":"11296:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8822,"name":"usdyAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8813,"src":"11331:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8823,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8707,"src":"11346:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8824,"name":"usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7969,"src":"11354:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8821,"name":"_adjustForDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9794,"src":"11312:18:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address,address) view returns (uint256)"}},"id":8825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11312:47:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11296:63:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8827,"nodeType":"ExpressionStatement","src":"11296:63:20"},{"expression":{"arguments":[{"id":8829,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8707,"src":"11464:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8830,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8786,"src":"11472:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8828,"name":"_decreasePoolAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9650,"src":"11444:19:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":8831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11444:38:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8832,"nodeType":"ExpressionStatement","src":"11444:38:20"},{"expression":{"arguments":[{"id":8834,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8707,"src":"11512:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8835,"name":"usdyAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8813,"src":"11520:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8833,"name":"_decreaseUsdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9308,"src":"11492:19:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":8836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11492:42:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8837,"nodeType":"ExpressionStatement","src":"11492:42:20"},{"expression":{"arguments":[{"arguments":[{"id":8844,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11600:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_YTVault_$9800","typeString":"contract YTVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_YTVault_$9800","typeString":"contract YTVault"}],"id":8843,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11592:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8842,"name":"address","nodeType":"ElementaryTypeName","src":"11592:7:20","typeDescriptions":{}}},"id":8845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11592:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8846,"name":"usdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8735,"src":"11607:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8839,"name":"usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7969,"src":"11581:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8838,"name":"IUSDY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":268,"src":"11575:5:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IUSDY_$268_$","typeString":"type(contract IUSDY)"}},"id":8840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11575:11:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IUSDY_$268","typeString":"contract IUSDY"}},"id":8841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11587:4:20","memberName":"burn","nodeType":"MemberAccess","referencedDeclaration":262,"src":"11575:16:20","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":8847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11575:43:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8848,"nodeType":"ExpressionStatement","src":"11575:43:20"},{"expression":{"arguments":[{"id":8853,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8709,"src":"11689:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8854,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8786,"src":"11700:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8850,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8707,"src":"11668:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8849,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"11661:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":8851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11661:14:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":8852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11676:12:20","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":12719,"src":"11661:27:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$12648_$","typeString":"function (contract IERC20,address,uint256)"}},"id":8855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11661:49:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8856,"nodeType":"ExpressionStatement","src":"11661:49:20"},{"expression":{"arguments":[{"id":8858,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8707,"src":"11740:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8857,"name":"_updateTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9609,"src":"11720:19:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11720:27:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8860,"nodeType":"ExpressionStatement","src":"11720:27:20"},{"eventCall":{"arguments":[{"id":8862,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8709,"src":"11787:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8863,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8707,"src":"11798:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8864,"name":"usdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8735,"src":"11806:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8865,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8786,"src":"11818:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8861,"name":"RemoveLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8064,"src":"11771:15:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":8866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11771:57:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8867,"nodeType":"EmitStatement","src":"11766:62:20"},{"expression":{"id":8868,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8786,"src":"11854:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8719,"id":8869,"nodeType":"Return","src":"11847:16:20"}]},"documentation":{"id":8705,"nodeType":"StructuredDocumentation","src":"9774:229:20","text":" @notice 用USDY卖出换取YT代币移除流动性时调用\n @param _token YT代币地址\n @param _receiver YT代币接收地址\n @return amountOutAfterFees 实际获得的YT代币数量"},"functionSelector":"3d332583","implemented":true,"kind":"function","modifiers":[{"id":8712,"kind":"modifierInvocation","modifierName":{"id":8711,"name":"onlyPoolManager","nameLocations":["10088:15:20"],"nodeType":"IdentifierPath","referencedDeclaration":8096,"src":"10088:15:20"},"nodeType":"ModifierInvocation","src":"10088:15:20"},{"id":8714,"kind":"modifierInvocation","modifierName":{"id":8713,"name":"nonReentrant","nameLocations":["10113:12:20"],"nodeType":"IdentifierPath","referencedDeclaration":11726,"src":"10113:12:20"},"nodeType":"ModifierInvocation","src":"10113:12:20"},{"id":8716,"kind":"modifierInvocation","modifierName":{"id":8715,"name":"notInEmergency","nameLocations":["10135:14:20"],"nodeType":"IdentifierPath","referencedDeclaration":8123,"src":"10135:14:20"},"nodeType":"ModifierInvocation","src":"10135:14:20"}],"name":"sellUSDY","nameLocation":"10017:8:20","parameters":{"id":8710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8707,"mutability":"mutable","name":"_token","nameLocation":"10034:6:20","nodeType":"VariableDeclaration","scope":8871,"src":"10026:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8706,"name":"address","nodeType":"ElementaryTypeName","src":"10026:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8709,"mutability":"mutable","name":"_receiver","nameLocation":"10050:9:20","nodeType":"VariableDeclaration","scope":8871,"src":"10042:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8708,"name":"address","nodeType":"ElementaryTypeName","src":"10042:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10025:35:20"},"returnParameters":{"id":8719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8718,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8871,"src":"10167:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8717,"name":"uint256","nodeType":"ElementaryTypeName","src":"10167:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10166:9:20"},"scope":9800,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":9080,"nodeType":"FunctionDefinition","src":"12116:2109:20","nodes":[],"body":{"id":9079,"nodeType":"Block","src":"12283:1942:20","nodes":[],"statements":[{"condition":{"id":8890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"12297:14:20","subExpression":{"id":8889,"name":"isSwapEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7975,"src":"12298:13:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8894,"nodeType":"IfStatement","src":"12293:41:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8891,"name":"SwapDisabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7934,"src":"12320:12:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12320:14:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8893,"nodeType":"RevertStatement","src":"12313:21:20"}},{"condition":{"id":8898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"12348:28:20","subExpression":{"baseExpression":{"id":8895,"name":"whitelistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7984,"src":"12349:17:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":8897,"indexExpression":{"id":8896,"name":"_tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8874,"src":"12367:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12349:27:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8902,"nodeType":"IfStatement","src":"12344:62:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8899,"name":"TokenNotWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7926,"src":"12385:19:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12385:21:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8901,"nodeType":"RevertStatement","src":"12378:28:20"}},{"condition":{"id":8906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"12420:29:20","subExpression":{"baseExpression":{"id":8903,"name":"whitelistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7984,"src":"12421:17:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":8905,"indexExpression":{"id":8904,"name":"_tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8876,"src":"12439:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12421:28:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8910,"nodeType":"IfStatement","src":"12416:63:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8907,"name":"TokenNotWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7926,"src":"12458:19:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12458:21:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8909,"nodeType":"RevertStatement","src":"12451:28:20"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8911,"name":"_tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8874,"src":"12493:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8912,"name":"_tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8876,"src":"12505:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12493:21:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8917,"nodeType":"IfStatement","src":"12489:45:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8914,"name":"SameToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7940,"src":"12523:9:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12523:11:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8916,"nodeType":"RevertStatement","src":"12516:18:20"}},{"assignments":[8919],"declarations":[{"constant":false,"id":8919,"mutability":"mutable","name":"amountIn","nameLocation":"12561:8:20","nodeType":"VariableDeclaration","scope":9079,"src":"12553:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8918,"name":"uint256","nodeType":"ElementaryTypeName","src":"12553:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8923,"initialValue":{"arguments":[{"id":8921,"name":"_tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8874,"src":"12584:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8920,"name":"_transferIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9589,"src":"12572:11:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) returns (uint256)"}},"id":8922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12572:21:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12553:40:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8924,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8919,"src":"12607:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12619:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12607:13:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8930,"nodeType":"IfStatement","src":"12603:41:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8927,"name":"InvalidAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7936,"src":"12629:13:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12629:15:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8929,"nodeType":"RevertStatement","src":"12622:22:20"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":8931,"name":"maxSwapAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8030,"src":"12703:13:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8933,"indexExpression":{"id":8932,"name":"_tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8874,"src":"12717:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12703:23:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12729:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12703:27:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8946,"nodeType":"IfStatement","src":"12699:125:20","trueBody":{"id":8945,"nodeType":"Block","src":"12732:92:20","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8936,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8919,"src":"12750:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"id":8937,"name":"maxSwapAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8030,"src":"12761:13:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8939,"indexExpression":{"id":8938,"name":"_tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8874,"src":"12775:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12761:23:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12750:34:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8944,"nodeType":"IfStatement","src":"12746:67:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8941,"name":"AmountExceedsLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7942,"src":"12793:18:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12793:20:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8943,"nodeType":"RevertStatement","src":"12786:27:20"}}]}},{"assignments":[8948],"declarations":[{"constant":false,"id":8948,"mutability":"mutable","name":"priceIn","nameLocation":"12850:7:20","nodeType":"VariableDeclaration","scope":9079,"src":"12842:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8947,"name":"uint256","nodeType":"ElementaryTypeName","src":"12842:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8953,"initialValue":{"arguments":[{"id":8950,"name":"_tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8874,"src":"12870:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":8951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12880:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8949,"name":"_getPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9728,"src":"12860:9:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$returns$_t_uint256_$","typeString":"function (address,bool) view returns (uint256)"}},"id":8952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12860:26:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12842:44:20"},{"assignments":[8955],"declarations":[{"constant":false,"id":8955,"mutability":"mutable","name":"priceOut","nameLocation":"12904:8:20","nodeType":"VariableDeclaration","scope":9079,"src":"12896:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8954,"name":"uint256","nodeType":"ElementaryTypeName","src":"12896:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8960,"initialValue":{"arguments":[{"id":8957,"name":"_tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8876,"src":"12925:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":8958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12936:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":8956,"name":"_getPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9728,"src":"12915:9:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$returns$_t_uint256_$","typeString":"function (address,bool) view returns (uint256)"}},"id":8959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12915:26:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12896:45:20"},{"assignments":[8962],"declarations":[{"constant":false,"id":8962,"mutability":"mutable","name":"usdyAmount","nameLocation":"12968:10:20","nodeType":"VariableDeclaration","scope":9079,"src":"12960:18:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8961,"name":"uint256","nodeType":"ElementaryTypeName","src":"12960:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8968,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8963,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8919,"src":"12981:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8964,"name":"priceIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8948,"src":"12992:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12981:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8966,"name":"PRICE_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7955,"src":"13002:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12981:36:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12960:57:20"},{"expression":{"id":8975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8969,"name":"usdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8962,"src":"13027:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8971,"name":"usdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8962,"src":"13059:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8972,"name":"_tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8874,"src":"13071:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8973,"name":"usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7969,"src":"13081:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8970,"name":"_adjustForDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9794,"src":"13040:18:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address,address) view returns (uint256)"}},"id":8974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13040:46:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13027:59:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8976,"nodeType":"ExpressionStatement","src":"13027:59:20"},{"assignments":[8978],"declarations":[{"constant":false,"id":8978,"mutability":"mutable","name":"amountOut","nameLocation":"13113:9:20","nodeType":"VariableDeclaration","scope":9079,"src":"13105:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8977,"name":"uint256","nodeType":"ElementaryTypeName","src":"13105:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8984,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8979,"name":"usdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8962,"src":"13125:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8980,"name":"PRICE_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7955,"src":"13138:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13125:28:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8982,"name":"priceOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8955,"src":"13156:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13125:39:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13105:59:20"},{"expression":{"id":8991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8985,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8978,"src":"13174:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8987,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8978,"src":"13205:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8988,"name":"usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7969,"src":"13216:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8989,"name":"_tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8876,"src":"13222:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8986,"name":"_adjustForDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9794,"src":"13186:18:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address,address) view returns (uint256)"}},"id":8990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13186:46:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13174:58:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8992,"nodeType":"ExpressionStatement","src":"13174:58:20"},{"assignments":[8994],"declarations":[{"constant":false,"id":8994,"mutability":"mutable","name":"feeBasisPoints","nameLocation":"13259:14:20","nodeType":"VariableDeclaration","scope":9079,"src":"13251:22:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8993,"name":"uint256","nodeType":"ElementaryTypeName","src":"13251:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9000,"initialValue":{"arguments":[{"id":8996,"name":"_tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8874,"src":"13299:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8997,"name":"_tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8876,"src":"13309:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8998,"name":"usdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8962,"src":"13320:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8995,"name":"_getSwapFeeBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9413,"src":"13276:22:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view returns (uint256)"}},"id":8999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13276:55:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13251:80:20"},{"assignments":[9002],"declarations":[{"constant":false,"id":9002,"mutability":"mutable","name":"amountOutAfterFees","nameLocation":"13349:18:20","nodeType":"VariableDeclaration","scope":9079,"src":"13341:26:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9001,"name":"uint256","nodeType":"ElementaryTypeName","src":"13341:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9011,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9003,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8978,"src":"13370:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9004,"name":"BASIS_POINTS_DIVISOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7958,"src":"13383:20:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9005,"name":"feeBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8994,"src":"13406:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13383:37:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9007,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13382:39:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13370:51:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9009,"name":"BASIS_POINTS_DIVISOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7958,"src":"13424:20:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13370:74:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13341:103:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9012,"name":"amountOutAfterFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9002,"src":"13467:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13489:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13467:23:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9018,"nodeType":"IfStatement","src":"13463:51:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9015,"name":"InvalidAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7936,"src":"13499:13:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13499:15:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9017,"nodeType":"RevertStatement","src":"13492:22:20"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":9019,"name":"poolAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8002,"src":"13528:11:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9021,"indexExpression":{"id":9020,"name":"_tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8876,"src":"13540:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13528:22:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9022,"name":"amountOutAfterFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9002,"src":"13553:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13528:43:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9027,"nodeType":"IfStatement","src":"13524:74:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9024,"name":"InsufficientPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7938,"src":"13580:16:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13580:18:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9026,"nodeType":"RevertStatement","src":"13573:25:20"}},{"expression":{"arguments":[{"id":9029,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8919,"src":"13669:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9030,"name":"amountOutAfterFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9002,"src":"13679:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9031,"name":"priceIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8948,"src":"13699:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9032,"name":"priceOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8955,"src":"13708:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9028,"name":"_validateSwapSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9710,"src":"13647:21:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256,uint256) view"}},"id":9033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13647:70:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9034,"nodeType":"ExpressionStatement","src":"13647:70:20"},{"expression":{"arguments":[{"id":9036,"name":"_tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8874,"src":"13756:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9037,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8919,"src":"13766:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9035,"name":"_increasePoolAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9627,"src":"13736:19:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13736:39:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9039,"nodeType":"ExpressionStatement","src":"13736:39:20"},{"expression":{"arguments":[{"id":9041,"name":"_tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8876,"src":"13805:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9042,"name":"amountOutAfterFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9002,"src":"13816:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9040,"name":"_decreasePoolAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9650,"src":"13785:19:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13785:50:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9044,"nodeType":"ExpressionStatement","src":"13785:50:20"},{"expression":{"arguments":[{"id":9046,"name":"_tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8874,"src":"13874:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9047,"name":"usdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8962,"src":"13884:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9045,"name":"_increaseUsdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9279,"src":"13854:19:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13854:41:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9049,"nodeType":"ExpressionStatement","src":"13854:41:20"},{"expression":{"arguments":[{"id":9051,"name":"_tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8876,"src":"13925:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9052,"name":"usdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8962,"src":"13936:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9050,"name":"_decreaseUsdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9308,"src":"13905:19:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13905:42:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9054,"nodeType":"ExpressionStatement","src":"13905:42:20"},{"expression":{"arguments":[{"id":9059,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8878,"src":"13997:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9060,"name":"amountOutAfterFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9002,"src":"14008:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":9056,"name":"_tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8876,"src":"13973:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9055,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"13966:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":9057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13966:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":9058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13984:12:20","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":12719,"src":"13966:30:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$12648_$","typeString":"function (contract IERC20,address,uint256)"}},"id":9061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13966:61:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9062,"nodeType":"ExpressionStatement","src":"13966:61:20"},{"expression":{"arguments":[{"id":9064,"name":"_tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8876,"src":"14057:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9063,"name":"_updateTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9609,"src":"14037:19:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":9065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14037:30:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9066,"nodeType":"ExpressionStatement","src":"14037:30:20"},{"eventCall":{"arguments":[{"expression":{"id":9068,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14096:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14100:6:20","memberName":"sender","nodeType":"MemberAccess","src":"14096:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9070,"name":"_tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8874,"src":"14108:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9071,"name":"_tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8876,"src":"14118:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9072,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8919,"src":"14129:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9073,"name":"amountOutAfterFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9002,"src":"14139:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9074,"name":"feeBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8994,"src":"14159:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9067,"name":"Swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8044,"src":"14091:4:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256,uint256,uint256)"}},"id":9075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14091:83:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9076,"nodeType":"EmitStatement","src":"14086:88:20"},{"expression":{"id":9077,"name":"amountOutAfterFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9002,"src":"14200:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8888,"id":9078,"nodeType":"Return","src":"14193:25:20"}]},"documentation":{"id":8872,"nodeType":"StructuredDocumentation","src":"11880:231:20","text":" @notice YT代币互换\n @param _tokenIn 输入代币地址\n @param _tokenOut 输出代币地址\n @param _receiver 接收地址\n @return amountOutAfterFees 实际获得的输出代币数量"},"functionSelector":"93316212","implemented":true,"kind":"function","modifiers":[{"id":8881,"kind":"modifierInvocation","modifierName":{"id":8880,"name":"onlySwapper","nameLocations":["12225:11:20"],"nodeType":"IdentifierPath","referencedDeclaration":8114,"src":"12225:11:20"},"nodeType":"ModifierInvocation","src":"12225:11:20"},{"id":8883,"kind":"modifierInvocation","modifierName":{"id":8882,"name":"nonReentrant","nameLocations":["12237:12:20"],"nodeType":"IdentifierPath","referencedDeclaration":11726,"src":"12237:12:20"},"nodeType":"ModifierInvocation","src":"12237:12:20"},{"id":8885,"kind":"modifierInvocation","modifierName":{"id":8884,"name":"notInEmergency","nameLocations":["12250:14:20"],"nodeType":"IdentifierPath","referencedDeclaration":8123,"src":"12250:14:20"},"nodeType":"ModifierInvocation","src":"12250:14:20"}],"name":"swap","nameLocation":"12125:4:20","parameters":{"id":8879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8874,"mutability":"mutable","name":"_tokenIn","nameLocation":"12147:8:20","nodeType":"VariableDeclaration","scope":9080,"src":"12139:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8873,"name":"address","nodeType":"ElementaryTypeName","src":"12139:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8876,"mutability":"mutable","name":"_tokenOut","nameLocation":"12173:9:20","nodeType":"VariableDeclaration","scope":9080,"src":"12165:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8875,"name":"address","nodeType":"ElementaryTypeName","src":"12165:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8878,"mutability":"mutable","name":"_receiver","nameLocation":"12200:9:20","nodeType":"VariableDeclaration","scope":9080,"src":"12192:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8877,"name":"address","nodeType":"ElementaryTypeName","src":"12192:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12129:86:20"},"returnParameters":{"id":8888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8887,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9080,"src":"12274:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8886,"name":"uint256","nodeType":"ElementaryTypeName","src":"12274:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12273:9:20"},"scope":9800,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":9096,"nodeType":"FunctionDefinition","src":"14435:134:20","nodes":[],"body":{"id":9095,"nodeType":"Block","src":"14517:52:20","nodes":[],"statements":[{"expression":{"arguments":[{"id":9091,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9083,"src":"14544:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9092,"name":"_maximise","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9085,"src":"14552:9:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9090,"name":"_getPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9728,"src":"14534:9:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$returns$_t_uint256_$","typeString":"function (address,bool) view returns (uint256)"}},"id":9093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14534:28:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9089,"id":9094,"nodeType":"Return","src":"14527:35:20"}]},"documentation":{"id":9081,"nodeType":"StructuredDocumentation","src":"14235:195:20","text":" @notice 获取代币价格(带价差)\n @param _token 代币地址\n @param _maximise true=最大价格, false=最小价格\n @return 价格30位精度"},"functionSelector":"76d69760","implemented":true,"kind":"function","modifiers":[],"name":"getPrice","nameLocation":"14444:8:20","parameters":{"id":9086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9083,"mutability":"mutable","name":"_token","nameLocation":"14461:6:20","nodeType":"VariableDeclaration","scope":9096,"src":"14453:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9082,"name":"address","nodeType":"ElementaryTypeName","src":"14453:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9085,"mutability":"mutable","name":"_maximise","nameLocation":"14474:9:20","nodeType":"VariableDeclaration","scope":9096,"src":"14469:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9084,"name":"bool","nodeType":"ElementaryTypeName","src":"14469:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14452:32:20"},"returnParameters":{"id":9089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9088,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9096,"src":"14508:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9087,"name":"uint256","nodeType":"ElementaryTypeName","src":"14508:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14507:9:20"},"scope":9800,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":9110,"nodeType":"FunctionDefinition","src":"14629:116:20","nodes":[],"body":{"id":9109,"nodeType":"Block","src":"14698:47:20","nodes":[],"statements":[{"expression":{"arguments":[{"id":9105,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9099,"src":"14725:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":9106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14733:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9104,"name":"_getPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9728,"src":"14715:9:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$returns$_t_uint256_$","typeString":"function (address,bool) view returns (uint256)"}},"id":9107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14715:23:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9103,"id":9108,"nodeType":"Return","src":"14708:30:20"}]},"documentation":{"id":9097,"nodeType":"StructuredDocumentation","src":"14579:45:20","text":" @notice 获取最大价格"},"functionSelector":"e124e6d2","implemented":true,"kind":"function","modifiers":[],"name":"getMaxPrice","nameLocation":"14638:11:20","parameters":{"id":9100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9099,"mutability":"mutable","name":"_token","nameLocation":"14658:6:20","nodeType":"VariableDeclaration","scope":9110,"src":"14650:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9098,"name":"address","nodeType":"ElementaryTypeName","src":"14650:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14649:16:20"},"returnParameters":{"id":9103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9102,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9110,"src":"14689:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9101,"name":"uint256","nodeType":"ElementaryTypeName","src":"14689:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14688:9:20"},"scope":9800,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":9124,"nodeType":"FunctionDefinition","src":"14805:117:20","nodes":[],"body":{"id":9123,"nodeType":"Block","src":"14874:48:20","nodes":[],"statements":[{"expression":{"arguments":[{"id":9119,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9113,"src":"14901:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":9120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14909:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9118,"name":"_getPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9728,"src":"14891:9:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$returns$_t_uint256_$","typeString":"function (address,bool) view returns (uint256)"}},"id":9121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14891:24:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9117,"id":9122,"nodeType":"Return","src":"14884:31:20"}]},"documentation":{"id":9111,"nodeType":"StructuredDocumentation","src":"14755:45:20","text":" @notice 获取最小价格"},"functionSelector":"81a612d6","implemented":true,"kind":"function","modifiers":[],"name":"getMinPrice","nameLocation":"14814:11:20","parameters":{"id":9114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9113,"mutability":"mutable","name":"_token","nameLocation":"14834:6:20","nodeType":"VariableDeclaration","scope":9124,"src":"14826:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9112,"name":"address","nodeType":"ElementaryTypeName","src":"14826:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14825:16:20"},"returnParameters":{"id":9117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9116,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9124,"src":"14865:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9115,"name":"uint256","nodeType":"ElementaryTypeName","src":"14865:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14864:9:20"},"scope":9800,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":9133,"nodeType":"FunctionDefinition","src":"14932:113:20","nodes":[],"body":{"id":9132,"nodeType":"Block","src":"15001:44:20","nodes":[],"statements":[{"expression":{"id":9130,"name":"allWhitelistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7980,"src":"15018:20:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":9129,"id":9131,"nodeType":"Return","src":"15011:27:20"}]},"functionSelector":"76cd370e","implemented":true,"kind":"function","modifiers":[],"name":"getAllPoolTokens","nameLocation":"14941:16:20","parameters":{"id":9125,"nodeType":"ParameterList","parameters":[],"src":"14957:2:20"},"returnParameters":{"id":9129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9128,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9133,"src":"14983:16:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":9126,"name":"address","nodeType":"ElementaryTypeName","src":"14983:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9127,"nodeType":"ArrayTypeName","src":"14983:9:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"14982:18:20"},"scope":9800,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":9206,"nodeType":"FunctionDefinition","src":"15263:594:20","nodes":[],"body":{"id":9205,"nodeType":"Block","src":"15333:524:20","nodes":[],"statements":[{"assignments":[9142],"declarations":[{"constant":false,"id":9142,"mutability":"mutable","name":"totalValue","nameLocation":"15351:10:20","nodeType":"VariableDeclaration","scope":9205,"src":"15343:18:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9141,"name":"uint256","nodeType":"ElementaryTypeName","src":"15343:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9144,"initialValue":{"hexValue":"30","id":9143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15364:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15343:22:20"},{"body":{"id":9201,"nodeType":"Block","src":"15433:391:20","statements":[{"assignments":[9157],"declarations":[{"constant":false,"id":9157,"mutability":"mutable","name":"token","nameLocation":"15455:5:20","nodeType":"VariableDeclaration","scope":9201,"src":"15447:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9156,"name":"address","nodeType":"ElementaryTypeName","src":"15447:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":9161,"initialValue":{"baseExpression":{"id":9158,"name":"allWhitelistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7980,"src":"15463:20:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":9160,"indexExpression":{"id":9159,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9146,"src":"15484:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15463:23:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"15447:39:20"},{"condition":{"id":9165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"15504:25:20","subExpression":{"baseExpression":{"id":9162,"name":"whitelistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7984,"src":"15505:17:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":9164,"indexExpression":{"id":9163,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9157,"src":"15523:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15505:24:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9167,"nodeType":"IfStatement","src":"15500:39:20","trueBody":{"id":9166,"nodeType":"Continue","src":"15531:8:20"}},{"assignments":[9169],"declarations":[{"constant":false,"id":9169,"mutability":"mutable","name":"amount","nameLocation":"15574:6:20","nodeType":"VariableDeclaration","scope":9201,"src":"15566:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9168,"name":"uint256","nodeType":"ElementaryTypeName","src":"15566:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9173,"initialValue":{"baseExpression":{"id":9170,"name":"poolAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8002,"src":"15583:11:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9172,"indexExpression":{"id":9171,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9157,"src":"15595:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15583:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15566:35:20"},{"assignments":[9175],"declarations":[{"constant":false,"id":9175,"mutability":"mutable","name":"price","nameLocation":"15623:5:20","nodeType":"VariableDeclaration","scope":9201,"src":"15615:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9174,"name":"uint256","nodeType":"ElementaryTypeName","src":"15615:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9180,"initialValue":{"arguments":[{"id":9177,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9157,"src":"15641:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9178,"name":"_maximise","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9136,"src":"15648:9:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9176,"name":"_getPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9728,"src":"15631:9:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$returns$_t_uint256_$","typeString":"function (address,bool) view returns (uint256)"}},"id":9179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15631:27:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15615:43:20"},{"assignments":[9182],"declarations":[{"constant":false,"id":9182,"mutability":"mutable","name":"value","nameLocation":"15680:5:20","nodeType":"VariableDeclaration","scope":9201,"src":"15672:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9181,"name":"uint256","nodeType":"ElementaryTypeName","src":"15672:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9188,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9183,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9169,"src":"15688:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9184,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9175,"src":"15697:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15688:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9186,"name":"PRICE_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7955,"src":"15705:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15688:32:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15672:48:20"},{"expression":{"id":9195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9189,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9182,"src":"15734:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9191,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9182,"src":"15761:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9192,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9157,"src":"15768:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9193,"name":"usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7969,"src":"15775:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9190,"name":"_adjustForDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9794,"src":"15742:18:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address,address) view returns (uint256)"}},"id":9194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15742:38:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15734:46:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9196,"nodeType":"ExpressionStatement","src":"15734:46:20"},{"expression":{"id":9199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9197,"name":"totalValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9142,"src":"15794:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":9198,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9182,"src":"15808:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15794:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9200,"nodeType":"ExpressionStatement","src":"15794:19:20"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9149,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9146,"src":"15395:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":9150,"name":"allWhitelistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7980,"src":"15399:20:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":9151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15420:6:20","memberName":"length","nodeType":"MemberAccess","src":"15399:27:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15395:31:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9202,"initializationExpression":{"assignments":[9146],"declarations":[{"constant":false,"id":9146,"mutability":"mutable","name":"i","nameLocation":"15388:1:20","nodeType":"VariableDeclaration","scope":9202,"src":"15380:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9145,"name":"uint256","nodeType":"ElementaryTypeName","src":"15380:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9148,"initialValue":{"hexValue":"30","id":9147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15392:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15380:13:20"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":9154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"15428:3:20","subExpression":{"id":9153,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9146,"src":"15428:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9155,"nodeType":"ExpressionStatement","src":"15428:3:20"},"nodeType":"ForStatement","src":"15375:449:20"},{"expression":{"id":9203,"name":"totalValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9142,"src":"15840:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9140,"id":9204,"nodeType":"Return","src":"15833:17:20"}]},"documentation":{"id":9134,"nodeType":"StructuredDocumentation","src":"15055:203:20","text":" @notice 获取池子总价值\n @param _maximise true=使用最大价格(对协议有利), false=使用最小价格(对用户有利)\n @return 池子总价值USDY计价"},"functionSelector":"bab3e9e6","implemented":true,"kind":"function","modifiers":[],"name":"getPoolValue","nameLocation":"15272:12:20","parameters":{"id":9137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9136,"mutability":"mutable","name":"_maximise","nameLocation":"15290:9:20","nodeType":"VariableDeclaration","scope":9206,"src":"15285:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9135,"name":"bool","nodeType":"ElementaryTypeName","src":"15285:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15284:16:20"},"returnParameters":{"id":9140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9139,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9206,"src":"15324:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9138,"name":"uint256","nodeType":"ElementaryTypeName","src":"15324:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15323:9:20"},"scope":9800,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":9241,"nodeType":"FunctionDefinition","src":"15867:273:20","nodes":[],"body":{"id":9240,"nodeType":"Block","src":"15942:198:20","nodes":[],"statements":[{"assignments":[9214],"declarations":[{"constant":false,"id":9214,"mutability":"mutable","name":"supply","nameLocation":"15960:6:20","nodeType":"VariableDeclaration","scope":9240,"src":"15952:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9213,"name":"uint256","nodeType":"ElementaryTypeName","src":"15952:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9220,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":9216,"name":"usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7969,"src":"15976:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9215,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"15969:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":9217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15969:12:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":9218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15982:11:20","memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":12597,"src":"15969:24:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":9219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15969:26:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15952:43:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9221,"name":"supply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9214,"src":"16009:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16019:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16009:11:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9227,"nodeType":"IfStatement","src":"16005:30:20","trueBody":{"id":9226,"nodeType":"Block","src":"16022:13:20","statements":[{"expression":{"hexValue":"30","id":9224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16031:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":9212,"id":9225,"nodeType":"Return","src":"16024:8:20"}]}},{"assignments":[9229],"declarations":[{"constant":false,"id":9229,"mutability":"mutable","name":"weight","nameLocation":"16052:6:20","nodeType":"VariableDeclaration","scope":9240,"src":"16044:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9228,"name":"uint256","nodeType":"ElementaryTypeName","src":"16044:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9233,"initialValue":{"baseExpression":{"id":9230,"name":"tokenWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7996,"src":"16061:12:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9232,"indexExpression":{"id":9231,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9208,"src":"16074:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16061:20:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16044:37:20"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9234,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9229,"src":"16098:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9235,"name":"supply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9214,"src":"16107:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16098:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9237,"name":"totalTokenWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7998,"src":"16116:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16098:35:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9212,"id":9239,"nodeType":"Return","src":"16091:42:20"}]},"functionSelector":"3dd9bd82","implemented":true,"kind":"function","modifiers":[],"name":"getTargetUsdyAmount","nameLocation":"15876:19:20","parameters":{"id":9209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9208,"mutability":"mutable","name":"_token","nameLocation":"15904:6:20","nodeType":"VariableDeclaration","scope":9241,"src":"15896:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9207,"name":"address","nodeType":"ElementaryTypeName","src":"15896:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15895:16:20"},"returnParameters":{"id":9212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9211,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9241,"src":"15933:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9210,"name":"uint256","nodeType":"ElementaryTypeName","src":"15933:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15932:9:20"},"scope":9800,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":9279,"nodeType":"FunctionDefinition","src":"16150:317:20","nodes":[],"body":{"id":9278,"nodeType":"Block","src":"16220:247:20","nodes":[],"statements":[{"expression":{"id":9256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9248,"name":"usdyAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8010,"src":"16230:11:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9250,"indexExpression":{"id":9249,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9243,"src":"16242:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16230:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":9251,"name":"usdyAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8010,"src":"16252:11:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9253,"indexExpression":{"id":9252,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9243,"src":"16264:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16252:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":9254,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9245,"src":"16274:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16252:29:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16230:51:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9257,"nodeType":"ExpressionStatement","src":"16230:51:20"},{"assignments":[9259],"declarations":[{"constant":false,"id":9259,"mutability":"mutable","name":"maxUsdyAmount","nameLocation":"16299:13:20","nodeType":"VariableDeclaration","scope":9278,"src":"16291:21:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9258,"name":"uint256","nodeType":"ElementaryTypeName","src":"16291:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9263,"initialValue":{"baseExpression":{"id":9260,"name":"maxUsdyAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8014,"src":"16315:14:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9262,"indexExpression":{"id":9261,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9243,"src":"16330:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16315:22:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16291:46:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9264,"name":"maxUsdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9259,"src":"16351:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":9265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16368:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16351:18:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9277,"nodeType":"IfStatement","src":"16347:114:20","trueBody":{"id":9276,"nodeType":"Block","src":"16371:90:20","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":9267,"name":"usdyAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8010,"src":"16389:11:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9269,"indexExpression":{"id":9268,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9243,"src":"16401:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16389:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9270,"name":"maxUsdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9259,"src":"16411:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16389:35:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9275,"nodeType":"IfStatement","src":"16385:65:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9272,"name":"MaxUSDYExceeded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7944,"src":"16433:15:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16433:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9274,"nodeType":"RevertStatement","src":"16426:24:20"}}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseUsdyAmount","nameLocation":"16159:19:20","parameters":{"id":9246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9243,"mutability":"mutable","name":"_token","nameLocation":"16187:6:20","nodeType":"VariableDeclaration","scope":9279,"src":"16179:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9242,"name":"address","nodeType":"ElementaryTypeName","src":"16179:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9245,"mutability":"mutable","name":"_amount","nameLocation":"16203:7:20","nodeType":"VariableDeclaration","scope":9279,"src":"16195:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9244,"name":"uint256","nodeType":"ElementaryTypeName","src":"16195:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16178:33:20"},"returnParameters":{"id":9247,"nodeType":"ParameterList","parameters":[],"src":"16220:0:20"},"scope":9800,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":9308,"nodeType":"FunctionDefinition","src":"16477:231:20","nodes":[],"body":{"id":9307,"nodeType":"Block","src":"16547:161:20","nodes":[],"statements":[{"assignments":[9287],"declarations":[{"constant":false,"id":9287,"mutability":"mutable","name":"value","nameLocation":"16565:5:20","nodeType":"VariableDeclaration","scope":9307,"src":"16557:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9286,"name":"uint256","nodeType":"ElementaryTypeName","src":"16557:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9291,"initialValue":{"baseExpression":{"id":9288,"name":"usdyAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8010,"src":"16573:11:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9290,"indexExpression":{"id":9289,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9281,"src":"16585:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16573:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16557:35:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9292,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9287,"src":"16606:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9293,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9283,"src":"16614:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16606:15:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9298,"nodeType":"IfStatement","src":"16602:52:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9295,"name":"InsufficientUSDYAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7946,"src":"16630:22:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16630:24:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9297,"nodeType":"RevertStatement","src":"16623:31:20"}},{"expression":{"id":9305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9299,"name":"usdyAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8010,"src":"16664:11:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9301,"indexExpression":{"id":9300,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9281,"src":"16676:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16664:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9302,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9287,"src":"16686:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9303,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9283,"src":"16694:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16686:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16664:37:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9306,"nodeType":"ExpressionStatement","src":"16664:37:20"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_decreaseUsdyAmount","nameLocation":"16486:19:20","parameters":{"id":9284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9281,"mutability":"mutable","name":"_token","nameLocation":"16514:6:20","nodeType":"VariableDeclaration","scope":9308,"src":"16506:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9280,"name":"address","nodeType":"ElementaryTypeName","src":"16506:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9283,"mutability":"mutable","name":"_amount","nameLocation":"16530:7:20","nodeType":"VariableDeclaration","scope":9308,"src":"16522:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9282,"name":"uint256","nodeType":"ElementaryTypeName","src":"16522:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16505:33:20"},"returnParameters":{"id":9285,"nodeType":"ParameterList","parameters":[],"src":"16547:0:20"},"scope":9800,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":9327,"nodeType":"FunctionDefinition","src":"16964:229:20","nodes":[],"body":{"id":9326,"nodeType":"Block","src":"17113:80:20","nodes":[],"statements":[{"expression":{"arguments":[{"id":9321,"name":"_tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9311,"src":"17153:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9322,"name":"_tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9313,"src":"17163:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9323,"name":"_usdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9315,"src":"17174:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9320,"name":"_getSwapFeeBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9413,"src":"17130:22:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view returns (uint256)"}},"id":9324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17130:56:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9319,"id":9325,"nodeType":"Return","src":"17123:63:20"}]},"documentation":{"id":9309,"nodeType":"StructuredDocumentation","src":"16718:241:20","text":" @notice 获取swap手续费率公开方法供前端调用\n @param _tokenIn 输入代币\n @param _tokenOut 输出代币\n @param _usdyAmount USDY数量\n @return 手续费率basis points"},"functionSelector":"da133816","implemented":true,"kind":"function","modifiers":[],"name":"getSwapFeeBasisPoints","nameLocation":"16973:21:20","parameters":{"id":9316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9311,"mutability":"mutable","name":"_tokenIn","nameLocation":"17012:8:20","nodeType":"VariableDeclaration","scope":9327,"src":"17004:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9310,"name":"address","nodeType":"ElementaryTypeName","src":"17004:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9313,"mutability":"mutable","name":"_tokenOut","nameLocation":"17038:9:20","nodeType":"VariableDeclaration","scope":9327,"src":"17030:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9312,"name":"address","nodeType":"ElementaryTypeName","src":"17030:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9315,"mutability":"mutable","name":"_usdyAmount","nameLocation":"17065:11:20","nodeType":"VariableDeclaration","scope":9327,"src":"17057:19:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9314,"name":"uint256","nodeType":"ElementaryTypeName","src":"17057:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16994:88:20"},"returnParameters":{"id":9319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9327,"src":"17104:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9317,"name":"uint256","nodeType":"ElementaryTypeName","src":"17104:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17103:9:20"},"scope":9800,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":9344,"nodeType":"FunctionDefinition","src":"17399:199:20","nodes":[],"body":{"id":9343,"nodeType":"Block","src":"17525:73:20","nodes":[],"statements":[{"expression":{"arguments":[{"id":9338,"name":"usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7969,"src":"17565:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9339,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9330,"src":"17571:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9340,"name":"_usdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9332,"src":"17579:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9337,"name":"_getSwapFeeBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9413,"src":"17542:22:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,uint256) view returns (uint256)"}},"id":9341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17542:49:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9336,"id":9342,"nodeType":"Return","src":"17535:56:20"}]},"documentation":{"id":9328,"nodeType":"StructuredDocumentation","src":"17203:191:20","text":" @notice 获取赎回手续费率sellUSDY时使用\n @param _token 代币地址\n @param _usdyAmount USDY数量\n @return 手续费率basis points"},"functionSelector":"802f9270","implemented":true,"kind":"function","modifiers":[],"name":"getRedemptionFeeBasisPoints","nameLocation":"17408:27:20","parameters":{"id":9333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9330,"mutability":"mutable","name":"_token","nameLocation":"17453:6:20","nodeType":"VariableDeclaration","scope":9344,"src":"17445:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9329,"name":"address","nodeType":"ElementaryTypeName","src":"17445:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9332,"mutability":"mutable","name":"_usdyAmount","nameLocation":"17477:11:20","nodeType":"VariableDeclaration","scope":9344,"src":"17469:19:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9331,"name":"uint256","nodeType":"ElementaryTypeName","src":"17469:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17435:59:20"},"returnParameters":{"id":9336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9335,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9344,"src":"17516:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9334,"name":"uint256","nodeType":"ElementaryTypeName","src":"17516:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17515:9:20"},"scope":9800,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":9413,"nodeType":"FunctionDefinition","src":"17608:875:20","nodes":[],"body":{"id":9412,"nodeType":"Block","src":"17759:724:20","nodes":[],"statements":[{"assignments":[9356],"declarations":[{"constant":false,"id":9356,"mutability":"mutable","name":"isStableSwap","nameLocation":"17857:12:20","nodeType":"VariableDeclaration","scope":9412,"src":"17852:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9355,"name":"bool","nodeType":"ElementaryTypeName","src":"17852:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":9364,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":9357,"name":"stableTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7988,"src":"17872:12:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":9359,"indexExpression":{"id":9358,"name":"_tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9346,"src":"17885:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17872:22:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"baseExpression":{"id":9360,"name":"stableTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7988,"src":"17898:12:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":9362,"indexExpression":{"id":9361,"name":"_tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9348,"src":"17911:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17898:23:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17872:49:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"17852:69:20"},{"assignments":[9366],"declarations":[{"constant":false,"id":9366,"mutability":"mutable","name":"baseBps","nameLocation":"17939:7:20","nodeType":"VariableDeclaration","scope":9412,"src":"17931:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9365,"name":"uint256","nodeType":"ElementaryTypeName","src":"17931:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9371,"initialValue":{"condition":{"id":9367,"name":"isStableSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9356,"src":"17949:12:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":9369,"name":"swapFeeBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8016,"src":"17991:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"17949:60:20","trueExpression":{"id":9368,"name":"stableSwapFeeBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8018,"src":"17964:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17931:78:20"},{"assignments":[9373],"declarations":[{"constant":false,"id":9373,"mutability":"mutable","name":"taxBps","nameLocation":"18027:6:20","nodeType":"VariableDeclaration","scope":9412,"src":"18019:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9372,"name":"uint256","nodeType":"ElementaryTypeName","src":"18019:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9378,"initialValue":{"condition":{"id":9374,"name":"isStableSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9356,"src":"18036:12:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":9376,"name":"taxBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8020,"src":"18074:14:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18036:52:20","trueExpression":{"id":9375,"name":"stableTaxBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8022,"src":"18051:20:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18019:69:20"},{"condition":{"id":9380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"18111:15:20","subExpression":{"id":9379,"name":"hasDynamicFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8024,"src":"18112:14:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9384,"nodeType":"IfStatement","src":"18107:60:20","trueBody":{"id":9383,"nodeType":"Block","src":"18128:39:20","statements":[{"expression":{"id":9381,"name":"baseBps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9366,"src":"18149:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9354,"id":9382,"nodeType":"Return","src":"18142:14:20"}]}},{"assignments":[9386],"declarations":[{"constant":false,"id":9386,"mutability":"mutable","name":"feesBasisPoints0","nameLocation":"18193:16:20","nodeType":"VariableDeclaration","scope":9412,"src":"18185:24:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9385,"name":"uint256","nodeType":"ElementaryTypeName","src":"18185:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9394,"initialValue":{"arguments":[{"id":9388,"name":"_tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9346,"src":"18230:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9389,"name":"_usdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9350,"src":"18240:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9390,"name":"baseBps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9366,"src":"18253:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9391,"name":"taxBps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9373,"src":"18262:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":9392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"18270:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9387,"name":"getFeeBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9553,"src":"18212:17:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$","typeString":"function (address,uint256,uint256,uint256,bool) view returns (uint256)"}},"id":9393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18212:63:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18185:90:20"},{"assignments":[9396],"declarations":[{"constant":false,"id":9396,"mutability":"mutable","name":"feesBasisPoints1","nameLocation":"18293:16:20","nodeType":"VariableDeclaration","scope":9412,"src":"18285:24:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9395,"name":"uint256","nodeType":"ElementaryTypeName","src":"18285:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9404,"initialValue":{"arguments":[{"id":9398,"name":"_tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9348,"src":"18330:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9399,"name":"_usdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9350,"src":"18341:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9400,"name":"baseBps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9366,"src":"18354:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9401,"name":"taxBps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9373,"src":"18363:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":9402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"18371:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9397,"name":"getFeeBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9553,"src":"18312:17:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$","typeString":"function (address,uint256,uint256,uint256,bool) view returns (uint256)"}},"id":9403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18312:65:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18285:92:20"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9405,"name":"feesBasisPoints0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9386,"src":"18403:16:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9406,"name":"feesBasisPoints1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9396,"src":"18422:16:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18403:35:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":9409,"name":"feesBasisPoints1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9396,"src":"18460:16:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18403:73:20","trueExpression":{"id":9408,"name":"feesBasisPoints0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9386,"src":"18441:16:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9354,"id":9411,"nodeType":"Return","src":"18396:80:20"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getSwapFeeBasisPoints","nameLocation":"17617:22:20","parameters":{"id":9351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9346,"mutability":"mutable","name":"_tokenIn","nameLocation":"17657:8:20","nodeType":"VariableDeclaration","scope":9413,"src":"17649:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9345,"name":"address","nodeType":"ElementaryTypeName","src":"17649:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9348,"mutability":"mutable","name":"_tokenOut","nameLocation":"17683:9:20","nodeType":"VariableDeclaration","scope":9413,"src":"17675:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9347,"name":"address","nodeType":"ElementaryTypeName","src":"17675:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9350,"mutability":"mutable","name":"_usdyAmount","nameLocation":"17710:11:20","nodeType":"VariableDeclaration","scope":9413,"src":"17702:19:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9349,"name":"uint256","nodeType":"ElementaryTypeName","src":"17702:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17639:88:20"},"returnParameters":{"id":9354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9353,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9413,"src":"17750:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9352,"name":"uint256","nodeType":"ElementaryTypeName","src":"17750:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17749:9:20"},"scope":9800,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":9553,"nodeType":"FunctionDefinition","src":"18489:1511:20","nodes":[],"body":{"id":9552,"nodeType":"Block","src":"18695:1305:20","nodes":[],"statements":[{"condition":{"id":9429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"18709:15:20","subExpression":{"id":9428,"name":"hasDynamicFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8024,"src":"18710:14:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9433,"nodeType":"IfStatement","src":"18705:48:20","trueBody":{"id":9432,"nodeType":"Block","src":"18726:27:20","statements":[{"expression":{"id":9430,"name":"_feeBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9419,"src":"18735:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9427,"id":9431,"nodeType":"Return","src":"18728:22:20"}]}},{"assignments":[9435],"declarations":[{"constant":false,"id":9435,"mutability":"mutable","name":"initialAmount","nameLocation":"18779:13:20","nodeType":"VariableDeclaration","scope":9552,"src":"18771:21:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9434,"name":"uint256","nodeType":"ElementaryTypeName","src":"18771:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9439,"initialValue":{"baseExpression":{"id":9436,"name":"usdyAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8010,"src":"18795:11:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9438,"indexExpression":{"id":9437,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9415,"src":"18807:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18795:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18771:43:20"},{"assignments":[9441],"declarations":[{"constant":false,"id":9441,"mutability":"mutable","name":"nextAmount","nameLocation":"18832:10:20","nodeType":"VariableDeclaration","scope":9552,"src":"18824:18:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9440,"name":"uint256","nodeType":"ElementaryTypeName","src":"18824:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9445,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9442,"name":"initialAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9435,"src":"18845:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":9443,"name":"_usdyDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9417,"src":"18861:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18845:26:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18824:47:20"},{"condition":{"id":9447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"18885:11:20","subExpression":{"id":9446,"name":"_increment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9423,"src":"18886:10:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9460,"nodeType":"IfStatement","src":"18881:114:20","trueBody":{"id":9459,"nodeType":"Block","src":"18898:97:20","statements":[{"expression":{"id":9457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9448,"name":"nextAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9441,"src":"18912:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9449,"name":"_usdyDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9417,"src":"18925:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9450,"name":"initialAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9435,"src":"18938:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18925:26:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9453,"name":"initialAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9435,"src":"18958:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9454,"name":"_usdyDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9417,"src":"18974:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18958:26:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"18925:59:20","trueExpression":{"hexValue":"30","id":9452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18954:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18912:72:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9458,"nodeType":"ExpressionStatement","src":"18912:72:20"}]}},{"assignments":[9462],"declarations":[{"constant":false,"id":9462,"mutability":"mutable","name":"targetAmount","nameLocation":"19021:12:20","nodeType":"VariableDeclaration","scope":9552,"src":"19013:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9461,"name":"uint256","nodeType":"ElementaryTypeName","src":"19013:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9466,"initialValue":{"arguments":[{"id":9464,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9415,"src":"19056:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9463,"name":"getTargetUsdyAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9241,"src":"19036:19:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":9465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19036:27:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19013:50:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9467,"name":"targetAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9462,"src":"19077:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19093:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19077:17:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9473,"nodeType":"IfStatement","src":"19073:50:20","trueBody":{"id":9472,"nodeType":"Block","src":"19096:27:20","statements":[{"expression":{"id":9470,"name":"_feeBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9419,"src":"19105:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9427,"id":9471,"nodeType":"Return","src":"19098:22:20"}]}},{"assignments":[9475],"declarations":[{"constant":false,"id":9475,"mutability":"mutable","name":"initialDiff","nameLocation":"19149:11:20","nodeType":"VariableDeclaration","scope":9552,"src":"19141:19:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9474,"name":"uint256","nodeType":"ElementaryTypeName","src":"19141:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9486,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9476,"name":"initialAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9435,"src":"19163:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9477,"name":"targetAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9462,"src":"19179:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19163:28:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9482,"name":"targetAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9462,"src":"19251:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9483,"name":"initialAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9435,"src":"19266:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19251:28:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19163:116:20","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9479,"name":"initialAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9435,"src":"19207:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9480,"name":"targetAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9462,"src":"19223:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19207:28:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19141:138:20"},{"assignments":[9488],"declarations":[{"constant":false,"id":9488,"mutability":"mutable","name":"nextDiff","nameLocation":"19297:8:20","nodeType":"VariableDeclaration","scope":9552,"src":"19289:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9487,"name":"uint256","nodeType":"ElementaryTypeName","src":"19289:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9499,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9489,"name":"nextAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9441,"src":"19308:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9490,"name":"targetAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9462,"src":"19321:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19308:25:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9495,"name":"targetAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9462,"src":"19390:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9496,"name":"nextAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9441,"src":"19405:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19390:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19308:107:20","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9492,"name":"nextAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9441,"src":"19349:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9493,"name":"targetAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9462,"src":"19362:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19349:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19289:126:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9500,"name":"nextDiff","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9488,"src":"19482:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9501,"name":"initialDiff","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9475,"src":"19493:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19482:22:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9521,"nodeType":"IfStatement","src":"19478:199:20","trueBody":{"id":9520,"nodeType":"Block","src":"19506:171:20","statements":[{"assignments":[9504],"declarations":[{"constant":false,"id":9504,"mutability":"mutable","name":"rebateBps","nameLocation":"19528:9:20","nodeType":"VariableDeclaration","scope":9520,"src":"19520:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9503,"name":"uint256","nodeType":"ElementaryTypeName","src":"19520:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9510,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9505,"name":"_taxBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9421,"src":"19540:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9506,"name":"initialDiff","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9475,"src":"19558:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19540:29:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9508,"name":"targetAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9462,"src":"19572:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19540:44:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19520:64:20"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9511,"name":"rebateBps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9504,"src":"19605:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9512,"name":"_feeBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9419,"src":"19617:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19605:27:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9515,"name":"_feeBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9419,"src":"19639:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9516,"name":"rebateBps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9504,"src":"19657:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19639:27:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19605:61:20","trueExpression":{"hexValue":"30","id":9514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19635:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9427,"id":9519,"nodeType":"Return","src":"19598:68:20"}]}},{"assignments":[9523],"declarations":[{"constant":false,"id":9523,"mutability":"mutable","name":"averageDiff","nameLocation":"19747:11:20","nodeType":"VariableDeclaration","scope":9552,"src":"19739:19:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9522,"name":"uint256","nodeType":"ElementaryTypeName","src":"19739:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9530,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9524,"name":"initialDiff","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9475,"src":"19762:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":9525,"name":"nextDiff","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9488,"src":"19776:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19762:22:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9527,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19761:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":9528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19788:1:20","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19761:28:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19739:50:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9531,"name":"averageDiff","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9523,"src":"19803:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9532,"name":"targetAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9462,"src":"19817:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19803:26:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9539,"nodeType":"IfStatement","src":"19799:83:20","trueBody":{"id":9538,"nodeType":"Block","src":"19831:51:20","statements":[{"expression":{"id":9536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9534,"name":"averageDiff","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9523,"src":"19845:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9535,"name":"targetAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9462,"src":"19859:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19845:26:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9537,"nodeType":"ExpressionStatement","src":"19845:26:20"}]}},{"assignments":[9541],"declarations":[{"constant":false,"id":9541,"mutability":"mutable","name":"taxBps","nameLocation":"19899:6:20","nodeType":"VariableDeclaration","scope":9552,"src":"19891:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9540,"name":"uint256","nodeType":"ElementaryTypeName","src":"19891:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9547,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9542,"name":"_taxBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9421,"src":"19908:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9543,"name":"averageDiff","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9523,"src":"19926:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19908:29:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9545,"name":"targetAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9462,"src":"19940:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19908:44:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19891:61:20"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9548,"name":"_feeBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9419,"src":"19969:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":9549,"name":"taxBps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9541,"src":"19987:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19969:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9427,"id":9551,"nodeType":"Return","src":"19962:31:20"}]},"functionSelector":"c7e074c3","implemented":true,"kind":"function","modifiers":[],"name":"getFeeBasisPoints","nameLocation":"18498:17:20","parameters":{"id":9424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9415,"mutability":"mutable","name":"_token","nameLocation":"18533:6:20","nodeType":"VariableDeclaration","scope":9553,"src":"18525:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9414,"name":"address","nodeType":"ElementaryTypeName","src":"18525:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9417,"mutability":"mutable","name":"_usdyDelta","nameLocation":"18557:10:20","nodeType":"VariableDeclaration","scope":9553,"src":"18549:18:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9416,"name":"uint256","nodeType":"ElementaryTypeName","src":"18549:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9419,"mutability":"mutable","name":"_feeBasisPoints","nameLocation":"18585:15:20","nodeType":"VariableDeclaration","scope":9553,"src":"18577:23:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9418,"name":"uint256","nodeType":"ElementaryTypeName","src":"18577:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9421,"mutability":"mutable","name":"_taxBasisPoints","nameLocation":"18618:15:20","nodeType":"VariableDeclaration","scope":9553,"src":"18610:23:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9420,"name":"uint256","nodeType":"ElementaryTypeName","src":"18610:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9423,"mutability":"mutable","name":"_increment","nameLocation":"18648:10:20","nodeType":"VariableDeclaration","scope":9553,"src":"18643:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9422,"name":"bool","nodeType":"ElementaryTypeName","src":"18643:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"18515:149:20"},"returnParameters":{"id":9427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9426,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9553,"src":"18686:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9425,"name":"uint256","nodeType":"ElementaryTypeName","src":"18686:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18685:9:20"},"scope":9800,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":9589,"nodeType":"FunctionDefinition","src":"20010:281:20","nodes":[],"body":{"id":9588,"nodeType":"Block","src":"20073:218:20","nodes":[],"statements":[{"assignments":[9561],"declarations":[{"constant":false,"id":9561,"mutability":"mutable","name":"prevBalance","nameLocation":"20091:11:20","nodeType":"VariableDeclaration","scope":9588,"src":"20083:19:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9560,"name":"uint256","nodeType":"ElementaryTypeName","src":"20083:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9565,"initialValue":{"baseExpression":{"id":9562,"name":"tokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8006,"src":"20105:13:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9564,"indexExpression":{"id":9563,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9555,"src":"20119:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20105:21:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20083:43:20"},{"assignments":[9567],"declarations":[{"constant":false,"id":9567,"mutability":"mutable","name":"nextBalance","nameLocation":"20144:11:20","nodeType":"VariableDeclaration","scope":9588,"src":"20136:19:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9566,"name":"uint256","nodeType":"ElementaryTypeName","src":"20136:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9577,"initialValue":{"arguments":[{"arguments":[{"id":9574,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"20191:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_YTVault_$9800","typeString":"contract YTVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_YTVault_$9800","typeString":"contract YTVault"}],"id":9573,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20183:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9572,"name":"address","nodeType":"ElementaryTypeName","src":"20183:7:20","typeDescriptions":{}}},"id":9575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20183:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":9569,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9555,"src":"20165:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9568,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"20158:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":9570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20158:14:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":9571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20173:9:20","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":12605,"src":"20158:24:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":9576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20158:39:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20136:61:20"},{"expression":{"id":9582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9578,"name":"tokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8006,"src":"20207:13:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9580,"indexExpression":{"id":9579,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9555,"src":"20221:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"20207:21:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9581,"name":"nextBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9567,"src":"20231:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20207:35:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9583,"nodeType":"ExpressionStatement","src":"20207:35:20"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9584,"name":"nextBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9567,"src":"20259:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9585,"name":"prevBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9561,"src":"20273:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20259:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9559,"id":9587,"nodeType":"Return","src":"20252:32:20"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_transferIn","nameLocation":"20019:11:20","parameters":{"id":9556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9555,"mutability":"mutable","name":"_token","nameLocation":"20039:6:20","nodeType":"VariableDeclaration","scope":9589,"src":"20031:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9554,"name":"address","nodeType":"ElementaryTypeName","src":"20031:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"20030:16:20"},"returnParameters":{"id":9559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9558,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9589,"src":"20064:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9557,"name":"uint256","nodeType":"ElementaryTypeName","src":"20064:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20063:9:20"},"scope":9800,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":9609,"nodeType":"FunctionDefinition","src":"20301:133:20","nodes":[],"body":{"id":9608,"nodeType":"Block","src":"20354:80:20","nodes":[],"statements":[{"expression":{"id":9606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9594,"name":"tokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8006,"src":"20364:13:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9596,"indexExpression":{"id":9595,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9591,"src":"20378:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"20364:21:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":9603,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"20421:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_YTVault_$9800","typeString":"contract YTVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_YTVault_$9800","typeString":"contract YTVault"}],"id":9602,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20413:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9601,"name":"address","nodeType":"ElementaryTypeName","src":"20413:7:20","typeDescriptions":{}}},"id":9604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20413:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":9598,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9591,"src":"20395:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9597,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"20388:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$12648_$","typeString":"type(contract IERC20)"}},"id":9599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20388:14:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":9600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20403:9:20","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":12605,"src":"20388:24:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":9605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20388:39:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20364:63:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9607,"nodeType":"ExpressionStatement","src":"20364:63:20"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_updateTokenBalance","nameLocation":"20310:19:20","parameters":{"id":9592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9591,"mutability":"mutable","name":"_token","nameLocation":"20338:6:20","nodeType":"VariableDeclaration","scope":9609,"src":"20330:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9590,"name":"address","nodeType":"ElementaryTypeName","src":"20330:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"20329:16:20"},"returnParameters":{"id":9593,"nodeType":"ParameterList","parameters":[],"src":"20354:0:20"},"scope":9800,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":9627,"nodeType":"FunctionDefinition","src":"20444:154:20","nodes":[],"body":{"id":9626,"nodeType":"Block","src":"20514:84:20","nodes":[],"statements":[{"expression":{"id":9620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9616,"name":"poolAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8002,"src":"20524:11:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9618,"indexExpression":{"id":9617,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9611,"src":"20536:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"20524:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":9619,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9613,"src":"20547:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20524:30:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9621,"nodeType":"ExpressionStatement","src":"20524:30:20"},{"expression":{"arguments":[{"id":9623,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9611,"src":"20584:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9622,"name":"_validatePoolAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"20564:19:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":9624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20564:27:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9625,"nodeType":"ExpressionStatement","src":"20564:27:20"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_increasePoolAmount","nameLocation":"20453:19:20","parameters":{"id":9614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9611,"mutability":"mutable","name":"_token","nameLocation":"20481:6:20","nodeType":"VariableDeclaration","scope":9627,"src":"20473:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9610,"name":"address","nodeType":"ElementaryTypeName","src":"20473:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9613,"mutability":"mutable","name":"_amount","nameLocation":"20497:7:20","nodeType":"VariableDeclaration","scope":9627,"src":"20489:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9612,"name":"uint256","nodeType":"ElementaryTypeName","src":"20489:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20472:33:20"},"returnParameters":{"id":9615,"nodeType":"ParameterList","parameters":[],"src":"20514:0:20"},"scope":9800,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":9650,"nodeType":"FunctionDefinition","src":"20608:187:20","nodes":[],"body":{"id":9649,"nodeType":"Block","src":"20678:117:20","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":9634,"name":"poolAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8002,"src":"20692:11:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9636,"indexExpression":{"id":9635,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9629,"src":"20704:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20692:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9637,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9631,"src":"20714:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20692:29:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9642,"nodeType":"IfStatement","src":"20688:60:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9639,"name":"InsufficientPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7938,"src":"20730:16:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20730:18:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9641,"nodeType":"RevertStatement","src":"20723:25:20"}},{"expression":{"id":9647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9643,"name":"poolAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8002,"src":"20758:11:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9645,"indexExpression":{"id":9644,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9629,"src":"20770:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"20758:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":9646,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9631,"src":"20781:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20758:30:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9648,"nodeType":"ExpressionStatement","src":"20758:30:20"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_decreasePoolAmount","nameLocation":"20617:19:20","parameters":{"id":9632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9629,"mutability":"mutable","name":"_token","nameLocation":"20645:6:20","nodeType":"VariableDeclaration","scope":9650,"src":"20637:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9628,"name":"address","nodeType":"ElementaryTypeName","src":"20637:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9631,"mutability":"mutable","name":"_amount","nameLocation":"20661:7:20","nodeType":"VariableDeclaration","scope":9650,"src":"20653:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9630,"name":"uint256","nodeType":"ElementaryTypeName","src":"20653:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20636:33:20"},"returnParameters":{"id":9633,"nodeType":"ParameterList","parameters":[],"src":"20678:0:20"},"scope":9800,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":9667,"nodeType":"FunctionDefinition","src":"20805:150:20","nodes":[],"body":{"id":9666,"nodeType":"Block","src":"20863:92:20","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":9655,"name":"poolAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8002,"src":"20877:11:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9657,"indexExpression":{"id":9656,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9652,"src":"20889:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20877:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"id":9658,"name":"tokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8006,"src":"20899:13:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9660,"indexExpression":{"id":9659,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9652,"src":"20913:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20899:21:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20877:43:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9665,"nodeType":"IfStatement","src":"20873:75:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9662,"name":"InvalidPoolAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7948,"src":"20929:17:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20929:19:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9664,"nodeType":"RevertStatement","src":"20922:26:20"}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_validatePoolAmount","nameLocation":"20814:19:20","parameters":{"id":9653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9652,"mutability":"mutable","name":"_token","nameLocation":"20842:6:20","nodeType":"VariableDeclaration","scope":9667,"src":"20834:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9651,"name":"address","nodeType":"ElementaryTypeName","src":"20834:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"20833:16:20"},"returnParameters":{"id":9654,"nodeType":"ParameterList","parameters":[],"src":"20863:0:20"},"scope":9800,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":9710,"nodeType":"FunctionDefinition","src":"20965:538:20","nodes":[],"body":{"id":9709,"nodeType":"Block","src":"21123:380:20","nodes":[],"statements":[{"assignments":[9679],"declarations":[{"constant":false,"id":9679,"mutability":"mutable","name":"expectedOut","nameLocation":"21192:11:20","nodeType":"VariableDeclaration","scope":9709,"src":"21184:19:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9678,"name":"uint256","nodeType":"ElementaryTypeName","src":"21184:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9685,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9680,"name":"_amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9669,"src":"21206:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9681,"name":"_priceIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9673,"src":"21218:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21206:20:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9683,"name":"_priceOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9675,"src":"21229:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21206:32:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21184:54:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9686,"name":"expectedOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9679,"src":"21291:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9687,"name":"_amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9671,"src":"21305:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21291:24:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9708,"nodeType":"IfStatement","src":"21287:210:20","trueBody":{"id":9707,"nodeType":"Block","src":"21317:180:20","statements":[{"assignments":[9690],"declarations":[{"constant":false,"id":9690,"mutability":"mutable","name":"slippage","nameLocation":"21339:8:20","nodeType":"VariableDeclaration","scope":9707,"src":"21331:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9689,"name":"uint256","nodeType":"ElementaryTypeName","src":"21331:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9699,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9691,"name":"expectedOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9679,"src":"21351:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9692,"name":"_amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9671,"src":"21365:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21351:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9694,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21350:26:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9695,"name":"BASIS_POINTS_DIVISOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7958,"src":"21379:20:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21350:49:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9697,"name":"expectedOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9679,"src":"21402:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21350:63:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21331:82:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9700,"name":"slippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"21431:8:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9701,"name":"maxSwapSlippageBps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8026,"src":"21442:18:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21431:29:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9706,"nodeType":"IfStatement","src":"21427:59:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9703,"name":"SlippageTooHigh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7932,"src":"21469:15:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21469:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9705,"nodeType":"RevertStatement","src":"21462:24:20"}}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_validateSwapSlippage","nameLocation":"20974:21:20","parameters":{"id":9676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9669,"mutability":"mutable","name":"_amountIn","nameLocation":"21013:9:20","nodeType":"VariableDeclaration","scope":9710,"src":"21005:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9668,"name":"uint256","nodeType":"ElementaryTypeName","src":"21005:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9671,"mutability":"mutable","name":"_amountOut","nameLocation":"21040:10:20","nodeType":"VariableDeclaration","scope":9710,"src":"21032:18:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9670,"name":"uint256","nodeType":"ElementaryTypeName","src":"21032:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9673,"mutability":"mutable","name":"_priceIn","nameLocation":"21068:8:20","nodeType":"VariableDeclaration","scope":9710,"src":"21060:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9672,"name":"uint256","nodeType":"ElementaryTypeName","src":"21060:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9675,"mutability":"mutable","name":"_priceOut","nameLocation":"21094:9:20","nodeType":"VariableDeclaration","scope":9710,"src":"21086:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9674,"name":"uint256","nodeType":"ElementaryTypeName","src":"21086:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20995:114:20"},"returnParameters":{"id":9677,"nodeType":"ParameterList","parameters":[],"src":"21123:0:20"},"scope":9800,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":9728,"nodeType":"FunctionDefinition","src":"21513:157:20","nodes":[],"body":{"id":9727,"nodeType":"Block","src":"21595:75:20","nodes":[],"statements":[{"expression":{"arguments":[{"id":9723,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9712,"src":"21645:6:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9724,"name":"_maximise","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9714,"src":"21653:9:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[{"id":9720,"name":"priceFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7967,"src":"21625:9:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9719,"name":"IYTPriceFeed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":339,"src":"21612:12:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IYTPriceFeed_$339_$","typeString":"type(contract IYTPriceFeed)"}},"id":9721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21612:23:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IYTPriceFeed_$339","typeString":"contract IYTPriceFeed"}},"id":9722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21636:8:20","memberName":"getPrice","nodeType":"MemberAccess","referencedDeclaration":338,"src":"21612:32:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_bool_$returns$_t_uint256_$","typeString":"function (address,bool) view external returns (uint256)"}},"id":9725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21612:51:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9718,"id":9726,"nodeType":"Return","src":"21605:58:20"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getPrice","nameLocation":"21522:9:20","parameters":{"id":9715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9712,"mutability":"mutable","name":"_token","nameLocation":"21540:6:20","nodeType":"VariableDeclaration","scope":9728,"src":"21532:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9711,"name":"address","nodeType":"ElementaryTypeName","src":"21532:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9714,"mutability":"mutable","name":"_maximise","nameLocation":"21553:9:20","nodeType":"VariableDeclaration","scope":9728,"src":"21548:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9713,"name":"bool","nodeType":"ElementaryTypeName","src":"21548:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"21531:32:20"},"returnParameters":{"id":9718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9717,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9728,"src":"21586:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9716,"name":"uint256","nodeType":"ElementaryTypeName","src":"21586:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21585:9:20"},"scope":9800,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":9794,"nodeType":"FunctionDefinition","src":"21680:621:20","nodes":[],"body":{"id":9793,"nodeType":"Block","src":"21824:477:20","nodes":[],"statements":[{"assignments":[9740],"declarations":[{"constant":false,"id":9740,"mutability":"mutable","name":"decimalsFrom","nameLocation":"21842:12:20","nodeType":"VariableDeclaration","scope":9793,"src":"21834:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9739,"name":"uint256","nodeType":"ElementaryTypeName","src":"21834:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9749,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9741,"name":"_tokenFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9732,"src":"21857:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9742,"name":"usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7969,"src":"21871:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"21857:18:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"baseExpression":{"id":9745,"name":"tokenDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7992,"src":"21894:13:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9747,"indexExpression":{"id":9746,"name":"_tokenFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9732,"src":"21908:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21894:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21857:62:20","trueExpression":{"id":9744,"name":"USDY_DECIMALS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7961,"src":"21878:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21834:85:20"},{"assignments":[9751],"declarations":[{"constant":false,"id":9751,"mutability":"mutable","name":"decimalsTo","nameLocation":"21937:10:20","nodeType":"VariableDeclaration","scope":9793,"src":"21929:18:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9750,"name":"uint256","nodeType":"ElementaryTypeName","src":"21929:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9760,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9752,"name":"_tokenTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9734,"src":"21950:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9753,"name":"usdy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7969,"src":"21962:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"21950:16:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"baseExpression":{"id":9756,"name":"tokenDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7992,"src":"21985:13:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9758,"indexExpression":{"id":9757,"name":"_tokenTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9734,"src":"21999:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21985:23:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"21950:58:20","trueExpression":{"id":9755,"name":"USDY_DECIMALS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7961,"src":"21969:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21929:79:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9761,"name":"decimalsFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9740,"src":"22031:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":9762,"name":"decimalsTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9751,"src":"22047:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22031:26:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9767,"nodeType":"IfStatement","src":"22027:71:20","trueBody":{"id":9766,"nodeType":"Block","src":"22059:39:20","statements":[{"expression":{"id":9764,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9730,"src":"22080:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9738,"id":9765,"nodeType":"Return","src":"22073:14:20"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9768,"name":"decimalsFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9740,"src":"22120:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9769,"name":"decimalsTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9751,"src":"22135:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22120:25:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9782,"nodeType":"IfStatement","src":"22116:108:20","trueBody":{"id":9781,"nodeType":"Block","src":"22147:77:20","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9771,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9730,"src":"22168:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":9772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22179:2:20","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9773,"name":"decimalsFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9740,"src":"22186:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9774,"name":"decimalsTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9751,"src":"22201:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22186:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9776,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22185:27:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22179:33:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9778,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22178:35:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22168:45:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9738,"id":9780,"nodeType":"Return","src":"22161:52:20"}]}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9783,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9730,"src":"22249:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":9784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22260:2:20","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9785,"name":"decimalsTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9751,"src":"22267:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9786,"name":"decimalsFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9740,"src":"22280:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22267:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9788,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22266:27:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22260:33:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9790,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22259:35:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22249:45:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9738,"id":9792,"nodeType":"Return","src":"22242:52:20"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_adjustForDecimals","nameLocation":"21689:18:20","parameters":{"id":9735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9730,"mutability":"mutable","name":"_amount","nameLocation":"21725:7:20","nodeType":"VariableDeclaration","scope":9794,"src":"21717:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9729,"name":"uint256","nodeType":"ElementaryTypeName","src":"21717:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9732,"mutability":"mutable","name":"_tokenFrom","nameLocation":"21750:10:20","nodeType":"VariableDeclaration","scope":9794,"src":"21742:18:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9731,"name":"address","nodeType":"ElementaryTypeName","src":"21742:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9734,"mutability":"mutable","name":"_tokenTo","nameLocation":"21778:8:20","nodeType":"VariableDeclaration","scope":9794,"src":"21770:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9733,"name":"address","nodeType":"ElementaryTypeName","src":"21770:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"21707:85:20"},"returnParameters":{"id":9738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9737,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9794,"src":"21815:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9736,"name":"uint256","nodeType":"ElementaryTypeName","src":"21815:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21814:9:20"},"scope":9800,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":9799,"nodeType":"VariableDeclaration","src":"22452:25:20","nodes":[],"constant":false,"documentation":{"id":9795,"nodeType":"StructuredDocumentation","src":"22311:136:20","text":" @dev 预留存储空间,用于未来升级时添加新的状态变量\n 50个slot = 50 * 32 bytes = 1600 bytes"},"mutability":"mutable","name":"__gap","nameLocation":"22472:5:20","scope":9800,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":9796,"name":"uint256","nodeType":"ElementaryTypeName","src":"22452:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9798,"length":{"hexValue":"3530","id":9797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22460:2:20","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"22452:11:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":7905,"name":"Initializable","nameLocations":["653:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":10652,"src":"653:13:20"},"id":7906,"nodeType":"InheritanceSpecifier","src":"653:13:20"},{"baseName":{"id":7907,"name":"UUPSUpgradeable","nameLocations":["668:15:20"],"nodeType":"IdentifierPath","referencedDeclaration":10834,"src":"668:15:20"},"id":7908,"nodeType":"InheritanceSpecifier","src":"668:15:20"},{"baseName":{"id":7909,"name":"ReentrancyGuardUpgradeable","nameLocations":["685:26:20"],"nodeType":"IdentifierPath","referencedDeclaration":11786,"src":"685:26:20"},"id":7910,"nodeType":"InheritanceSpecifier","src":"685:26:20"}],"canonicalName":"YTVault","contractDependencies":[],"contractKind":"contract","documentation":{"id":7904,"nodeType":"StructuredDocumentation","src":"499:133:20","text":" @title YTVault\n @notice 核心资金池处理YT代币的存储、交换和动态手续费\n @dev UUPS可升级合约"},"fullyImplemented":true,"linearizedBaseContracts":[9800,11786,10834,12055,10652],"name":"YTVault","nameLocation":"642:7:20","scope":9801,"usedErrors":[7916,7918,7920,7922,7924,7926,7928,7930,7932,7934,7936,7938,7940,7942,7944,7946,7948,7950,10401,10404,10679,10684,11688,12250,12263,12686,13148,13441],"usedEvents":[8044,8054,8064,8068,8072,10409,12028]}],"license":"MIT"}},"contracts/ytLp/tokens/USDY.sol":{"id":21,"ast":{"absolutePath":"contracts/ytLp/tokens/USDY.sol","id":9961,"exportedSymbols":{"ContextUpgradeable":[11497],"ERC1967Utils":[12524],"ERC20Upgradeable":[11451],"IERC1822Proxiable":[12055],"IERC20":[12648],"IERC20Errors":[12097],"IERC20Metadata":[12674],"Initializable":[10652],"OwnableUpgradeable":[10384],"USDY":[9960],"UUPSUpgradeable":[10834]},"nodeType":"SourceUnit","src":"32:2469:21","nodes":[{"id":9802,"nodeType":"PragmaDirective","src":"32:23:21","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":9803,"nodeType":"ImportDirective","src":"57:78:21","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","nameLocation":"-1:-1:-1","scope":9961,"sourceUnit":11452,"symbolAliases":[],"unitAlias":""},{"id":9804,"nodeType":"ImportDirective","src":"136:75:21","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":9961,"sourceUnit":10385,"symbolAliases":[],"unitAlias":""},{"id":9805,"nodeType":"ImportDirective","src":"212:75:21","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":9961,"sourceUnit":10653,"symbolAliases":[],"unitAlias":""},{"id":9806,"nodeType":"ImportDirective","src":"288:77:21","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":9961,"sourceUnit":10835,"symbolAliases":[],"unitAlias":""},{"id":9960,"nodeType":"ContractDefinition","src":"498:2001:21","nodes":[{"id":9817,"nodeType":"ErrorDefinition","src":"595:18:21","nodes":[],"errorSelector":"ee90c468","name":"Forbidden","nameLocation":"601:9:21","parameters":{"id":9816,"nodeType":"ParameterList","parameters":[],"src":"610:2:21"}},{"id":9819,"nodeType":"ErrorDefinition","src":"618:21:21","nodes":[],"errorSelector":"d03a6320","name":"InvalidVault","nameLocation":"624:12:21","parameters":{"id":9818,"nodeType":"ParameterList","parameters":[],"src":"636:2:21"}},{"id":9823,"nodeType":"VariableDeclaration","src":"649:38:21","nodes":[],"constant":false,"functionSelector":"a622ee7c","mutability":"mutable","name":"vaults","nameLocation":"681:6:21","scope":9960,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":9822,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":9820,"name":"address","nodeType":"ElementaryTypeName","src":"657:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"649:24:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":9821,"name":"bool","nodeType":"ElementaryTypeName","src":"668:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":9827,"nodeType":"EventDefinition","src":"698:40:21","nodes":[],"anonymous":false,"eventSelector":"7b7ef7a864d96a85497a1ed846adb39940dd6ccef678ff6ac8d55505e09b8cc4","name":"VaultAdded","nameLocation":"704:10:21","parameters":{"id":9826,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9825,"indexed":true,"mutability":"mutable","name":"vault","nameLocation":"731:5:21","nodeType":"VariableDeclaration","scope":9827,"src":"715:21:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9824,"name":"address","nodeType":"ElementaryTypeName","src":"715:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"714:23:21"}},{"id":9831,"nodeType":"EventDefinition","src":"743:42:21","nodes":[],"anonymous":false,"eventSelector":"e71f3a50e5ad81964f352c411f1d45e35438ecd1acecef59ac81d9fbbf6cbc0a","name":"VaultRemoved","nameLocation":"749:12:21","parameters":{"id":9830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9829,"indexed":true,"mutability":"mutable","name":"vault","nameLocation":"778:5:21","nodeType":"VariableDeclaration","scope":9831,"src":"762:21:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9828,"name":"address","nodeType":"ElementaryTypeName","src":"762:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"761:23:21"}},{"id":9844,"nodeType":"ModifierDefinition","src":"795:92:21","nodes":[],"body":{"id":9843,"nodeType":"Block","src":"816:71:21","nodes":[],"statements":[{"condition":{"id":9837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"830:19:21","subExpression":{"baseExpression":{"id":9833,"name":"vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9823,"src":"831:6:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":9836,"indexExpression":{"expression":{"id":9834,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"838:3:21","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"842:6:21","memberName":"sender","nodeType":"MemberAccess","src":"838:10:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"831:18:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9841,"nodeType":"IfStatement","src":"826:43:21","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9838,"name":"Forbidden","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9817,"src":"858:9:21","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"858:11:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9840,"nodeType":"RevertStatement","src":"851:18:21"}},{"id":9842,"nodeType":"PlaceholderStatement","src":"879:1:21"}]},"name":"onlyVault","nameLocation":"804:9:21","parameters":{"id":9832,"nodeType":"ParameterList","parameters":[],"src":"813:2:21"},"virtual":false,"visibility":"internal"},{"id":9864,"nodeType":"FunctionDefinition","src":"944:160:21","nodes":[],"body":{"id":9863,"nodeType":"Block","src":"987:117:21","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"595420555344","id":9851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1010:8:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_73d03d013cb90a9c918f8d2bbea3229e62600a20953f06f07850dc5e7b2400b5","typeString":"literal_string \"YT USD\""},"value":"YT USD"},{"hexValue":"55534459","id":9852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1020:6:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_eb3420dc333cd737f3fc1d31d856a828e115a3cf3ba02411617a9bd7a2c92d32","typeString":"literal_string \"USDY\""},"value":"USDY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_73d03d013cb90a9c918f8d2bbea3229e62600a20953f06f07850dc5e7b2400b5","typeString":"literal_string \"YT USD\""},{"typeIdentifier":"t_stringliteral_eb3420dc333cd737f3fc1d31d856a828e115a3cf3ba02411617a9bd7a2c92d32","typeString":"literal_string \"USDY\""}],"id":9850,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10902,"src":"997:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":9853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"997:30:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9854,"nodeType":"ExpressionStatement","src":"997:30:21"},{"expression":{"arguments":[{"expression":{"id":9856,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1052:3:21","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1056:6:21","memberName":"sender","nodeType":"MemberAccess","src":"1052:10:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9855,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10244,"src":"1037:14:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":9858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1037:26:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9859,"nodeType":"ExpressionStatement","src":"1037:26:21"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9860,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10706,"src":"1073:22:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":9861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1073:24:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9862,"nodeType":"ExpressionStatement","src":"1073:24:21"}]},"documentation":{"id":9845,"nodeType":"StructuredDocumentation","src":"897:42:21","text":" @notice 初始化合约"},"functionSelector":"8129fc1c","implemented":true,"kind":"function","modifiers":[{"id":9848,"kind":"modifierInvocation","modifierName":{"id":9847,"name":"initializer","nameLocations":["975:11:21"],"nodeType":"IdentifierPath","referencedDeclaration":10492,"src":"975:11:21"},"nodeType":"ModifierInvocation","src":"975:11:21"}],"name":"initialize","nameLocation":"953:10:21","parameters":{"id":9846,"nodeType":"ParameterList","parameters":[],"src":"963:2:21"},"returnParameters":{"id":9849,"nodeType":"ParameterList","parameters":[],"src":"987:0:21"},"scope":9960,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":9874,"nodeType":"FunctionDefinition","src":"1235:84:21","nodes":[],"body":{"id":9873,"nodeType":"Block","src":"1317:2:21","nodes":[],"statements":[]},"baseFunctions":[10788],"documentation":{"id":9865,"nodeType":"StructuredDocumentation","src":"1114:116:21","text":" @notice 授权升级仅owner可调用\n @param newImplementation 新实现合约地址"},"implemented":true,"kind":"function","modifiers":[{"id":9871,"kind":"modifierInvocation","modifierName":{"id":9870,"name":"onlyOwner","nameLocations":["1307:9:21"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"1307:9:21"},"nodeType":"ModifierInvocation","src":"1307:9:21"}],"name":"_authorizeUpgrade","nameLocation":"1244:17:21","overrides":{"id":9869,"nodeType":"OverrideSpecifier","overrides":[],"src":"1298:8:21"},"parameters":{"id":9868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9867,"mutability":"mutable","name":"newImplementation","nameLocation":"1270:17:21","nodeType":"VariableDeclaration","scope":9874,"src":"1262:25:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9866,"name":"address","nodeType":"ElementaryTypeName","src":"1262:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1261:27:21"},"returnParameters":{"id":9872,"nodeType":"ParameterList","parameters":[],"src":"1317:0:21"},"scope":9960,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":9903,"nodeType":"FunctionDefinition","src":"1426:181:21","nodes":[],"body":{"id":9902,"nodeType":"Block","src":"1479:128:21","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9882,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9877,"src":"1493:6:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":9885,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1511:1:21","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":9884,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1503:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9883,"name":"address","nodeType":"ElementaryTypeName","src":"1503:7:21","typeDescriptions":{}}},"id":9886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1503:10:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1493:20:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9891,"nodeType":"IfStatement","src":"1489:47:21","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9888,"name":"InvalidVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9819,"src":"1522:12:21","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1522:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9890,"nodeType":"RevertStatement","src":"1515:21:21"}},{"expression":{"id":9896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9892,"name":"vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9823,"src":"1546:6:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":9894,"indexExpression":{"id":9893,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9877,"src":"1553:6:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1546:14:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":9895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1563:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1546:21:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9897,"nodeType":"ExpressionStatement","src":"1546:21:21"},{"eventCall":{"arguments":[{"id":9899,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9877,"src":"1593:6:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9898,"name":"VaultAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9827,"src":"1582:10:21","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":9900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1582:18:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9901,"nodeType":"EmitStatement","src":"1577:23:21"}]},"documentation":{"id":9875,"nodeType":"StructuredDocumentation","src":"1329:92:21","text":" @notice 添加授权的Vault地址\n @param _vault Vault合约地址"},"functionSelector":"256b5a02","implemented":true,"kind":"function","modifiers":[{"id":9880,"kind":"modifierInvocation","modifierName":{"id":9879,"name":"onlyOwner","nameLocations":["1469:9:21"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"1469:9:21"},"nodeType":"ModifierInvocation","src":"1469:9:21"}],"name":"addVault","nameLocation":"1435:8:21","parameters":{"id":9878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9877,"mutability":"mutable","name":"_vault","nameLocation":"1452:6:21","nodeType":"VariableDeclaration","scope":9903,"src":"1444:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9876,"name":"address","nodeType":"ElementaryTypeName","src":"1444:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1443:16:21"},"returnParameters":{"id":9881,"nodeType":"ParameterList","parameters":[],"src":"1479:0:21"},"scope":9960,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":9922,"nodeType":"FunctionDefinition","src":"1714:130:21","nodes":[],"body":{"id":9921,"nodeType":"Block","src":"1770:74:21","nodes":[],"statements":[{"expression":{"id":9915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9911,"name":"vaults","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9823,"src":"1780:6:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":9913,"indexExpression":{"id":9912,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9906,"src":"1787:6:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1780:14:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":9914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1797:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"1780:22:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9916,"nodeType":"ExpressionStatement","src":"1780:22:21"},{"eventCall":{"arguments":[{"id":9918,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9906,"src":"1830:6:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9917,"name":"VaultRemoved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9831,"src":"1817:12:21","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":9919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1817:20:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9920,"nodeType":"EmitStatement","src":"1812:25:21"}]},"documentation":{"id":9904,"nodeType":"StructuredDocumentation","src":"1617:92:21","text":" @notice 移除授权的Vault地址\n @param _vault Vault合约地址"},"functionSelector":"ceb68c23","implemented":true,"kind":"function","modifiers":[{"id":9909,"kind":"modifierInvocation","modifierName":{"id":9908,"name":"onlyOwner","nameLocations":["1760:9:21"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"1760:9:21"},"nodeType":"ModifierInvocation","src":"1760:9:21"}],"name":"removeVault","nameLocation":"1723:11:21","parameters":{"id":9907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9906,"mutability":"mutable","name":"_vault","nameLocation":"1743:6:21","nodeType":"VariableDeclaration","scope":9922,"src":"1735:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9905,"name":"address","nodeType":"ElementaryTypeName","src":"1735:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1734:16:21"},"returnParameters":{"id":9910,"nodeType":"ParameterList","parameters":[],"src":"1770:0:21"},"scope":9960,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":9938,"nodeType":"FunctionDefinition","src":"1973:109:21","nodes":[],"body":{"id":9937,"nodeType":"Block","src":"2041:41:21","nodes":[],"statements":[{"expression":{"arguments":[{"id":9933,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9925,"src":"2057:8:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9934,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9927,"src":"2067:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9932,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"2051:5:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2051:24:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9936,"nodeType":"ExpressionStatement","src":"2051:24:21"}]},"documentation":{"id":9923,"nodeType":"StructuredDocumentation","src":"1854:114:21","text":" @notice 铸造USDY代币\n @param _account 接收地址\n @param _amount 铸造数量"},"functionSelector":"40c10f19","implemented":true,"kind":"function","modifiers":[{"id":9930,"kind":"modifierInvocation","modifierName":{"id":9929,"name":"onlyVault","nameLocations":["2031:9:21"],"nodeType":"IdentifierPath","referencedDeclaration":9844,"src":"2031:9:21"},"nodeType":"ModifierInvocation","src":"2031:9:21"}],"name":"mint","nameLocation":"1982:4:21","parameters":{"id":9928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9925,"mutability":"mutable","name":"_account","nameLocation":"1995:8:21","nodeType":"VariableDeclaration","scope":9938,"src":"1987:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9924,"name":"address","nodeType":"ElementaryTypeName","src":"1987:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9927,"mutability":"mutable","name":"_amount","nameLocation":"2013:7:21","nodeType":"VariableDeclaration","scope":9938,"src":"2005:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9926,"name":"uint256","nodeType":"ElementaryTypeName","src":"2005:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1986:35:21"},"returnParameters":{"id":9931,"nodeType":"ParameterList","parameters":[],"src":"2041:0:21"},"scope":9960,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":9954,"nodeType":"FunctionDefinition","src":"2211:109:21","nodes":[],"body":{"id":9953,"nodeType":"Block","src":"2279:41:21","nodes":[],"statements":[{"expression":{"arguments":[{"id":9949,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9941,"src":"2295:8:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9950,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9943,"src":"2305:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9948,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11316,"src":"2289:5:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2289:24:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9952,"nodeType":"ExpressionStatement","src":"2289:24:21"}]},"documentation":{"id":9939,"nodeType":"StructuredDocumentation","src":"2092:114:21","text":" @notice 销毁USDY代币\n @param _account 销毁地址\n @param _amount 销毁数量"},"functionSelector":"9dc29fac","implemented":true,"kind":"function","modifiers":[{"id":9946,"kind":"modifierInvocation","modifierName":{"id":9945,"name":"onlyVault","nameLocations":["2269:9:21"],"nodeType":"IdentifierPath","referencedDeclaration":9844,"src":"2269:9:21"},"nodeType":"ModifierInvocation","src":"2269:9:21"}],"name":"burn","nameLocation":"2220:4:21","parameters":{"id":9944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9941,"mutability":"mutable","name":"_account","nameLocation":"2233:8:21","nodeType":"VariableDeclaration","scope":9954,"src":"2225:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9940,"name":"address","nodeType":"ElementaryTypeName","src":"2225:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9943,"mutability":"mutable","name":"_amount","nameLocation":"2251:7:21","nodeType":"VariableDeclaration","scope":9954,"src":"2243:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9942,"name":"uint256","nodeType":"ElementaryTypeName","src":"2243:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2224:35:21"},"returnParameters":{"id":9947,"nodeType":"ParameterList","parameters":[],"src":"2279:0:21"},"scope":9960,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":9959,"nodeType":"VariableDeclaration","src":"2471:25:21","nodes":[],"constant":false,"documentation":{"id":9955,"nodeType":"StructuredDocumentation","src":"2330:136:21","text":" @dev 预留存储空间,用于未来升级时添加新的状态变量\n 50个slot = 50 * 32 bytes = 1600 bytes"},"mutability":"mutable","name":"__gap","nameLocation":"2491:5:21","scope":9960,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":9956,"name":"uint256","nodeType":"ElementaryTypeName","src":"2471:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9958,"length":{"hexValue":"3530","id":9957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2479:2:21","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"2471:11:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":9808,"name":"Initializable","nameLocations":["515:13:21"],"nodeType":"IdentifierPath","referencedDeclaration":10652,"src":"515:13:21"},"id":9809,"nodeType":"InheritanceSpecifier","src":"515:13:21"},{"baseName":{"id":9810,"name":"ERC20Upgradeable","nameLocations":["530:16:21"],"nodeType":"IdentifierPath","referencedDeclaration":11451,"src":"530:16:21"},"id":9811,"nodeType":"InheritanceSpecifier","src":"530:16:21"},{"baseName":{"id":9812,"name":"OwnableUpgradeable","nameLocations":["548:18:21"],"nodeType":"IdentifierPath","referencedDeclaration":10384,"src":"548:18:21"},"id":9813,"nodeType":"InheritanceSpecifier","src":"548:18:21"},{"baseName":{"id":9814,"name":"UUPSUpgradeable","nameLocations":["568:15:21"],"nodeType":"IdentifierPath","referencedDeclaration":10834,"src":"568:15:21"},"id":9815,"nodeType":"InheritanceSpecifier","src":"568:15:21"}],"canonicalName":"USDY","contractDependencies":[],"contractKind":"contract","documentation":{"id":9807,"nodeType":"StructuredDocumentation","src":"367:130:21","text":" @title USDY Token\n @notice 统一计价代币\n @dev 只有授权的Vault可以铸造和销毁UUPS可升级合约"},"fullyImplemented":true,"linearizedBaseContracts":[9960,10834,12055,10384,11451,12097,12674,12648,11497,10652],"name":"USDY","nameLocation":"507:4:21","scope":9961,"usedErrors":[9817,9819,10220,10225,10401,10404,10679,10684,12067,12072,12077,12086,12091,12096,12250,12263,13148,13441],"usedEvents":[9827,9831,10231,10409,12028,12582,12591]}],"license":"MIT"}},"contracts/ytLp/tokens/WUSD.sol":{"id":22,"ast":{"absolutePath":"contracts/ytLp/tokens/WUSD.sol","id":10048,"exportedSymbols":{"ContextUpgradeable":[11497],"ERC1967Utils":[12524],"ERC20Upgradeable":[11451],"IERC1822Proxiable":[12055],"IERC20":[12648],"IERC20Errors":[12097],"IERC20Metadata":[12674],"Initializable":[10652],"OwnableUpgradeable":[10384],"UUPSUpgradeable":[10834],"WUSD":[10047]},"nodeType":"SourceUnit","src":"32:1609:22","nodes":[{"id":9962,"nodeType":"PragmaDirective","src":"32:23:22","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":9963,"nodeType":"ImportDirective","src":"57:78:22","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","nameLocation":"-1:-1:-1","scope":10048,"sourceUnit":11452,"symbolAliases":[],"unitAlias":""},{"id":9964,"nodeType":"ImportDirective","src":"136:75:22","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":10048,"sourceUnit":10653,"symbolAliases":[],"unitAlias":""},{"id":9965,"nodeType":"ImportDirective","src":"212:77:22","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":10048,"sourceUnit":10835,"symbolAliases":[],"unitAlias":""},{"id":9966,"nodeType":"ImportDirective","src":"290:75:22","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":10048,"sourceUnit":10385,"symbolAliases":[],"unitAlias":""},{"id":10047,"nodeType":"ContractDefinition","src":"436:1204:22","nodes":[{"id":9999,"nodeType":"FunctionDefinition","src":"648:200:22","nodes":[],"body":{"id":9998,"nodeType":"Block","src":"733:115:22","nodes":[],"statements":[{"expression":{"arguments":[{"id":9986,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9978,"src":"756:5:22","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":9987,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9980,"src":"763:7:22","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":9985,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10902,"src":"743:12:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":9988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"743:28:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9989,"nodeType":"ExpressionStatement","src":"743:28:22"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9990,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10706,"src":"781:22:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":9991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"781:24:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9992,"nodeType":"ExpressionStatement","src":"781:24:22"},{"expression":{"arguments":[{"expression":{"id":9994,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"830:3:22","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"834:6:22","memberName":"sender","nodeType":"MemberAccess","src":"830:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9993,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10244,"src":"815:14:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":9996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"815:26:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9997,"nodeType":"ExpressionStatement","src":"815:26:22"}]},"documentation":{"id":9976,"nodeType":"StructuredDocumentation","src":"533:110:22","text":" @notice 初始化合约\n @param _name 代币名称\n @param _symbol 代币符号"},"functionSelector":"4cd88b76","implemented":true,"kind":"function","modifiers":[{"id":9983,"kind":"modifierInvocation","modifierName":{"id":9982,"name":"initializer","nameLocations":["721:11:22"],"nodeType":"IdentifierPath","referencedDeclaration":10492,"src":"721:11:22"},"nodeType":"ModifierInvocation","src":"721:11:22"}],"name":"initialize","nameLocation":"657:10:22","parameters":{"id":9981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9978,"mutability":"mutable","name":"_name","nameLocation":"682:5:22","nodeType":"VariableDeclaration","scope":9999,"src":"668:19:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9977,"name":"string","nodeType":"ElementaryTypeName","src":"668:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9980,"mutability":"mutable","name":"_symbol","nameLocation":"703:7:22","nodeType":"VariableDeclaration","scope":9999,"src":"689:21:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9979,"name":"string","nodeType":"ElementaryTypeName","src":"689:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"667:44:22"},"returnParameters":{"id":9984,"nodeType":"ParameterList","parameters":[],"src":"733:0:22"},"scope":10047,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":10009,"nodeType":"FunctionDefinition","src":"979:84:22","nodes":[],"body":{"id":10008,"nodeType":"Block","src":"1061:2:22","nodes":[],"statements":[]},"baseFunctions":[10788],"documentation":{"id":10000,"nodeType":"StructuredDocumentation","src":"858:116:22","text":" @notice 授权升级仅owner可调用\n @param newImplementation 新实现合约地址"},"implemented":true,"kind":"function","modifiers":[{"id":10006,"kind":"modifierInvocation","modifierName":{"id":10005,"name":"onlyOwner","nameLocations":["1051:9:22"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"1051:9:22"},"nodeType":"ModifierInvocation","src":"1051:9:22"}],"name":"_authorizeUpgrade","nameLocation":"988:17:22","overrides":{"id":10004,"nodeType":"OverrideSpecifier","overrides":[],"src":"1042:8:22"},"parameters":{"id":10003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10002,"mutability":"mutable","name":"newImplementation","nameLocation":"1014:17:22","nodeType":"VariableDeclaration","scope":10009,"src":"1006:25:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10001,"name":"address","nodeType":"ElementaryTypeName","src":"1006:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1005:27:22"},"returnParameters":{"id":10007,"nodeType":"ParameterList","parameters":[],"src":"1061:0:22"},"scope":10047,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":10025,"nodeType":"FunctionDefinition","src":"1183:99:22","nodes":[],"body":{"id":10024,"nodeType":"Block","src":"1246:36:22","nodes":[],"statements":[{"expression":{"arguments":[{"id":10020,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10012,"src":"1262:3:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10021,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10014,"src":"1267:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10019,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"1256:5:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":10022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1256:19:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10023,"nodeType":"ExpressionStatement","src":"1256:19:22"}]},"documentation":{"id":10010,"nodeType":"StructuredDocumentation","src":"1073:105:22","text":" @notice 铸造代币\n @param _to 接收地址\n @param _amount 铸造数量"},"functionSelector":"40c10f19","implemented":true,"kind":"function","modifiers":[{"id":10017,"kind":"modifierInvocation","modifierName":{"id":10016,"name":"onlyOwner","nameLocations":["1236:9:22"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"1236:9:22"},"nodeType":"ModifierInvocation","src":"1236:9:22"}],"name":"mint","nameLocation":"1192:4:22","parameters":{"id":10015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10012,"mutability":"mutable","name":"_to","nameLocation":"1205:3:22","nodeType":"VariableDeclaration","scope":10025,"src":"1197:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10011,"name":"address","nodeType":"ElementaryTypeName","src":"1197:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10014,"mutability":"mutable","name":"_amount","nameLocation":"1218:7:22","nodeType":"VariableDeclaration","scope":10025,"src":"1210:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10013,"name":"uint256","nodeType":"ElementaryTypeName","src":"1210:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1196:30:22"},"returnParameters":{"id":10018,"nodeType":"ParameterList","parameters":[],"src":"1246:0:22"},"scope":10047,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":10041,"nodeType":"FunctionDefinition","src":"1404:103:22","nodes":[],"body":{"id":10040,"nodeType":"Block","src":"1469:38:22","nodes":[],"statements":[{"expression":{"arguments":[{"id":10036,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10028,"src":"1485:5:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10037,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10030,"src":"1492:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10035,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11316,"src":"1479:5:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":10038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1479:21:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10039,"nodeType":"ExpressionStatement","src":"1479:21:22"}]},"documentation":{"id":10026,"nodeType":"StructuredDocumentation","src":"1292:107:22","text":" @notice 销毁代币\n @param _from 销毁地址\n @param _amount 销毁数量"},"functionSelector":"9dc29fac","implemented":true,"kind":"function","modifiers":[{"id":10033,"kind":"modifierInvocation","modifierName":{"id":10032,"name":"onlyOwner","nameLocations":["1459:9:22"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"1459:9:22"},"nodeType":"ModifierInvocation","src":"1459:9:22"}],"name":"burn","nameLocation":"1413:4:22","parameters":{"id":10031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10028,"mutability":"mutable","name":"_from","nameLocation":"1426:5:22","nodeType":"VariableDeclaration","scope":10041,"src":"1418:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10027,"name":"address","nodeType":"ElementaryTypeName","src":"1418:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10030,"mutability":"mutable","name":"_amount","nameLocation":"1441:7:22","nodeType":"VariableDeclaration","scope":10041,"src":"1433:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10029,"name":"uint256","nodeType":"ElementaryTypeName","src":"1433:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1417:32:22"},"returnParameters":{"id":10034,"nodeType":"ParameterList","parameters":[],"src":"1469:0:22"},"scope":10047,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":10046,"nodeType":"VariableDeclaration","src":"1612:25:22","nodes":[],"constant":false,"documentation":{"id":10042,"nodeType":"StructuredDocumentation","src":"1517:90:22","text":" @dev 预留存储空间,用于未来升级时添加新的状态变量"},"mutability":"mutable","name":"__gap","nameLocation":"1632:5:22","scope":10047,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":10043,"name":"uint256","nodeType":"ElementaryTypeName","src":"1612:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10045,"length":{"hexValue":"3530","id":10044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1620:2:22","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"1612:11:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":9968,"name":"Initializable","nameLocations":["453:13:22"],"nodeType":"IdentifierPath","referencedDeclaration":10652,"src":"453:13:22"},"id":9969,"nodeType":"InheritanceSpecifier","src":"453:13:22"},{"baseName":{"id":9970,"name":"ERC20Upgradeable","nameLocations":["468:16:22"],"nodeType":"IdentifierPath","referencedDeclaration":11451,"src":"468:16:22"},"id":9971,"nodeType":"InheritanceSpecifier","src":"468:16:22"},{"baseName":{"id":9972,"name":"UUPSUpgradeable","nameLocations":["486:15:22"],"nodeType":"IdentifierPath","referencedDeclaration":10834,"src":"486:15:22"},"id":9973,"nodeType":"InheritanceSpecifier","src":"486:15:22"},{"baseName":{"id":9974,"name":"OwnableUpgradeable","nameLocations":["503:18:22"],"nodeType":"IdentifierPath","referencedDeclaration":10384,"src":"503:18:22"},"id":9975,"nodeType":"InheritanceSpecifier","src":"503:18:22"}],"canonicalName":"WUSD","contractDependencies":[],"contractKind":"contract","documentation":{"id":9967,"nodeType":"StructuredDocumentation","src":"367:68:22","text":" @title WUSD\n @notice Wrapped USD - 简单的ERC20代币"},"fullyImplemented":true,"linearizedBaseContracts":[10047,10384,10834,12055,11451,12097,12674,12648,11497,10652],"name":"WUSD","nameLocation":"445:4:22","scope":10048,"usedErrors":[10220,10225,10401,10404,10679,10684,12067,12072,12077,12086,12091,12096,12250,12263,13148,13441],"usedEvents":[10231,10409,12028,12582,12591]}],"license":"MIT"}},"contracts/ytLp/tokens/YTLPToken.sol":{"id":23,"ast":{"absolutePath":"contracts/ytLp/tokens/YTLPToken.sol","id":10190,"exportedSymbols":{"ContextUpgradeable":[11497],"ERC1967Utils":[12524],"ERC20Upgradeable":[11451],"IERC1822Proxiable":[12055],"IERC20":[12648],"IERC20Errors":[12097],"IERC20Metadata":[12674],"Initializable":[10652],"OwnableUpgradeable":[10384],"UUPSUpgradeable":[10834],"YTLPToken":[10189]},"nodeType":"SourceUnit","src":"32:2312:23","nodes":[{"id":10049,"nodeType":"PragmaDirective","src":"32:23:23","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":10050,"nodeType":"ImportDirective","src":"57:78:23","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","nameLocation":"-1:-1:-1","scope":10190,"sourceUnit":11452,"symbolAliases":[],"unitAlias":""},{"id":10051,"nodeType":"ImportDirective","src":"136:75:23","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":10190,"sourceUnit":10385,"symbolAliases":[],"unitAlias":""},{"id":10052,"nodeType":"ImportDirective","src":"212:75:23","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":10190,"sourceUnit":10653,"symbolAliases":[],"unitAlias":""},{"id":10053,"nodeType":"ImportDirective","src":"288:77:23","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":10190,"sourceUnit":10835,"symbolAliases":[],"unitAlias":""},{"id":10189,"nodeType":"ContractDefinition","src":"543:1799:23","nodes":[{"id":10064,"nodeType":"ErrorDefinition","src":"641:18:23","nodes":[],"errorSelector":"f8d2906c","name":"NotMinter","nameLocation":"647:9:23","parameters":{"id":10063,"nodeType":"ParameterList","parameters":[],"src":"656:2:23"}},{"id":10066,"nodeType":"ErrorDefinition","src":"664:22:23","nodes":[],"errorSelector":"d8d5894f","name":"InvalidMinter","nameLocation":"670:13:23","parameters":{"id":10065,"nodeType":"ParameterList","parameters":[],"src":"683:2:23"}},{"id":10070,"nodeType":"VariableDeclaration","src":"696:40:23","nodes":[],"constant":false,"functionSelector":"aa271e1a","mutability":"mutable","name":"isMinter","nameLocation":"728:8:23","scope":10189,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":10069,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":10067,"name":"address","nodeType":"ElementaryTypeName","src":"704:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"696:24:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":10068,"name":"bool","nodeType":"ElementaryTypeName","src":"715:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":10076,"nodeType":"EventDefinition","src":"747:55:23","nodes":[],"anonymous":false,"eventSelector":"583b0aa0e528532caf4b907c11d7a8158a122fe2a6fb80cd9b09776ebea8d92d","name":"MinterSet","nameLocation":"753:9:23","parameters":{"id":10075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10072,"indexed":true,"mutability":"mutable","name":"minter","nameLocation":"779:6:23","nodeType":"VariableDeclaration","scope":10076,"src":"763:22:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10071,"name":"address","nodeType":"ElementaryTypeName","src":"763:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10074,"indexed":false,"mutability":"mutable","name":"isActive","nameLocation":"792:8:23","nodeType":"VariableDeclaration","scope":10076,"src":"787:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10073,"name":"bool","nodeType":"ElementaryTypeName","src":"787:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"762:39:23"}},{"id":10096,"nodeType":"FunctionDefinition","src":"859:175:23","nodes":[],"body":{"id":10095,"nodeType":"Block","src":"902:132:23","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"5954204c69717569646974792050726f7669646572","id":10083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"925:23:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_62a70d99e095b0ae9e47514d1376a42202b0dcce563b4e7a0f3a078c088e502f","typeString":"literal_string \"YT Liquidity Provider\""},"value":"YT Liquidity Provider"},{"hexValue":"79744c50","id":10084,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"950:6:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_218dc28eaeebd66f328e9f45bf6ecbe72e36e2c06beead603ee33aded88b2364","typeString":"literal_string \"ytLP\""},"value":"ytLP"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_62a70d99e095b0ae9e47514d1376a42202b0dcce563b4e7a0f3a078c088e502f","typeString":"literal_string \"YT Liquidity Provider\""},{"typeIdentifier":"t_stringliteral_218dc28eaeebd66f328e9f45bf6ecbe72e36e2c06beead603ee33aded88b2364","typeString":"literal_string \"ytLP\""}],"id":10082,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10902,"src":"912:12:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":10085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"912:45:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10086,"nodeType":"ExpressionStatement","src":"912:45:23"},{"expression":{"arguments":[{"expression":{"id":10088,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"982:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"986:6:23","memberName":"sender","nodeType":"MemberAccess","src":"982:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10087,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10244,"src":"967:14:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"967:26:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10091,"nodeType":"ExpressionStatement","src":"967:26:23"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10092,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10706,"src":"1003:22:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":10093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1003:24:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10094,"nodeType":"ExpressionStatement","src":"1003:24:23"}]},"documentation":{"id":10077,"nodeType":"StructuredDocumentation","src":"812:42:23","text":" @notice 初始化合约"},"functionSelector":"8129fc1c","implemented":true,"kind":"function","modifiers":[{"id":10080,"kind":"modifierInvocation","modifierName":{"id":10079,"name":"initializer","nameLocations":["890:11:23"],"nodeType":"IdentifierPath","referencedDeclaration":10492,"src":"890:11:23"},"nodeType":"ModifierInvocation","src":"890:11:23"}],"name":"initialize","nameLocation":"868:10:23","parameters":{"id":10078,"nodeType":"ParameterList","parameters":[],"src":"878:2:23"},"returnParameters":{"id":10081,"nodeType":"ParameterList","parameters":[],"src":"902:0:23"},"scope":10189,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":10106,"nodeType":"FunctionDefinition","src":"1165:84:23","nodes":[],"body":{"id":10105,"nodeType":"Block","src":"1247:2:23","nodes":[],"statements":[]},"baseFunctions":[10788],"documentation":{"id":10097,"nodeType":"StructuredDocumentation","src":"1044:116:23","text":" @notice 授权升级仅owner可调用\n @param newImplementation 新实现合约地址"},"implemented":true,"kind":"function","modifiers":[{"id":10103,"kind":"modifierInvocation","modifierName":{"id":10102,"name":"onlyOwner","nameLocations":["1237:9:23"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"1237:9:23"},"nodeType":"ModifierInvocation","src":"1237:9:23"}],"name":"_authorizeUpgrade","nameLocation":"1174:17:23","overrides":{"id":10101,"nodeType":"OverrideSpecifier","overrides":[],"src":"1228:8:23"},"parameters":{"id":10100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10099,"mutability":"mutable","name":"newImplementation","nameLocation":"1200:17:23","nodeType":"VariableDeclaration","scope":10106,"src":"1192:25:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10098,"name":"address","nodeType":"ElementaryTypeName","src":"1192:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1191:27:23"},"returnParameters":{"id":10104,"nodeType":"ParameterList","parameters":[],"src":"1247:0:23"},"scope":10189,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":10119,"nodeType":"ModifierDefinition","src":"1259:95:23","nodes":[],"body":{"id":10118,"nodeType":"Block","src":"1281:73:23","nodes":[],"statements":[{"condition":{"id":10112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1295:21:23","subExpression":{"baseExpression":{"id":10108,"name":"isMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10070,"src":"1296:8:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":10111,"indexExpression":{"expression":{"id":10109,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1305:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1309:6:23","memberName":"sender","nodeType":"MemberAccess","src":"1305:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1296:20:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10116,"nodeType":"IfStatement","src":"1291:45:23","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10113,"name":"NotMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10064,"src":"1325:9:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1325:11:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10115,"nodeType":"RevertStatement","src":"1318:18:23"}},{"id":10117,"nodeType":"PlaceholderStatement","src":"1346:1:23"}]},"name":"onlyMinter","nameLocation":"1268:10:23","parameters":{"id":10107,"nodeType":"ParameterList","parameters":[],"src":"1278:2:23"},"virtual":false,"visibility":"internal"},{"id":10151,"nodeType":"FunctionDefinition","src":"1489:220:23","nodes":[],"body":{"id":10150,"nodeType":"Block","src":"1560:149:23","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10129,"name":"_minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10122,"src":"1574:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1593:1:23","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":10131,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1585:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10130,"name":"address","nodeType":"ElementaryTypeName","src":"1585:7:23","typeDescriptions":{}}},"id":10133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1585:10:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1574:21:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10138,"nodeType":"IfStatement","src":"1570:49:23","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10135,"name":"InvalidMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10066,"src":"1604:13:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1604:15:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10137,"nodeType":"RevertStatement","src":"1597:22:23"}},{"expression":{"id":10143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10139,"name":"isMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10070,"src":"1629:8:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":10141,"indexExpression":{"id":10140,"name":"_minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10122,"src":"1638:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1629:17:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10142,"name":"_isActive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10124,"src":"1649:9:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1629:29:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10144,"nodeType":"ExpressionStatement","src":"1629:29:23"},{"eventCall":{"arguments":[{"id":10146,"name":"_minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10122,"src":"1683:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10147,"name":"_isActive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10124,"src":"1692:9:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":10145,"name":"MinterSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10076,"src":"1673:9:23","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":10148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1673:29:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10149,"nodeType":"EmitStatement","src":"1668:34:23"}]},"documentation":{"id":10120,"nodeType":"StructuredDocumentation","src":"1364:120:23","text":" @notice 设置铸造权限\n @param _minter 铸造者地址\n @param _isActive 是否激活"},"functionSelector":"cf456ae7","implemented":true,"kind":"function","modifiers":[{"id":10127,"kind":"modifierInvocation","modifierName":{"id":10126,"name":"onlyOwner","nameLocations":["1550:9:23"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"1550:9:23"},"nodeType":"ModifierInvocation","src":"1550:9:23"}],"name":"setMinter","nameLocation":"1498:9:23","parameters":{"id":10125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10122,"mutability":"mutable","name":"_minter","nameLocation":"1516:7:23","nodeType":"VariableDeclaration","scope":10151,"src":"1508:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10121,"name":"address","nodeType":"ElementaryTypeName","src":"1508:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10124,"mutability":"mutable","name":"_isActive","nameLocation":"1530:9:23","nodeType":"VariableDeclaration","scope":10151,"src":"1525:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10123,"name":"bool","nodeType":"ElementaryTypeName","src":"1525:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1507:33:23"},"returnParameters":{"id":10128,"nodeType":"ParameterList","parameters":[],"src":"1560:0:23"},"scope":10189,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":10167,"nodeType":"FunctionDefinition","src":"1833:100:23","nodes":[],"body":{"id":10166,"nodeType":"Block","src":"1897:36:23","nodes":[],"statements":[{"expression":{"arguments":[{"id":10162,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10154,"src":"1913:3:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10163,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10156,"src":"1918:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10161,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11283,"src":"1907:5:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":10164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1907:19:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10165,"nodeType":"ExpressionStatement","src":"1907:19:23"}]},"documentation":{"id":10152,"nodeType":"StructuredDocumentation","src":"1719:109:23","text":" @notice 铸造ytLP代币\n @param _to 接收地址\n @param _amount 铸造数量"},"functionSelector":"40c10f19","implemented":true,"kind":"function","modifiers":[{"id":10159,"kind":"modifierInvocation","modifierName":{"id":10158,"name":"onlyMinter","nameLocations":["1886:10:23"],"nodeType":"IdentifierPath","referencedDeclaration":10119,"src":"1886:10:23"},"nodeType":"ModifierInvocation","src":"1886:10:23"}],"name":"mint","nameLocation":"1842:4:23","parameters":{"id":10157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10154,"mutability":"mutable","name":"_to","nameLocation":"1855:3:23","nodeType":"VariableDeclaration","scope":10167,"src":"1847:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10153,"name":"address","nodeType":"ElementaryTypeName","src":"1847:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10156,"mutability":"mutable","name":"_amount","nameLocation":"1868:7:23","nodeType":"VariableDeclaration","scope":10167,"src":"1860:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10155,"name":"uint256","nodeType":"ElementaryTypeName","src":"1860:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1846:30:23"},"returnParameters":{"id":10160,"nodeType":"ParameterList","parameters":[],"src":"1897:0:23"},"scope":10189,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":10183,"nodeType":"FunctionDefinition","src":"2059:104:23","nodes":[],"body":{"id":10182,"nodeType":"Block","src":"2125:38:23","nodes":[],"statements":[{"expression":{"arguments":[{"id":10178,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10170,"src":"2141:5:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10179,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10172,"src":"2148:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10177,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11316,"src":"2135:5:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":10180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2135:21:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10181,"nodeType":"ExpressionStatement","src":"2135:21:23"}]},"documentation":{"id":10168,"nodeType":"StructuredDocumentation","src":"1943:111:23","text":" @notice 销毁ytLP代币\n @param _from 销毁地址\n @param _amount 销毁数量"},"functionSelector":"9dc29fac","implemented":true,"kind":"function","modifiers":[{"id":10175,"kind":"modifierInvocation","modifierName":{"id":10174,"name":"onlyMinter","nameLocations":["2114:10:23"],"nodeType":"IdentifierPath","referencedDeclaration":10119,"src":"2114:10:23"},"nodeType":"ModifierInvocation","src":"2114:10:23"}],"name":"burn","nameLocation":"2068:4:23","parameters":{"id":10173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10170,"mutability":"mutable","name":"_from","nameLocation":"2081:5:23","nodeType":"VariableDeclaration","scope":10183,"src":"2073:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10169,"name":"address","nodeType":"ElementaryTypeName","src":"2073:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10172,"mutability":"mutable","name":"_amount","nameLocation":"2096:7:23","nodeType":"VariableDeclaration","scope":10183,"src":"2088:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10171,"name":"uint256","nodeType":"ElementaryTypeName","src":"2088:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2072:32:23"},"returnParameters":{"id":10176,"nodeType":"ParameterList","parameters":[],"src":"2125:0:23"},"scope":10189,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":10188,"nodeType":"VariableDeclaration","src":"2314:25:23","nodes":[],"constant":false,"documentation":{"id":10184,"nodeType":"StructuredDocumentation","src":"2173:136:23","text":" @dev 预留存储空间,用于未来升级时添加新的状态变量\n 50个slot = 50 * 32 bytes = 1600 bytes"},"mutability":"mutable","name":"__gap","nameLocation":"2334:5:23","scope":10189,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage","typeString":"uint256[50]"},"typeName":{"baseType":{"id":10185,"name":"uint256","nodeType":"ElementaryTypeName","src":"2314:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10187,"length":{"hexValue":"3530","id":10186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2322:2:23","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"2314:11:23","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":10055,"name":"Initializable","nameLocations":["565:13:23"],"nodeType":"IdentifierPath","referencedDeclaration":10652,"src":"565:13:23"},"id":10056,"nodeType":"InheritanceSpecifier","src":"565:13:23"},{"baseName":{"id":10057,"name":"ERC20Upgradeable","nameLocations":["580:16:23"],"nodeType":"IdentifierPath","referencedDeclaration":11451,"src":"580:16:23"},"id":10058,"nodeType":"InheritanceSpecifier","src":"580:16:23"},{"baseName":{"id":10059,"name":"OwnableUpgradeable","nameLocations":["598:18:23"],"nodeType":"IdentifierPath","referencedDeclaration":10384,"src":"598:18:23"},"id":10060,"nodeType":"InheritanceSpecifier","src":"598:18:23"},{"baseName":{"id":10061,"name":"UUPSUpgradeable","nameLocations":["618:15:23"],"nodeType":"IdentifierPath","referencedDeclaration":10834,"src":"618:15:23"},"id":10062,"nodeType":"InheritanceSpecifier","src":"618:15:23"}],"canonicalName":"YTLPToken","contractDependencies":[],"contractKind":"contract","documentation":{"id":10054,"nodeType":"StructuredDocumentation","src":"367:175:23","text":" @title YTLPToken\n @notice LP代币代表用户在池子中的份额\n @dev 只有授权的MinterYTPoolManager可以铸造和销毁UUPS可升级合约"},"fullyImplemented":true,"linearizedBaseContracts":[10189,10834,12055,10384,11451,12097,12674,12648,11497,10652],"name":"YTLPToken","nameLocation":"552:9:23","scope":10190,"usedErrors":[10064,10066,10220,10225,10401,10404,10679,10684,12067,12072,12077,12086,12091,12096,12250,12263,13148,13441],"usedEvents":[10076,10231,10409,12028,12582,12591]}],"license":"MIT"}},"node_modules/@openzeppelin/contracts/access/Ownable.sol":{"id":31,"ast":{"absolutePath":"node_modules/@openzeppelin/contracts/access/Ownable.sol","id":11935,"exportedSymbols":{"Context":[13428],"Ownable":[11934]},"nodeType":"SourceUnit","src":"102:3000:31","nodes":[{"id":11788,"nodeType":"PragmaDirective","src":"102:24:31","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":11790,"nodeType":"ImportDirective","src":"128:45:31","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/utils/Context.sol","file":"../utils/Context.sol","nameLocation":"-1:-1:-1","scope":11935,"sourceUnit":13429,"symbolAliases":[{"foreign":{"id":11789,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13428,"src":"136:7:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":11934,"nodeType":"ContractDefinition","src":"663:2438:31","nodes":[{"id":11795,"nodeType":"VariableDeclaration","src":"706:22:31","nodes":[],"constant":false,"mutability":"mutable","name":"_owner","nameLocation":"722:6:31","scope":11934,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11794,"name":"address","nodeType":"ElementaryTypeName","src":"706:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":11800,"nodeType":"ErrorDefinition","src":"825:50:31","nodes":[],"documentation":{"id":11796,"nodeType":"StructuredDocumentation","src":"735:85:31","text":" @dev The caller account is not authorized to perform an operation."},"errorSelector":"118cdaa7","name":"OwnableUnauthorizedAccount","nameLocation":"831:26:31","parameters":{"id":11799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11798,"mutability":"mutable","name":"account","nameLocation":"866:7:31","nodeType":"VariableDeclaration","scope":11800,"src":"858:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11797,"name":"address","nodeType":"ElementaryTypeName","src":"858:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"857:17:31"}},{"id":11805,"nodeType":"ErrorDefinition","src":"968:41:31","nodes":[],"documentation":{"id":11801,"nodeType":"StructuredDocumentation","src":"881:82:31","text":" @dev The owner is not a valid owner account. (eg. `address(0)`)"},"errorSelector":"1e4fbdf7","name":"OwnableInvalidOwner","nameLocation":"974:19:31","parameters":{"id":11804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11803,"mutability":"mutable","name":"owner","nameLocation":"1002:5:31","nodeType":"VariableDeclaration","scope":11805,"src":"994:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11802,"name":"address","nodeType":"ElementaryTypeName","src":"994:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"993:15:31"}},{"id":11811,"nodeType":"EventDefinition","src":"1015:84:31","nodes":[],"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","name":"OwnershipTransferred","nameLocation":"1021:20:31","parameters":{"id":11810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11807,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"1058:13:31","nodeType":"VariableDeclaration","scope":11811,"src":"1042:29:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11806,"name":"address","nodeType":"ElementaryTypeName","src":"1042:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11809,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"1089:8:31","nodeType":"VariableDeclaration","scope":11811,"src":"1073:24:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11808,"name":"address","nodeType":"ElementaryTypeName","src":"1073:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1041:57:31"}},{"id":11837,"nodeType":"FunctionDefinition","src":"1225:187:31","nodes":[],"body":{"id":11836,"nodeType":"Block","src":"1259:153:31","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11817,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11814,"src":"1273:12:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":11820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1297:1:31","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":11819,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1289:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11818,"name":"address","nodeType":"ElementaryTypeName","src":"1289:7:31","typeDescriptions":{}}},"id":11821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1289:10:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1273:26:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11831,"nodeType":"IfStatement","src":"1269:95:31","trueBody":{"id":11830,"nodeType":"Block","src":"1301:63:31","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":11826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1350:1:31","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":11825,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1342:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11824,"name":"address","nodeType":"ElementaryTypeName","src":"1342:7:31","typeDescriptions":{}}},"id":11827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1342:10:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11823,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11805,"src":"1322:19:31","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":11828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1322:31:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11829,"nodeType":"RevertStatement","src":"1315:38:31"}]}},{"expression":{"arguments":[{"id":11833,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11814,"src":"1392:12:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11832,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11933,"src":"1373:18:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":11834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1373:32:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11835,"nodeType":"ExpressionStatement","src":"1373:32:31"}]},"documentation":{"id":11812,"nodeType":"StructuredDocumentation","src":"1105:115:31","text":" @dev Initializes the contract setting the address provided by the deployer as the initial owner."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":11815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11814,"mutability":"mutable","name":"initialOwner","nameLocation":"1245:12:31","nodeType":"VariableDeclaration","scope":11837,"src":"1237:20:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11813,"name":"address","nodeType":"ElementaryTypeName","src":"1237:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1236:22:31"},"returnParameters":{"id":11816,"nodeType":"ParameterList","parameters":[],"src":"1259:0:31"},"scope":11934,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":11845,"nodeType":"ModifierDefinition","src":"1500:62:31","nodes":[],"body":{"id":11844,"nodeType":"Block","src":"1521:41:31","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11840,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11871,"src":"1531:11:31","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":11841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1531:13:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11842,"nodeType":"ExpressionStatement","src":"1531:13:31"},{"id":11843,"nodeType":"PlaceholderStatement","src":"1554:1:31"}]},"documentation":{"id":11838,"nodeType":"StructuredDocumentation","src":"1418:77:31","text":" @dev Throws if called by any account other than the owner."},"name":"onlyOwner","nameLocation":"1509:9:31","parameters":{"id":11839,"nodeType":"ParameterList","parameters":[],"src":"1518:2:31"},"virtual":false,"visibility":"internal"},{"id":11854,"nodeType":"FunctionDefinition","src":"1638:85:31","nodes":[],"body":{"id":11853,"nodeType":"Block","src":"1693:30:31","nodes":[],"statements":[{"expression":{"id":11851,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11795,"src":"1710:6:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":11850,"id":11852,"nodeType":"Return","src":"1703:13:31"}]},"documentation":{"id":11846,"nodeType":"StructuredDocumentation","src":"1568:65:31","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1647:5:31","parameters":{"id":11847,"nodeType":"ParameterList","parameters":[],"src":"1652:2:31"},"returnParameters":{"id":11850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11849,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11854,"src":"1684:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11848,"name":"address","nodeType":"ElementaryTypeName","src":"1684:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1683:9:31"},"scope":11934,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":11871,"nodeType":"FunctionDefinition","src":"1796:162:31","nodes":[],"body":{"id":11870,"nodeType":"Block","src":"1841:117:31","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":11858,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11854,"src":"1855:5:31","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1855:7:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":11860,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13410,"src":"1866:10:31","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1866:12:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1855:23:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11869,"nodeType":"IfStatement","src":"1851:101:31","trueBody":{"id":11868,"nodeType":"Block","src":"1880:72:31","statements":[{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":11864,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13410,"src":"1928:10:31","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1928:12:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11863,"name":"OwnableUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11800,"src":"1901:26:31","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":11866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1901:40:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11867,"nodeType":"RevertStatement","src":"1894:47:31"}]}}]},"documentation":{"id":11855,"nodeType":"StructuredDocumentation","src":"1729:62:31","text":" @dev Throws if the sender is not the owner."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"1805:11:31","parameters":{"id":11856,"nodeType":"ParameterList","parameters":[],"src":"1816:2:31"},"returnParameters":{"id":11857,"nodeType":"ParameterList","parameters":[],"src":"1841:0:31"},"scope":11934,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":11885,"nodeType":"FunctionDefinition","src":"2293:101:31","nodes":[],"body":{"id":11884,"nodeType":"Block","src":"2347:47:31","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":11880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2384:1:31","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":11879,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2376:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11878,"name":"address","nodeType":"ElementaryTypeName","src":"2376:7:31","typeDescriptions":{}}},"id":11881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2376:10:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11877,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11933,"src":"2357:18:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":11882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2357:30:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11883,"nodeType":"ExpressionStatement","src":"2357:30:31"}]},"documentation":{"id":11872,"nodeType":"StructuredDocumentation","src":"1964:324:31","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","implemented":true,"kind":"function","modifiers":[{"id":11875,"kind":"modifierInvocation","modifierName":{"id":11874,"name":"onlyOwner","nameLocations":["2337:9:31"],"nodeType":"IdentifierPath","referencedDeclaration":11845,"src":"2337:9:31"},"nodeType":"ModifierInvocation","src":"2337:9:31"}],"name":"renounceOwnership","nameLocation":"2302:17:31","parameters":{"id":11873,"nodeType":"ParameterList","parameters":[],"src":"2319:2:31"},"returnParameters":{"id":11876,"nodeType":"ParameterList","parameters":[],"src":"2347:0:31"},"scope":11934,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":11913,"nodeType":"FunctionDefinition","src":"2543:215:31","nodes":[],"body":{"id":11912,"nodeType":"Block","src":"2613:145:31","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11893,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11888,"src":"2627:8:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":11896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2647:1:31","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":11895,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2639:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11894,"name":"address","nodeType":"ElementaryTypeName","src":"2639:7:31","typeDescriptions":{}}},"id":11897,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2639:10:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2627:22:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11907,"nodeType":"IfStatement","src":"2623:91:31","trueBody":{"id":11906,"nodeType":"Block","src":"2651:63:31","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":11902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2700:1:31","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":11901,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2692:7:31","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11900,"name":"address","nodeType":"ElementaryTypeName","src":"2692:7:31","typeDescriptions":{}}},"id":11903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2692:10:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11899,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11805,"src":"2672:19:31","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":11904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2672:31:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11905,"nodeType":"RevertStatement","src":"2665:38:31"}]}},{"expression":{"arguments":[{"id":11909,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11888,"src":"2742:8:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11908,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11933,"src":"2723:18:31","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":11910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2723:28:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11911,"nodeType":"ExpressionStatement","src":"2723:28:31"}]},"documentation":{"id":11886,"nodeType":"StructuredDocumentation","src":"2400:138:31","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","implemented":true,"kind":"function","modifiers":[{"id":11891,"kind":"modifierInvocation","modifierName":{"id":11890,"name":"onlyOwner","nameLocations":["2603:9:31"],"nodeType":"IdentifierPath","referencedDeclaration":11845,"src":"2603:9:31"},"nodeType":"ModifierInvocation","src":"2603:9:31"}],"name":"transferOwnership","nameLocation":"2552:17:31","parameters":{"id":11889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11888,"mutability":"mutable","name":"newOwner","nameLocation":"2578:8:31","nodeType":"VariableDeclaration","scope":11913,"src":"2570:16:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11887,"name":"address","nodeType":"ElementaryTypeName","src":"2570:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2569:18:31"},"returnParameters":{"id":11892,"nodeType":"ParameterList","parameters":[],"src":"2613:0:31"},"scope":11934,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":11933,"nodeType":"FunctionDefinition","src":"2912:187:31","nodes":[],"body":{"id":11932,"nodeType":"Block","src":"2975:124:31","nodes":[],"statements":[{"assignments":[11920],"declarations":[{"constant":false,"id":11920,"mutability":"mutable","name":"oldOwner","nameLocation":"2993:8:31","nodeType":"VariableDeclaration","scope":11932,"src":"2985:16:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11919,"name":"address","nodeType":"ElementaryTypeName","src":"2985:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":11922,"initialValue":{"id":11921,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11795,"src":"3004:6:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2985:25:31"},{"expression":{"id":11925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11923,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11795,"src":"3020:6:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11924,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11916,"src":"3029:8:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3020:17:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11926,"nodeType":"ExpressionStatement","src":"3020:17:31"},{"eventCall":{"arguments":[{"id":11928,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11920,"src":"3073:8:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11929,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11916,"src":"3083:8:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":11927,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11811,"src":"3052:20:31","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":11930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3052:40:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11931,"nodeType":"EmitStatement","src":"3047:45:31"}]},"documentation":{"id":11914,"nodeType":"StructuredDocumentation","src":"2764:143:31","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2921:18:31","parameters":{"id":11917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11916,"mutability":"mutable","name":"newOwner","nameLocation":"2948:8:31","nodeType":"VariableDeclaration","scope":11933,"src":"2940:16:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11915,"name":"address","nodeType":"ElementaryTypeName","src":"2940:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2939:18:31"},"returnParameters":{"id":11918,"nodeType":"ParameterList","parameters":[],"src":"2975:0:31"},"scope":11934,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[{"baseName":{"id":11792,"name":"Context","nameLocations":["692:7:31"],"nodeType":"IdentifierPath","referencedDeclaration":13428,"src":"692:7:31"},"id":11793,"nodeType":"InheritanceSpecifier","src":"692:7:31"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":11791,"nodeType":"StructuredDocumentation","src":"175:487:31","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n The initial owner is set to the address provided by the deployer. This can\n later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"linearizedBaseContracts":[11934,13428],"name":"Ownable","nameLocation":"681:7:31","scope":11935,"usedErrors":[11800,11805],"usedEvents":[11811]}],"license":"MIT"}},"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol":{"id":32,"ast":{"absolutePath":"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol","id":12017,"exportedSymbols":{"IERC1363":[12016],"IERC165":[13586],"IERC20":[12648]},"nodeType":"SourceUnit","src":"107:4347:32","nodes":[{"id":11936,"nodeType":"PragmaDirective","src":"107:24:32","nodes":[],"literals":["solidity",">=","0.6",".2"]},{"id":11938,"nodeType":"ImportDirective","src":"133:36:32","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol","file":"./IERC20.sol","nameLocation":"-1:-1:-1","scope":12017,"sourceUnit":12046,"symbolAliases":[{"foreign":{"id":11937,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"141:6:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":11940,"nodeType":"ImportDirective","src":"170:38:32","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol","file":"./IERC165.sol","nameLocation":"-1:-1:-1","scope":12017,"sourceUnit":12021,"symbolAliases":[{"foreign":{"id":11939,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13586,"src":"178:7:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":12016,"nodeType":"ContractDefinition","src":"568:3885:32","nodes":[{"id":11955,"nodeType":"FunctionDefinition","src":"1523:76:32","nodes":[],"documentation":{"id":11946,"nodeType":"StructuredDocumentation","src":"1148:370:32","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"1296ee62","implemented":false,"kind":"function","modifiers":[],"name":"transferAndCall","nameLocation":"1532:15:32","parameters":{"id":11951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11948,"mutability":"mutable","name":"to","nameLocation":"1556:2:32","nodeType":"VariableDeclaration","scope":11955,"src":"1548:10:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11947,"name":"address","nodeType":"ElementaryTypeName","src":"1548:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11950,"mutability":"mutable","name":"value","nameLocation":"1568:5:32","nodeType":"VariableDeclaration","scope":11955,"src":"1560:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11949,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1547:27:32"},"returnParameters":{"id":11954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11953,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11955,"src":"1593:4:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11952,"name":"bool","nodeType":"ElementaryTypeName","src":"1593:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1592:6:32"},"scope":12016,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":11967,"nodeType":"FunctionDefinition","src":"2063:97:32","nodes":[],"documentation":{"id":11956,"nodeType":"StructuredDocumentation","src":"1605:453:32","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @param data Additional data with no specified format, sent in call to `to`.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"4000aea0","implemented":false,"kind":"function","modifiers":[],"name":"transferAndCall","nameLocation":"2072:15:32","parameters":{"id":11963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11958,"mutability":"mutable","name":"to","nameLocation":"2096:2:32","nodeType":"VariableDeclaration","scope":11967,"src":"2088:10:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11957,"name":"address","nodeType":"ElementaryTypeName","src":"2088:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11960,"mutability":"mutable","name":"value","nameLocation":"2108:5:32","nodeType":"VariableDeclaration","scope":11967,"src":"2100:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11959,"name":"uint256","nodeType":"ElementaryTypeName","src":"2100:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11962,"mutability":"mutable","name":"data","nameLocation":"2130:4:32","nodeType":"VariableDeclaration","scope":11967,"src":"2115:19:32","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":11961,"name":"bytes","nodeType":"ElementaryTypeName","src":"2115:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2087:48:32"},"returnParameters":{"id":11966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11965,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11967,"src":"2154:4:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11964,"name":"bool","nodeType":"ElementaryTypeName","src":"2154:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2153:6:32"},"scope":12016,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":11979,"nodeType":"FunctionDefinition","src":"2624:94:32","nodes":[],"documentation":{"id":11968,"nodeType":"StructuredDocumentation","src":"2166:453:32","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param from The address which you want to send tokens from.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"d8fbe994","implemented":false,"kind":"function","modifiers":[],"name":"transferFromAndCall","nameLocation":"2633:19:32","parameters":{"id":11975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11970,"mutability":"mutable","name":"from","nameLocation":"2661:4:32","nodeType":"VariableDeclaration","scope":11979,"src":"2653:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11969,"name":"address","nodeType":"ElementaryTypeName","src":"2653:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11972,"mutability":"mutable","name":"to","nameLocation":"2675:2:32","nodeType":"VariableDeclaration","scope":11979,"src":"2667:10:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11971,"name":"address","nodeType":"ElementaryTypeName","src":"2667:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11974,"mutability":"mutable","name":"value","nameLocation":"2687:5:32","nodeType":"VariableDeclaration","scope":11979,"src":"2679:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11973,"name":"uint256","nodeType":"ElementaryTypeName","src":"2679:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2652:41:32"},"returnParameters":{"id":11978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11977,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11979,"src":"2712:4:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11976,"name":"bool","nodeType":"ElementaryTypeName","src":"2712:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2711:6:32"},"scope":12016,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":11993,"nodeType":"FunctionDefinition","src":"3265:115:32","nodes":[],"documentation":{"id":11980,"nodeType":"StructuredDocumentation","src":"2724:536:32","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param from The address which you want to send tokens from.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @param data Additional data with no specified format, sent in call to `to`.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"c1d34b89","implemented":false,"kind":"function","modifiers":[],"name":"transferFromAndCall","nameLocation":"3274:19:32","parameters":{"id":11989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11982,"mutability":"mutable","name":"from","nameLocation":"3302:4:32","nodeType":"VariableDeclaration","scope":11993,"src":"3294:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11981,"name":"address","nodeType":"ElementaryTypeName","src":"3294:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11984,"mutability":"mutable","name":"to","nameLocation":"3316:2:32","nodeType":"VariableDeclaration","scope":11993,"src":"3308:10:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11983,"name":"address","nodeType":"ElementaryTypeName","src":"3308:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11986,"mutability":"mutable","name":"value","nameLocation":"3328:5:32","nodeType":"VariableDeclaration","scope":11993,"src":"3320:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11985,"name":"uint256","nodeType":"ElementaryTypeName","src":"3320:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11988,"mutability":"mutable","name":"data","nameLocation":"3350:4:32","nodeType":"VariableDeclaration","scope":11993,"src":"3335:19:32","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":11987,"name":"bytes","nodeType":"ElementaryTypeName","src":"3335:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3293:62:32"},"returnParameters":{"id":11992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11991,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11993,"src":"3374:4:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11990,"name":"bool","nodeType":"ElementaryTypeName","src":"3374:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3373:6:32"},"scope":12016,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":12003,"nodeType":"FunctionDefinition","src":"3781:80:32","nodes":[],"documentation":{"id":11994,"nodeType":"StructuredDocumentation","src":"3386:390:32","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n @param spender The address which will spend the funds.\n @param value The amount of tokens to be spent.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"3177029f","implemented":false,"kind":"function","modifiers":[],"name":"approveAndCall","nameLocation":"3790:14:32","parameters":{"id":11999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11996,"mutability":"mutable","name":"spender","nameLocation":"3813:7:32","nodeType":"VariableDeclaration","scope":12003,"src":"3805:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11995,"name":"address","nodeType":"ElementaryTypeName","src":"3805:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11998,"mutability":"mutable","name":"value","nameLocation":"3830:5:32","nodeType":"VariableDeclaration","scope":12003,"src":"3822:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11997,"name":"uint256","nodeType":"ElementaryTypeName","src":"3822:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3804:32:32"},"returnParameters":{"id":12002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12001,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12003,"src":"3855:4:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12000,"name":"bool","nodeType":"ElementaryTypeName","src":"3855:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3854:6:32"},"scope":12016,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":12015,"nodeType":"FunctionDefinition","src":"4350:101:32","nodes":[],"documentation":{"id":12004,"nodeType":"StructuredDocumentation","src":"3867:478:32","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n @param spender The address which will spend the funds.\n @param value The amount of tokens to be spent.\n @param data Additional data with no specified format, sent in call to `spender`.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"cae9ca51","implemented":false,"kind":"function","modifiers":[],"name":"approveAndCall","nameLocation":"4359:14:32","parameters":{"id":12011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12006,"mutability":"mutable","name":"spender","nameLocation":"4382:7:32","nodeType":"VariableDeclaration","scope":12015,"src":"4374:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12005,"name":"address","nodeType":"ElementaryTypeName","src":"4374:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12008,"mutability":"mutable","name":"value","nameLocation":"4399:5:32","nodeType":"VariableDeclaration","scope":12015,"src":"4391:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12007,"name":"uint256","nodeType":"ElementaryTypeName","src":"4391:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12010,"mutability":"mutable","name":"data","nameLocation":"4421:4:32","nodeType":"VariableDeclaration","scope":12015,"src":"4406:19:32","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":12009,"name":"bytes","nodeType":"ElementaryTypeName","src":"4406:5:32","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4373:53:32"},"returnParameters":{"id":12014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12013,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12015,"src":"4445:4:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12012,"name":"bool","nodeType":"ElementaryTypeName","src":"4445:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4444:6:32"},"scope":12016,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":11942,"name":"IERC20","nameLocations":["590:6:32"],"nodeType":"IdentifierPath","referencedDeclaration":12648,"src":"590:6:32"},"id":11943,"nodeType":"InheritanceSpecifier","src":"590:6:32"},{"baseName":{"id":11944,"name":"IERC165","nameLocations":["598:7:32"],"nodeType":"IdentifierPath","referencedDeclaration":13586,"src":"598:7:32"},"id":11945,"nodeType":"InheritanceSpecifier","src":"598:7:32"}],"canonicalName":"IERC1363","contractDependencies":[],"contractKind":"interface","documentation":{"id":11941,"nodeType":"StructuredDocumentation","src":"210:357:32","text":" @title IERC1363\n @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\n Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\n after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction."},"fullyImplemented":false,"linearizedBaseContracts":[12016,13586,12648],"name":"IERC1363","nameLocation":"578:8:32","scope":12017,"usedErrors":[],"usedEvents":[12582,12591]}],"license":"MIT"}},"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol":{"id":33,"ast":{"absolutePath":"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol","id":12021,"exportedSymbols":{"IERC165":[13586]},"nodeType":"SourceUnit","src":"106:87:33","nodes":[{"id":12018,"nodeType":"PragmaDirective","src":"106:25:33","nodes":[],"literals":["solidity",">=","0.4",".16"]},{"id":12020,"nodeType":"ImportDirective","src":"133:59:33","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../utils/introspection/IERC165.sol","nameLocation":"-1:-1:-1","scope":12021,"sourceUnit":13587,"symbolAliases":[{"foreign":{"id":12019,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13586,"src":"141:7:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""}],"license":"MIT"}},"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol":{"id":34,"ast":{"absolutePath":"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol","id":12042,"exportedSymbols":{"IERC1967":[12041]},"nodeType":"SourceUnit","src":"107:530:34","nodes":[{"id":12022,"nodeType":"PragmaDirective","src":"107:25:34","nodes":[],"literals":["solidity",">=","0.4",".11"]},{"id":12041,"nodeType":"ContractDefinition","src":"236:400:34","nodes":[{"id":12028,"nodeType":"EventDefinition","src":"334:47:34","nodes":[],"anonymous":false,"documentation":{"id":12024,"nodeType":"StructuredDocumentation","src":"261:68:34","text":" @dev Emitted when the implementation is upgraded."},"eventSelector":"bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","name":"Upgraded","nameLocation":"340:8:34","parameters":{"id":12027,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12026,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"365:14:34","nodeType":"VariableDeclaration","scope":12028,"src":"349:30:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12025,"name":"address","nodeType":"ElementaryTypeName","src":"349:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"348:32:34"}},{"id":12035,"nodeType":"EventDefinition","src":"459:60:34","nodes":[],"anonymous":false,"documentation":{"id":12029,"nodeType":"StructuredDocumentation","src":"387:67:34","text":" @dev Emitted when the admin account has changed."},"eventSelector":"7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f","name":"AdminChanged","nameLocation":"465:12:34","parameters":{"id":12034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12031,"indexed":false,"mutability":"mutable","name":"previousAdmin","nameLocation":"486:13:34","nodeType":"VariableDeclaration","scope":12035,"src":"478:21:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12030,"name":"address","nodeType":"ElementaryTypeName","src":"478:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12033,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"509:8:34","nodeType":"VariableDeclaration","scope":12035,"src":"501:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12032,"name":"address","nodeType":"ElementaryTypeName","src":"501:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"477:41:34"}},{"id":12040,"nodeType":"EventDefinition","src":"589:45:34","nodes":[],"anonymous":false,"documentation":{"id":12036,"nodeType":"StructuredDocumentation","src":"525:59:34","text":" @dev Emitted when the beacon is changed."},"eventSelector":"1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e","name":"BeaconUpgraded","nameLocation":"595:14:34","parameters":{"id":12039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12038,"indexed":true,"mutability":"mutable","name":"beacon","nameLocation":"626:6:34","nodeType":"VariableDeclaration","scope":12040,"src":"610:22:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12037,"name":"address","nodeType":"ElementaryTypeName","src":"610:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"609:24:34"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1967","contractDependencies":[],"contractKind":"interface","documentation":{"id":12023,"nodeType":"StructuredDocumentation","src":"134:101:34","text":" @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC."},"fullyImplemented":true,"linearizedBaseContracts":[12041],"name":"IERC1967","nameLocation":"246:8:34","scope":12042,"usedErrors":[],"usedEvents":[12028,12035,12040]}],"license":"MIT"}},"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol":{"id":35,"ast":{"absolutePath":"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol","id":12046,"exportedSymbols":{"IERC20":[12648]},"nodeType":"SourceUnit","src":"105:77:35","nodes":[{"id":12043,"nodeType":"PragmaDirective","src":"105:25:35","nodes":[],"literals":["solidity",">=","0.4",".16"]},{"id":12045,"nodeType":"ImportDirective","src":"132:49:35","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../token/ERC20/IERC20.sol","nameLocation":"-1:-1:-1","scope":12046,"sourceUnit":12649,"symbolAliases":[{"foreign":{"id":12044,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"140:6:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""}],"license":"MIT"}},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"id":36,"ast":{"absolutePath":"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol","id":12056,"exportedSymbols":{"IERC1822Proxiable":[12055]},"nodeType":"SourceUnit","src":"113:769:36","nodes":[{"id":12047,"nodeType":"PragmaDirective","src":"113:25:36","nodes":[],"literals":["solidity",">=","0.4",".16"]},{"id":12055,"nodeType":"ContractDefinition","src":"345:536:36","nodes":[{"id":12054,"nodeType":"FunctionDefinition","src":"822:57:36","nodes":[],"documentation":{"id":12049,"nodeType":"StructuredDocumentation","src":"379:438:36","text":" @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n address.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy."},"functionSelector":"52d1902d","implemented":false,"kind":"function","modifiers":[],"name":"proxiableUUID","nameLocation":"831:13:36","parameters":{"id":12050,"nodeType":"ParameterList","parameters":[],"src":"844:2:36"},"returnParameters":{"id":12053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12052,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12054,"src":"870:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12051,"name":"bytes32","nodeType":"ElementaryTypeName","src":"870:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"869:9:36"},"scope":12055,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1822Proxiable","contractDependencies":[],"contractKind":"interface","documentation":{"id":12048,"nodeType":"StructuredDocumentation","src":"140:204:36","text":" @dev ERC-1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n proxy whose upgrades are fully controlled by the current implementation."},"fullyImplemented":false,"linearizedBaseContracts":[12055],"name":"IERC1822Proxiable","nameLocation":"355:17:36","scope":12056,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"id":37,"ast":{"absolutePath":"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol","id":12193,"exportedSymbols":{"IERC1155Errors":[12192],"IERC20Errors":[12097],"IERC721Errors":[12145]},"nodeType":"SourceUnit","src":"112:6426:37","nodes":[{"id":12057,"nodeType":"PragmaDirective","src":"112:24:37","nodes":[],"literals":["solidity",">=","0.8",".4"]},{"id":12097,"nodeType":"ContractDefinition","src":"280:1764:37","nodes":[{"id":12067,"nodeType":"ErrorDefinition","src":"623:80:37","nodes":[],"documentation":{"id":12059,"nodeType":"StructuredDocumentation","src":"309:309:37","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","name":"ERC20InsufficientBalance","nameLocation":"629:24:37","parameters":{"id":12066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12061,"mutability":"mutable","name":"sender","nameLocation":"662:6:37","nodeType":"VariableDeclaration","scope":12067,"src":"654:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12060,"name":"address","nodeType":"ElementaryTypeName","src":"654:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12063,"mutability":"mutable","name":"balance","nameLocation":"678:7:37","nodeType":"VariableDeclaration","scope":12067,"src":"670:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12062,"name":"uint256","nodeType":"ElementaryTypeName","src":"670:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12065,"mutability":"mutable","name":"needed","nameLocation":"695:6:37","nodeType":"VariableDeclaration","scope":12067,"src":"687:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12064,"name":"uint256","nodeType":"ElementaryTypeName","src":"687:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"653:49:37"}},{"id":12072,"nodeType":"ErrorDefinition","src":"866:41:37","nodes":[],"documentation":{"id":12068,"nodeType":"StructuredDocumentation","src":"709:152:37","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","name":"ERC20InvalidSender","nameLocation":"872:18:37","parameters":{"id":12071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12070,"mutability":"mutable","name":"sender","nameLocation":"899:6:37","nodeType":"VariableDeclaration","scope":12072,"src":"891:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12069,"name":"address","nodeType":"ElementaryTypeName","src":"891:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"890:16:37"}},{"id":12077,"nodeType":"ErrorDefinition","src":"1077:45:37","nodes":[],"documentation":{"id":12073,"nodeType":"StructuredDocumentation","src":"913:159:37","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","name":"ERC20InvalidReceiver","nameLocation":"1083:20:37","parameters":{"id":12076,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12075,"mutability":"mutable","name":"receiver","nameLocation":"1112:8:37","nodeType":"VariableDeclaration","scope":12077,"src":"1104:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12074,"name":"address","nodeType":"ElementaryTypeName","src":"1104:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1103:18:37"}},{"id":12086,"nodeType":"ErrorDefinition","src":"1478:85:37","nodes":[],"documentation":{"id":12078,"nodeType":"StructuredDocumentation","src":"1128:345:37","text":" @dev Indicates a failure with the `spender`s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","name":"ERC20InsufficientAllowance","nameLocation":"1484:26:37","parameters":{"id":12085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12080,"mutability":"mutable","name":"spender","nameLocation":"1519:7:37","nodeType":"VariableDeclaration","scope":12086,"src":"1511:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12079,"name":"address","nodeType":"ElementaryTypeName","src":"1511:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12082,"mutability":"mutable","name":"allowance","nameLocation":"1536:9:37","nodeType":"VariableDeclaration","scope":12086,"src":"1528:17:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12081,"name":"uint256","nodeType":"ElementaryTypeName","src":"1528:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12084,"mutability":"mutable","name":"needed","nameLocation":"1555:6:37","nodeType":"VariableDeclaration","scope":12086,"src":"1547:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12083,"name":"uint256","nodeType":"ElementaryTypeName","src":"1547:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1510:52:37"}},{"id":12091,"nodeType":"ErrorDefinition","src":"1748:45:37","nodes":[],"documentation":{"id":12087,"nodeType":"StructuredDocumentation","src":"1569:174:37","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","name":"ERC20InvalidApprover","nameLocation":"1754:20:37","parameters":{"id":12090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12089,"mutability":"mutable","name":"approver","nameLocation":"1783:8:37","nodeType":"VariableDeclaration","scope":12091,"src":"1775:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12088,"name":"address","nodeType":"ElementaryTypeName","src":"1775:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1774:18:37"}},{"id":12096,"nodeType":"ErrorDefinition","src":"1999:43:37","nodes":[],"documentation":{"id":12092,"nodeType":"StructuredDocumentation","src":"1799:195:37","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","name":"ERC20InvalidSpender","nameLocation":"2005:19:37","parameters":{"id":12095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12094,"mutability":"mutable","name":"spender","nameLocation":"2033:7:37","nodeType":"VariableDeclaration","scope":12096,"src":"2025:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12093,"name":"address","nodeType":"ElementaryTypeName","src":"2025:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2024:17:37"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":12058,"nodeType":"StructuredDocumentation","src":"138:141:37","text":" @dev Standard ERC-20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[12097],"name":"IERC20Errors","nameLocation":"290:12:37","scope":12193,"usedErrors":[12067,12072,12077,12086,12091,12096],"usedEvents":[]},{"id":12145,"nodeType":"ContractDefinition","src":"2190:2092:37","nodes":[{"id":12103,"nodeType":"ErrorDefinition","src":"2444:40:37","nodes":[],"documentation":{"id":12099,"nodeType":"StructuredDocumentation","src":"2220:219:37","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","name":"ERC721InvalidOwner","nameLocation":"2450:18:37","parameters":{"id":12102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12101,"mutability":"mutable","name":"owner","nameLocation":"2477:5:37","nodeType":"VariableDeclaration","scope":12103,"src":"2469:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12100,"name":"address","nodeType":"ElementaryTypeName","src":"2469:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2468:15:37"}},{"id":12108,"nodeType":"ErrorDefinition","src":"2627:46:37","nodes":[],"documentation":{"id":12104,"nodeType":"StructuredDocumentation","src":"2490:132:37","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","name":"ERC721NonexistentToken","nameLocation":"2633:22:37","parameters":{"id":12107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12106,"mutability":"mutable","name":"tokenId","nameLocation":"2664:7:37","nodeType":"VariableDeclaration","scope":12108,"src":"2656:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12105,"name":"uint256","nodeType":"ElementaryTypeName","src":"2656:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2655:17:37"}},{"id":12117,"nodeType":"ErrorDefinition","src":"2973:75:37","nodes":[],"documentation":{"id":12109,"nodeType":"StructuredDocumentation","src":"2679:289:37","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","name":"ERC721IncorrectOwner","nameLocation":"2979:20:37","parameters":{"id":12116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12111,"mutability":"mutable","name":"sender","nameLocation":"3008:6:37","nodeType":"VariableDeclaration","scope":12117,"src":"3000:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12110,"name":"address","nodeType":"ElementaryTypeName","src":"3000:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12113,"mutability":"mutable","name":"tokenId","nameLocation":"3024:7:37","nodeType":"VariableDeclaration","scope":12117,"src":"3016:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12112,"name":"uint256","nodeType":"ElementaryTypeName","src":"3016:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12115,"mutability":"mutable","name":"owner","nameLocation":"3041:5:37","nodeType":"VariableDeclaration","scope":12117,"src":"3033:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12114,"name":"address","nodeType":"ElementaryTypeName","src":"3033:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2999:48:37"}},{"id":12122,"nodeType":"ErrorDefinition","src":"3211:42:37","nodes":[],"documentation":{"id":12118,"nodeType":"StructuredDocumentation","src":"3054:152:37","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","name":"ERC721InvalidSender","nameLocation":"3217:19:37","parameters":{"id":12121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12120,"mutability":"mutable","name":"sender","nameLocation":"3245:6:37","nodeType":"VariableDeclaration","scope":12122,"src":"3237:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12119,"name":"address","nodeType":"ElementaryTypeName","src":"3237:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3236:16:37"}},{"id":12127,"nodeType":"ErrorDefinition","src":"3423:46:37","nodes":[],"documentation":{"id":12123,"nodeType":"StructuredDocumentation","src":"3259:159:37","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","name":"ERC721InvalidReceiver","nameLocation":"3429:21:37","parameters":{"id":12126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12125,"mutability":"mutable","name":"receiver","nameLocation":"3459:8:37","nodeType":"VariableDeclaration","scope":12127,"src":"3451:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12124,"name":"address","nodeType":"ElementaryTypeName","src":"3451:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3450:18:37"}},{"id":12134,"nodeType":"ErrorDefinition","src":"3727:68:37","nodes":[],"documentation":{"id":12128,"nodeType":"StructuredDocumentation","src":"3475:247:37","text":" @dev Indicates a failure with the `operator`s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","name":"ERC721InsufficientApproval","nameLocation":"3733:26:37","parameters":{"id":12133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12130,"mutability":"mutable","name":"operator","nameLocation":"3768:8:37","nodeType":"VariableDeclaration","scope":12134,"src":"3760:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12129,"name":"address","nodeType":"ElementaryTypeName","src":"3760:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12132,"mutability":"mutable","name":"tokenId","nameLocation":"3786:7:37","nodeType":"VariableDeclaration","scope":12134,"src":"3778:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12131,"name":"uint256","nodeType":"ElementaryTypeName","src":"3778:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3759:35:37"}},{"id":12139,"nodeType":"ErrorDefinition","src":"3980:46:37","nodes":[],"documentation":{"id":12135,"nodeType":"StructuredDocumentation","src":"3801:174:37","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","name":"ERC721InvalidApprover","nameLocation":"3986:21:37","parameters":{"id":12138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12137,"mutability":"mutable","name":"approver","nameLocation":"4016:8:37","nodeType":"VariableDeclaration","scope":12139,"src":"4008:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12136,"name":"address","nodeType":"ElementaryTypeName","src":"4008:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4007:18:37"}},{"id":12144,"nodeType":"ErrorDefinition","src":"4234:46:37","nodes":[],"documentation":{"id":12140,"nodeType":"StructuredDocumentation","src":"4032:197:37","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","name":"ERC721InvalidOperator","nameLocation":"4240:21:37","parameters":{"id":12143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12142,"mutability":"mutable","name":"operator","nameLocation":"4270:8:37","nodeType":"VariableDeclaration","scope":12144,"src":"4262:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12141,"name":"address","nodeType":"ElementaryTypeName","src":"4262:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4261:18:37"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":12098,"nodeType":"StructuredDocumentation","src":"2046:143:37","text":" @dev Standard ERC-721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[12145],"name":"IERC721Errors","nameLocation":"2200:13:37","scope":12193,"usedErrors":[12103,12108,12117,12122,12127,12134,12139,12144],"usedEvents":[]},{"id":12192,"nodeType":"ContractDefinition","src":"4430:2107:37","nodes":[{"id":12157,"nodeType":"ErrorDefinition","src":"4827:99:37","nodes":[],"documentation":{"id":12147,"nodeType":"StructuredDocumentation","src":"4461:361:37","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","name":"ERC1155InsufficientBalance","nameLocation":"4833:26:37","parameters":{"id":12156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12149,"mutability":"mutable","name":"sender","nameLocation":"4868:6:37","nodeType":"VariableDeclaration","scope":12157,"src":"4860:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12148,"name":"address","nodeType":"ElementaryTypeName","src":"4860:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12151,"mutability":"mutable","name":"balance","nameLocation":"4884:7:37","nodeType":"VariableDeclaration","scope":12157,"src":"4876:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12150,"name":"uint256","nodeType":"ElementaryTypeName","src":"4876:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12153,"mutability":"mutable","name":"needed","nameLocation":"4901:6:37","nodeType":"VariableDeclaration","scope":12157,"src":"4893:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12152,"name":"uint256","nodeType":"ElementaryTypeName","src":"4893:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12155,"mutability":"mutable","name":"tokenId","nameLocation":"4917:7:37","nodeType":"VariableDeclaration","scope":12157,"src":"4909:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12154,"name":"uint256","nodeType":"ElementaryTypeName","src":"4909:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4859:66:37"}},{"id":12162,"nodeType":"ErrorDefinition","src":"5089:43:37","nodes":[],"documentation":{"id":12158,"nodeType":"StructuredDocumentation","src":"4932:152:37","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","name":"ERC1155InvalidSender","nameLocation":"5095:20:37","parameters":{"id":12161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12160,"mutability":"mutable","name":"sender","nameLocation":"5124:6:37","nodeType":"VariableDeclaration","scope":12162,"src":"5116:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12159,"name":"address","nodeType":"ElementaryTypeName","src":"5116:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5115:16:37"}},{"id":12167,"nodeType":"ErrorDefinition","src":"5302:47:37","nodes":[],"documentation":{"id":12163,"nodeType":"StructuredDocumentation","src":"5138:159:37","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","name":"ERC1155InvalidReceiver","nameLocation":"5308:22:37","parameters":{"id":12166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12165,"mutability":"mutable","name":"receiver","nameLocation":"5339:8:37","nodeType":"VariableDeclaration","scope":12167,"src":"5331:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12164,"name":"address","nodeType":"ElementaryTypeName","src":"5331:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5330:18:37"}},{"id":12174,"nodeType":"ErrorDefinition","src":"5616:68:37","nodes":[],"documentation":{"id":12168,"nodeType":"StructuredDocumentation","src":"5355:256:37","text":" @dev Indicates a failure with the `operator`s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","name":"ERC1155MissingApprovalForAll","nameLocation":"5622:28:37","parameters":{"id":12173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12170,"mutability":"mutable","name":"operator","nameLocation":"5659:8:37","nodeType":"VariableDeclaration","scope":12174,"src":"5651:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12169,"name":"address","nodeType":"ElementaryTypeName","src":"5651:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12172,"mutability":"mutable","name":"owner","nameLocation":"5677:5:37","nodeType":"VariableDeclaration","scope":12174,"src":"5669:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12171,"name":"address","nodeType":"ElementaryTypeName","src":"5669:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5650:33:37"}},{"id":12179,"nodeType":"ErrorDefinition","src":"5869:47:37","nodes":[],"documentation":{"id":12175,"nodeType":"StructuredDocumentation","src":"5690:174:37","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","name":"ERC1155InvalidApprover","nameLocation":"5875:22:37","parameters":{"id":12178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12177,"mutability":"mutable","name":"approver","nameLocation":"5906:8:37","nodeType":"VariableDeclaration","scope":12179,"src":"5898:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12176,"name":"address","nodeType":"ElementaryTypeName","src":"5898:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5897:18:37"}},{"id":12184,"nodeType":"ErrorDefinition","src":"6124:47:37","nodes":[],"documentation":{"id":12180,"nodeType":"StructuredDocumentation","src":"5922:197:37","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","name":"ERC1155InvalidOperator","nameLocation":"6130:22:37","parameters":{"id":12183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12182,"mutability":"mutable","name":"operator","nameLocation":"6161:8:37","nodeType":"VariableDeclaration","scope":12184,"src":"6153:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12181,"name":"address","nodeType":"ElementaryTypeName","src":"6153:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6152:18:37"}},{"id":12191,"nodeType":"ErrorDefinition","src":"6462:73:37","nodes":[],"documentation":{"id":12185,"nodeType":"StructuredDocumentation","src":"6177:280:37","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","name":"ERC1155InvalidArrayLength","nameLocation":"6468:25:37","parameters":{"id":12190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12187,"mutability":"mutable","name":"idsLength","nameLocation":"6502:9:37","nodeType":"VariableDeclaration","scope":12191,"src":"6494:17:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12186,"name":"uint256","nodeType":"ElementaryTypeName","src":"6494:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12189,"mutability":"mutable","name":"valuesLength","nameLocation":"6521:12:37","nodeType":"VariableDeclaration","scope":12191,"src":"6513:20:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12188,"name":"uint256","nodeType":"ElementaryTypeName","src":"6513:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6493:41:37"}}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":12146,"nodeType":"StructuredDocumentation","src":"4284:145:37","text":" @dev Standard ERC-1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens."},"fullyImplemented":true,"linearizedBaseContracts":[12192],"name":"IERC1155Errors","nameLocation":"4440:14:37","scope":12193,"usedErrors":[12157,12162,12167,12174,12179,12184,12191],"usedEvents":[]}],"license":"MIT"}},"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"id":38,"ast":{"absolutePath":"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","id":12231,"exportedSymbols":{"ERC1967Proxy":[12230],"ERC1967Utils":[12524],"Proxy":[12560]},"nodeType":"SourceUnit","src":"114:1604:38","nodes":[{"id":12194,"nodeType":"PragmaDirective","src":"114:24:38","nodes":[],"literals":["solidity","^","0.8",".22"]},{"id":12196,"nodeType":"ImportDirective","src":"140:35:38","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/proxy/Proxy.sol","file":"../Proxy.sol","nameLocation":"-1:-1:-1","scope":12231,"sourceUnit":12561,"symbolAliases":[{"foreign":{"id":12195,"name":"Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12560,"src":"148:5:38","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":12198,"nodeType":"ImportDirective","src":"176:48:38","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"./ERC1967Utils.sol","nameLocation":"-1:-1:-1","scope":12231,"sourceUnit":12525,"symbolAliases":[{"foreign":{"id":12197,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12524,"src":"184:12:38","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":12230,"nodeType":"ContractDefinition","src":"600:1117:38","nodes":[{"id":12217,"nodeType":"FunctionDefinition","src":"1081:133:38","nodes":[],"body":{"id":12216,"nodeType":"Block","src":"1145:69:38","nodes":[],"statements":[{"expression":{"arguments":[{"id":12212,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12204,"src":"1185:14:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12213,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12206,"src":"1201:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":12209,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12524,"src":"1155:12:38","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$12524_$","typeString":"type(library ERC1967Utils)"}},"id":12211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1168:16:38","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":12339,"src":"1155:29:38","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":12214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1155:52:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12215,"nodeType":"ExpressionStatement","src":"1155:52:38"}]},"documentation":{"id":12202,"nodeType":"StructuredDocumentation","src":"637:439:38","text":" @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`.\n If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\n encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\n Requirements:\n - If `data` is empty, `msg.value` must be zero."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":12207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12204,"mutability":"mutable","name":"implementation","nameLocation":"1101:14:38","nodeType":"VariableDeclaration","scope":12217,"src":"1093:22:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12203,"name":"address","nodeType":"ElementaryTypeName","src":"1093:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12206,"mutability":"mutable","name":"_data","nameLocation":"1130:5:38","nodeType":"VariableDeclaration","scope":12217,"src":"1117:18:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12205,"name":"bytes","nodeType":"ElementaryTypeName","src":"1117:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1092:44:38"},"returnParameters":{"id":12208,"nodeType":"ParameterList","parameters":[],"src":"1145:0:38"},"scope":12230,"stateMutability":"payable","virtual":false,"visibility":"public"},{"id":12229,"nodeType":"FunctionDefinition","src":"1583:132:38","nodes":[],"body":{"id":12228,"nodeType":"Block","src":"1659:56:38","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12224,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12524,"src":"1676:12:38","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$12524_$","typeString":"type(library ERC1967Utils)"}},"id":12225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1689:17:38","memberName":"getImplementation","nodeType":"MemberAccess","referencedDeclaration":12276,"src":"1676:30:38","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":12226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1676:32:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":12223,"id":12227,"nodeType":"Return","src":"1669:39:38"}]},"baseFunctions":[12541],"documentation":{"id":12218,"nodeType":"StructuredDocumentation","src":"1220:358:38","text":" @dev Returns the current implementation address.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"1592:15:38","overrides":{"id":12220,"nodeType":"OverrideSpecifier","overrides":[],"src":"1632:8:38"},"parameters":{"id":12219,"nodeType":"ParameterList","parameters":[],"src":"1607:2:38"},"returnParameters":{"id":12223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12222,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12229,"src":"1650:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12221,"name":"address","nodeType":"ElementaryTypeName","src":"1650:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1649:9:38"},"scope":12230,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":12200,"name":"Proxy","nameLocations":["625:5:38"],"nodeType":"IdentifierPath","referencedDeclaration":12560,"src":"625:5:38"},"id":12201,"nodeType":"InheritanceSpecifier","src":"625:5:38"}],"canonicalName":"ERC1967Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":12199,"nodeType":"StructuredDocumentation","src":"226:373:38","text":" @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n implementation address that can be changed. This address is stored in storage in the location specified by\n https://eips.ethereum.org/EIPS/eip-1967[ERC-1967], so that it doesn't conflict with the storage layout of the\n implementation behind the proxy."},"fullyImplemented":true,"linearizedBaseContracts":[12230,12560],"name":"ERC1967Proxy","nameLocation":"609:12:38","scope":12231,"usedErrors":[12250,12263,13148,13441],"usedEvents":[12028]}],"license":"MIT"}},"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"id":39,"ast":{"absolutePath":"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","id":12525,"exportedSymbols":{"Address":[13398],"ERC1967Utils":[12524],"IBeacon":[12570],"IERC1967":[12041],"StorageSlot":[13574]},"nodeType":"SourceUnit","src":"114:6124:39","nodes":[{"id":12232,"nodeType":"PragmaDirective","src":"114:24:39","nodes":[],"literals":["solidity","^","0.8",".21"]},{"id":12234,"nodeType":"ImportDirective","src":"140:46:39","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol","file":"../beacon/IBeacon.sol","nameLocation":"-1:-1:-1","scope":12525,"sourceUnit":12571,"symbolAliases":[{"foreign":{"id":12233,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12570,"src":"148:7:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":12236,"nodeType":"ImportDirective","src":"187:55:39","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/interfaces/IERC1967.sol","file":"../../interfaces/IERC1967.sol","nameLocation":"-1:-1:-1","scope":12525,"sourceUnit":12042,"symbolAliases":[{"foreign":{"id":12235,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12041,"src":"195:8:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":12238,"nodeType":"ImportDirective","src":"243:48:39","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","nameLocation":"-1:-1:-1","scope":12525,"sourceUnit":13399,"symbolAliases":[{"foreign":{"id":12237,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13398,"src":"251:7:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":12240,"nodeType":"ImportDirective","src":"292:56:39","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol","file":"../../utils/StorageSlot.sol","nameLocation":"-1:-1:-1","scope":12525,"sourceUnit":13575,"symbolAliases":[{"foreign":{"id":12239,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"300:11:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":12524,"nodeType":"ContractDefinition","src":"496:5741:39","nodes":[{"id":12245,"nodeType":"VariableDeclaration","src":"763:114:39","nodes":[],"constant":true,"documentation":{"id":12242,"nodeType":"StructuredDocumentation","src":"523:170:39","text":" @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1."},"mutability":"constant","name":"IMPLEMENTATION_SLOT","nameLocation":"789:19:39","scope":12524,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12243,"name":"bytes32","nodeType":"ElementaryTypeName","src":"763:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263","id":12244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"811:66:39","typeDescriptions":{"typeIdentifier":"t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1","typeString":"int_const 2444...(69 digits omitted)...5612"},"value":"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"},"visibility":"internal"},{"id":12250,"nodeType":"ErrorDefinition","src":"958:59:39","nodes":[],"documentation":{"id":12246,"nodeType":"StructuredDocumentation","src":"884:69:39","text":" @dev The `implementation` of the proxy is invalid."},"errorSelector":"4c9c8ce3","name":"ERC1967InvalidImplementation","nameLocation":"964:28:39","parameters":{"id":12249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12248,"mutability":"mutable","name":"implementation","nameLocation":"1001:14:39","nodeType":"VariableDeclaration","scope":12250,"src":"993:22:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12247,"name":"address","nodeType":"ElementaryTypeName","src":"993:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"992:24:39"}},{"id":12255,"nodeType":"ErrorDefinition","src":"1088:41:39","nodes":[],"documentation":{"id":12251,"nodeType":"StructuredDocumentation","src":"1023:60:39","text":" @dev The `admin` of the proxy is invalid."},"errorSelector":"62e77ba2","name":"ERC1967InvalidAdmin","nameLocation":"1094:19:39","parameters":{"id":12254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12253,"mutability":"mutable","name":"admin","nameLocation":"1122:5:39","nodeType":"VariableDeclaration","scope":12255,"src":"1114:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12252,"name":"address","nodeType":"ElementaryTypeName","src":"1114:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1113:15:39"}},{"id":12260,"nodeType":"ErrorDefinition","src":"1201:43:39","nodes":[],"documentation":{"id":12256,"nodeType":"StructuredDocumentation","src":"1135:61:39","text":" @dev The `beacon` of the proxy is invalid."},"errorSelector":"64ced0ec","name":"ERC1967InvalidBeacon","nameLocation":"1207:20:39","parameters":{"id":12259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12258,"mutability":"mutable","name":"beacon","nameLocation":"1236:6:39","nodeType":"VariableDeclaration","scope":12260,"src":"1228:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12257,"name":"address","nodeType":"ElementaryTypeName","src":"1228:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1227:16:39"}},{"id":12263,"nodeType":"ErrorDefinition","src":"1337:26:39","nodes":[],"documentation":{"id":12261,"nodeType":"StructuredDocumentation","src":"1250:82:39","text":" @dev An upgrade function sees `msg.value > 0` that may be lost."},"errorSelector":"b398979f","name":"ERC1967NonPayable","nameLocation":"1343:17:39","parameters":{"id":12262,"nodeType":"ParameterList","parameters":[],"src":"1360:2:39"}},{"id":12276,"nodeType":"FunctionDefinition","src":"1441:138:39","nodes":[],"body":{"id":12275,"nodeType":"Block","src":"1502:77:39","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":12271,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12245,"src":"1546:19:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":12269,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"1519:11:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$13574_$","typeString":"type(library StorageSlot)"}},"id":12270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1531:14:39","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":13485,"src":"1519:26:39","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$13456_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":12272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1519:47:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$13456_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":12273,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1567:5:39","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":13455,"src":"1519:53:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":12268,"id":12274,"nodeType":"Return","src":"1512:60:39"}]},"documentation":{"id":12264,"nodeType":"StructuredDocumentation","src":"1369:67:39","text":" @dev Returns the current implementation address."},"implemented":true,"kind":"function","modifiers":[],"name":"getImplementation","nameLocation":"1450:17:39","parameters":{"id":12265,"nodeType":"ParameterList","parameters":[],"src":"1467:2:39"},"returnParameters":{"id":12268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12267,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12276,"src":"1493:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12266,"name":"address","nodeType":"ElementaryTypeName","src":"1493:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1492:9:39"},"scope":12524,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":12303,"nodeType":"FunctionDefinition","src":"1671:281:39","nodes":[],"body":{"id":12302,"nodeType":"Block","src":"1734:218:39","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":12282,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12279,"src":"1748:17:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1766:4:39","memberName":"code","nodeType":"MemberAccess","src":"1748:22:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1771:6:39","memberName":"length","nodeType":"MemberAccess","src":"1748:29:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":12285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1781:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1748:34:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12292,"nodeType":"IfStatement","src":"1744:119:39","trueBody":{"id":12291,"nodeType":"Block","src":"1784:79:39","statements":[{"errorCall":{"arguments":[{"id":12288,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12279,"src":"1834:17:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12287,"name":"ERC1967InvalidImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12250,"src":"1805:28:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":12289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1805:47:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12290,"nodeType":"RevertStatement","src":"1798:54:39"}]}},{"expression":{"id":12300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":12296,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12245,"src":"1899:19:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":12293,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"1872:11:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$13574_$","typeString":"type(library StorageSlot)"}},"id":12295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1884:14:39","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":13485,"src":"1872:26:39","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$13456_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":12297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1872:47:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$13456_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":12298,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1920:5:39","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":13455,"src":"1872:53:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12299,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12279,"src":"1928:17:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1872:73:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12301,"nodeType":"ExpressionStatement","src":"1872:73:39"}]},"documentation":{"id":12277,"nodeType":"StructuredDocumentation","src":"1585:81:39","text":" @dev Stores a new address in the ERC-1967 implementation slot."},"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nameLocation":"1680:18:39","parameters":{"id":12280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12279,"mutability":"mutable","name":"newImplementation","nameLocation":"1707:17:39","nodeType":"VariableDeclaration","scope":12303,"src":"1699:25:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12278,"name":"address","nodeType":"ElementaryTypeName","src":"1699:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1698:27:39"},"returnParameters":{"id":12281,"nodeType":"ParameterList","parameters":[],"src":"1734:0:39"},"scope":12524,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":12339,"nodeType":"FunctionDefinition","src":"2264:344:39","nodes":[],"body":{"id":12338,"nodeType":"Block","src":"2345:263:39","nodes":[],"statements":[{"expression":{"arguments":[{"id":12312,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12306,"src":"2374:17:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12311,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12303,"src":"2355:18:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":12313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2355:37:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12314,"nodeType":"ExpressionStatement","src":"2355:37:39"},{"eventCall":{"arguments":[{"id":12318,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12306,"src":"2425:17:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":12315,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12041,"src":"2407:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1967_$12041_$","typeString":"type(contract IERC1967)"}},"id":12317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2416:8:39","memberName":"Upgraded","nodeType":"MemberAccess","referencedDeclaration":12028,"src":"2407:17:39","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":12319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2407:36:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12320,"nodeType":"EmitStatement","src":"2402:41:39"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12321,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12308,"src":"2458:4:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2463:6:39","memberName":"length","nodeType":"MemberAccess","src":"2458:11:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":12323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2472:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2458:15:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12336,"nodeType":"Block","src":"2559:43:39","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12333,"name":"_checkNonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12523,"src":"2573:16:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":12334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2573:18:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12335,"nodeType":"ExpressionStatement","src":"2573:18:39"}]},"id":12337,"nodeType":"IfStatement","src":"2454:148:39","trueBody":{"id":12332,"nodeType":"Block","src":"2475:78:39","statements":[{"expression":{"arguments":[{"id":12328,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12306,"src":"2518:17:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12329,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12308,"src":"2537:4:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":12325,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13398,"src":"2489:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$13398_$","typeString":"type(library Address)"}},"id":12327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2497:20:39","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":13315,"src":"2489:28:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":12330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2489:53:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12331,"nodeType":"ExpressionStatement","src":"2489:53:39"}]}}]},"documentation":{"id":12304,"nodeType":"StructuredDocumentation","src":"1958:301:39","text":" @dev Performs implementation upgrade with additional setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-Upgraded} event."},"implemented":true,"kind":"function","modifiers":[],"name":"upgradeToAndCall","nameLocation":"2273:16:39","parameters":{"id":12309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12306,"mutability":"mutable","name":"newImplementation","nameLocation":"2298:17:39","nodeType":"VariableDeclaration","scope":12339,"src":"2290:25:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12305,"name":"address","nodeType":"ElementaryTypeName","src":"2290:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12308,"mutability":"mutable","name":"data","nameLocation":"2330:4:39","nodeType":"VariableDeclaration","scope":12339,"src":"2317:17:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12307,"name":"bytes","nodeType":"ElementaryTypeName","src":"2317:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2289:46:39"},"returnParameters":{"id":12310,"nodeType":"ParameterList","parameters":[],"src":"2345:0:39"},"scope":12524,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":12343,"nodeType":"VariableDeclaration","src":"2829:105:39","nodes":[],"constant":true,"documentation":{"id":12340,"nodeType":"StructuredDocumentation","src":"2614:145:39","text":" @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1."},"mutability":"constant","name":"ADMIN_SLOT","nameLocation":"2855:10:39","scope":12524,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12341,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2829:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":12342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2868:66:39","typeDescriptions":{"typeIdentifier":"t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1","typeString":"int_const 8195...(69 digits omitted)...7091"},"value":"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"},"visibility":"internal"},{"id":12356,"nodeType":"FunctionDefinition","src":"3287:120:39","nodes":[],"body":{"id":12355,"nodeType":"Block","src":"3339:68:39","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":12351,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12343,"src":"3383:10:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":12349,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"3356:11:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$13574_$","typeString":"type(library StorageSlot)"}},"id":12350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3368:14:39","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":13485,"src":"3356:26:39","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$13456_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":12352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3356:38:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$13456_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":12353,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3395:5:39","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":13455,"src":"3356:44:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":12348,"id":12354,"nodeType":"Return","src":"3349:51:39"}]},"documentation":{"id":12344,"nodeType":"StructuredDocumentation","src":"2941:341:39","text":" @dev Returns the current admin.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"implemented":true,"kind":"function","modifiers":[],"name":"getAdmin","nameLocation":"3296:8:39","parameters":{"id":12345,"nodeType":"ParameterList","parameters":[],"src":"3304:2:39"},"returnParameters":{"id":12348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12347,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12356,"src":"3330:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12346,"name":"address","nodeType":"ElementaryTypeName","src":"3330:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3329:9:39"},"scope":12524,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":12387,"nodeType":"FunctionDefinition","src":"3490:217:39","nodes":[],"body":{"id":12386,"nodeType":"Block","src":"3535:172:39","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12362,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12359,"src":"3549:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":12365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3569:1:39","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":12364,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3561:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12363,"name":"address","nodeType":"ElementaryTypeName","src":"3561:7:39","typeDescriptions":{}}},"id":12366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3561:10:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3549:22:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12376,"nodeType":"IfStatement","src":"3545:91:39","trueBody":{"id":12375,"nodeType":"Block","src":"3573:63:39","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":12371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3622:1:39","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":12370,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3614:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12369,"name":"address","nodeType":"ElementaryTypeName","src":"3614:7:39","typeDescriptions":{}}},"id":12372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3614:10:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12368,"name":"ERC1967InvalidAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12255,"src":"3594:19:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":12373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3594:31:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12374,"nodeType":"RevertStatement","src":"3587:38:39"}]}},{"expression":{"id":12384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":12380,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12343,"src":"3672:10:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":12377,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"3645:11:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$13574_$","typeString":"type(library StorageSlot)"}},"id":12379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3657:14:39","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":13485,"src":"3645:26:39","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$13456_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":12381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3645:38:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$13456_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":12382,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3684:5:39","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":13455,"src":"3645:44:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12383,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12359,"src":"3692:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3645:55:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12385,"nodeType":"ExpressionStatement","src":"3645:55:39"}]},"documentation":{"id":12357,"nodeType":"StructuredDocumentation","src":"3413:72:39","text":" @dev Stores a new address in the ERC-1967 admin slot."},"implemented":true,"kind":"function","modifiers":[],"name":"_setAdmin","nameLocation":"3499:9:39","parameters":{"id":12360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12359,"mutability":"mutable","name":"newAdmin","nameLocation":"3517:8:39","nodeType":"VariableDeclaration","scope":12387,"src":"3509:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12358,"name":"address","nodeType":"ElementaryTypeName","src":"3509:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3508:18:39"},"returnParameters":{"id":12361,"nodeType":"ParameterList","parameters":[],"src":"3535:0:39"},"scope":12524,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":12406,"nodeType":"FunctionDefinition","src":"3827:142:39","nodes":[],"body":{"id":12405,"nodeType":"Block","src":"3875:94:39","nodes":[],"statements":[{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":12396,"name":"getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12356,"src":"3912:8:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":12397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3912:10:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12398,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12390,"src":"3924:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":12393,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12041,"src":"3890:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1967_$12041_$","typeString":"type(contract IERC1967)"}},"id":12395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3899:12:39","memberName":"AdminChanged","nodeType":"MemberAccess","referencedDeclaration":12035,"src":"3890:21:39","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":12399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3890:43:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12400,"nodeType":"EmitStatement","src":"3885:48:39"},{"expression":{"arguments":[{"id":12402,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12390,"src":"3953:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12401,"name":"_setAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12387,"src":"3943:9:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":12403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3943:19:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12404,"nodeType":"ExpressionStatement","src":"3943:19:39"}]},"documentation":{"id":12388,"nodeType":"StructuredDocumentation","src":"3713:109:39","text":" @dev Changes the admin of the proxy.\n Emits an {IERC1967-AdminChanged} event."},"implemented":true,"kind":"function","modifiers":[],"name":"changeAdmin","nameLocation":"3836:11:39","parameters":{"id":12391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12390,"mutability":"mutable","name":"newAdmin","nameLocation":"3856:8:39","nodeType":"VariableDeclaration","scope":12406,"src":"3848:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12389,"name":"address","nodeType":"ElementaryTypeName","src":"3848:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3847:18:39"},"returnParameters":{"id":12392,"nodeType":"ParameterList","parameters":[],"src":"3875:0:39"},"scope":12524,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":12410,"nodeType":"VariableDeclaration","src":"4246:106:39","nodes":[],"constant":true,"documentation":{"id":12407,"nodeType":"StructuredDocumentation","src":"3975:201:39","text":" @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1."},"mutability":"constant","name":"BEACON_SLOT","nameLocation":"4272:11:39","scope":12524,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12408,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4246:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530","id":12409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4286:66:39","typeDescriptions":{"typeIdentifier":"t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1","typeString":"int_const 7415...(69 digits omitted)...4704"},"value":"0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"},"visibility":"internal"},{"id":12423,"nodeType":"FunctionDefinition","src":"4415:122:39","nodes":[],"body":{"id":12422,"nodeType":"Block","src":"4468:69:39","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":12418,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12410,"src":"4512:11:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":12416,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"4485:11:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$13574_$","typeString":"type(library StorageSlot)"}},"id":12417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4497:14:39","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":13485,"src":"4485:26:39","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$13456_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":12419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4485:39:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$13456_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":12420,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4525:5:39","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":13455,"src":"4485:45:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":12415,"id":12421,"nodeType":"Return","src":"4478:52:39"}]},"documentation":{"id":12411,"nodeType":"StructuredDocumentation","src":"4359:51:39","text":" @dev Returns the current beacon."},"implemented":true,"kind":"function","modifiers":[],"name":"getBeacon","nameLocation":"4424:9:39","parameters":{"id":12412,"nodeType":"ParameterList","parameters":[],"src":"4433:2:39"},"returnParameters":{"id":12415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12414,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12423,"src":"4459:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12413,"name":"address","nodeType":"ElementaryTypeName","src":"4459:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4458:9:39"},"scope":12524,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":12469,"nodeType":"FunctionDefinition","src":"4620:437:39","nodes":[],"body":{"id":12468,"nodeType":"Block","src":"4667:390:39","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":12429,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12426,"src":"4681:9:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4691:4:39","memberName":"code","nodeType":"MemberAccess","src":"4681:14:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4696:6:39","memberName":"length","nodeType":"MemberAccess","src":"4681:21:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":12432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4706:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4681:26:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12439,"nodeType":"IfStatement","src":"4677:95:39","trueBody":{"id":12438,"nodeType":"Block","src":"4709:63:39","statements":[{"errorCall":{"arguments":[{"id":12435,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12426,"src":"4751:9:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12434,"name":"ERC1967InvalidBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12260,"src":"4730:20:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":12436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4730:31:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12437,"nodeType":"RevertStatement","src":"4723:38:39"}]}},{"expression":{"id":12447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":12443,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12410,"src":"4809:11:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":12440,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13574,"src":"4782:11:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$13574_$","typeString":"type(library StorageSlot)"}},"id":12442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4794:14:39","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":13485,"src":"4782:26:39","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$13456_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":12444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4782:39:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$13456_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":12445,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4822:5:39","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":13455,"src":"4782:45:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12446,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12426,"src":"4830:9:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4782:57:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12448,"nodeType":"ExpressionStatement","src":"4782:57:39"},{"assignments":[12450],"declarations":[{"constant":false,"id":12450,"mutability":"mutable","name":"beaconImplementation","nameLocation":"4858:20:39","nodeType":"VariableDeclaration","scope":12468,"src":"4850:28:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12449,"name":"address","nodeType":"ElementaryTypeName","src":"4850:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":12456,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":12452,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12426,"src":"4889:9:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12451,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12570,"src":"4881:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$12570_$","typeString":"type(contract IBeacon)"}},"id":12453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4881:18:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$12570","typeString":"contract IBeacon"}},"id":12454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4900:14:39","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":12569,"src":"4881:33:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":12455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4881:35:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4850:66:39"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":12457,"name":"beaconImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12450,"src":"4930:20:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4951:4:39","memberName":"code","nodeType":"MemberAccess","src":"4930:25:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4956:6:39","memberName":"length","nodeType":"MemberAccess","src":"4930:32:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":12460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4966:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4930:37:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12467,"nodeType":"IfStatement","src":"4926:125:39","trueBody":{"id":12466,"nodeType":"Block","src":"4969:82:39","statements":[{"errorCall":{"arguments":[{"id":12463,"name":"beaconImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12450,"src":"5019:20:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12462,"name":"ERC1967InvalidImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12250,"src":"4990:28:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":12464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4990:50:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12465,"nodeType":"RevertStatement","src":"4983:57:39"}]}}]},"documentation":{"id":12424,"nodeType":"StructuredDocumentation","src":"4543:72:39","text":" @dev Stores a new beacon in the ERC-1967 beacon slot."},"implemented":true,"kind":"function","modifiers":[],"name":"_setBeacon","nameLocation":"4629:10:39","parameters":{"id":12427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12426,"mutability":"mutable","name":"newBeacon","nameLocation":"4648:9:39","nodeType":"VariableDeclaration","scope":12469,"src":"4640:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12425,"name":"address","nodeType":"ElementaryTypeName","src":"4640:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4639:19:39"},"returnParameters":{"id":12428,"nodeType":"ParameterList","parameters":[],"src":"4667:0:39"},"scope":12524,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":12509,"nodeType":"FunctionDefinition","src":"5582:342:39","nodes":[],"body":{"id":12508,"nodeType":"Block","src":"5661:263:39","nodes":[],"statements":[{"expression":{"arguments":[{"id":12478,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12472,"src":"5682:9:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12477,"name":"_setBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12469,"src":"5671:10:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":12479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5671:21:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12480,"nodeType":"ExpressionStatement","src":"5671:21:39"},{"eventCall":{"arguments":[{"id":12484,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12472,"src":"5731:9:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":12481,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12041,"src":"5707:8:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1967_$12041_$","typeString":"type(contract IERC1967)"}},"id":12483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5716:14:39","memberName":"BeaconUpgraded","nodeType":"MemberAccess","referencedDeclaration":12040,"src":"5707:23:39","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":12485,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5707:34:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12486,"nodeType":"EmitStatement","src":"5702:39:39"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12487,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12474,"src":"5756:4:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5761:6:39","memberName":"length","nodeType":"MemberAccess","src":"5756:11:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":12489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5770:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5756:15:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12506,"nodeType":"Block","src":"5875:43:39","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12503,"name":"_checkNonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12523,"src":"5889:16:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":12504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5889:18:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12505,"nodeType":"ExpressionStatement","src":"5889:18:39"}]},"id":12507,"nodeType":"IfStatement","src":"5752:166:39","trueBody":{"id":12502,"nodeType":"Block","src":"5773:96:39","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":12495,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12472,"src":"5824:9:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12494,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12570,"src":"5816:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$12570_$","typeString":"type(contract IBeacon)"}},"id":12496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5816:18:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$12570","typeString":"contract IBeacon"}},"id":12497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5835:14:39","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":12569,"src":"5816:33:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":12498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5816:35:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12499,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12474,"src":"5853:4:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":12491,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13398,"src":"5787:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$13398_$","typeString":"type(library Address)"}},"id":12493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5795:20:39","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":13315,"src":"5787:28:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":12500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5787:71:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12501,"nodeType":"ExpressionStatement","src":"5787:71:39"}]}}]},"documentation":{"id":12470,"nodeType":"StructuredDocumentation","src":"5063:514:39","text":" @dev Change the beacon and trigger a setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-BeaconUpgraded} event.\n CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n efficiency."},"implemented":true,"kind":"function","modifiers":[],"name":"upgradeBeaconToAndCall","nameLocation":"5591:22:39","parameters":{"id":12475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12472,"mutability":"mutable","name":"newBeacon","nameLocation":"5622:9:39","nodeType":"VariableDeclaration","scope":12509,"src":"5614:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12471,"name":"address","nodeType":"ElementaryTypeName","src":"5614:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12474,"mutability":"mutable","name":"data","nameLocation":"5646:4:39","nodeType":"VariableDeclaration","scope":12509,"src":"5633:17:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12473,"name":"bytes","nodeType":"ElementaryTypeName","src":"5633:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5613:38:39"},"returnParameters":{"id":12476,"nodeType":"ParameterList","parameters":[],"src":"5661:0:39"},"scope":12524,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":12523,"nodeType":"FunctionDefinition","src":"6113:122:39","nodes":[],"body":{"id":12522,"nodeType":"Block","src":"6149:86:39","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12513,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6163:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6167:5:39","memberName":"value","nodeType":"MemberAccess","src":"6163:9:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":12515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6175:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6163:13:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12521,"nodeType":"IfStatement","src":"6159:70:39","trueBody":{"id":12520,"nodeType":"Block","src":"6178:51:39","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12517,"name":"ERC1967NonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12263,"src":"6199:17:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":12518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6199:19:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12519,"nodeType":"RevertStatement","src":"6192:26:39"}]}}]},"documentation":{"id":12510,"nodeType":"StructuredDocumentation","src":"5930:178:39","text":" @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n if an upgrade doesn't perform an initialization call."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkNonPayable","nameLocation":"6122:16:39","parameters":{"id":12511,"nodeType":"ParameterList","parameters":[],"src":"6138:2:39"},"returnParameters":{"id":12512,"nodeType":"ParameterList","parameters":[],"src":"6149:0:39"},"scope":12524,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[],"canonicalName":"ERC1967Utils","contractDependencies":[],"contractKind":"library","documentation":{"id":12241,"nodeType":"StructuredDocumentation","src":"350:145:39","text":" @dev This library provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots."},"fullyImplemented":true,"linearizedBaseContracts":[12524],"name":"ERC1967Utils","nameLocation":"504:12:39","scope":12525,"usedErrors":[12250,12255,12260,12263],"usedEvents":[]}],"license":"MIT"}},"node_modules/@openzeppelin/contracts/proxy/Proxy.sol":{"id":40,"ast":{"absolutePath":"node_modules/@openzeppelin/contracts/proxy/Proxy.sol","id":12561,"exportedSymbols":{"Proxy":[12560]},"nodeType":"SourceUnit","src":"99:2571:40","nodes":[{"id":12526,"nodeType":"PragmaDirective","src":"99:24:40","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":12560,"nodeType":"ContractDefinition","src":"724:1945:40","nodes":[{"id":12535,"nodeType":"FunctionDefinition","src":"949:895:40","nodes":[],"body":{"id":12534,"nodeType":"Block","src":"1009:835:40","nodes":[],"statements":[{"AST":{"nativeSrc":"1028:810:40","nodeType":"YulBlock","src":"1028:810:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1281:1:40","nodeType":"YulLiteral","src":"1281:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"1284:1:40","nodeType":"YulLiteral","src":"1284:1:40","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"1287:12:40","nodeType":"YulIdentifier","src":"1287:12:40"},"nativeSrc":"1287:14:40","nodeType":"YulFunctionCall","src":"1287:14:40"}],"functionName":{"name":"calldatacopy","nativeSrc":"1268:12:40","nodeType":"YulIdentifier","src":"1268:12:40"},"nativeSrc":"1268:34:40","nodeType":"YulFunctionCall","src":"1268:34:40"},"nativeSrc":"1268:34:40","nodeType":"YulExpressionStatement","src":"1268:34:40"},{"nativeSrc":"1429:74:40","nodeType":"YulVariableDeclaration","src":"1429:74:40","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"1456:3:40","nodeType":"YulIdentifier","src":"1456:3:40"},"nativeSrc":"1456:5:40","nodeType":"YulFunctionCall","src":"1456:5:40"},{"name":"implementation","nativeSrc":"1463:14:40","nodeType":"YulIdentifier","src":"1463:14:40"},{"kind":"number","nativeSrc":"1479:1:40","nodeType":"YulLiteral","src":"1479:1:40","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"1482:12:40","nodeType":"YulIdentifier","src":"1482:12:40"},"nativeSrc":"1482:14:40","nodeType":"YulFunctionCall","src":"1482:14:40"},{"kind":"number","nativeSrc":"1498:1:40","nodeType":"YulLiteral","src":"1498:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"1501:1:40","nodeType":"YulLiteral","src":"1501:1:40","type":"","value":"0"}],"functionName":{"name":"delegatecall","nativeSrc":"1443:12:40","nodeType":"YulIdentifier","src":"1443:12:40"},"nativeSrc":"1443:60:40","nodeType":"YulFunctionCall","src":"1443:60:40"},"variables":[{"name":"result","nativeSrc":"1433:6:40","nodeType":"YulTypedName","src":"1433:6:40","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1571:1:40","nodeType":"YulLiteral","src":"1571:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"1574:1:40","nodeType":"YulLiteral","src":"1574:1:40","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"1577:14:40","nodeType":"YulIdentifier","src":"1577:14:40"},"nativeSrc":"1577:16:40","nodeType":"YulFunctionCall","src":"1577:16:40"}],"functionName":{"name":"returndatacopy","nativeSrc":"1556:14:40","nodeType":"YulIdentifier","src":"1556:14:40"},"nativeSrc":"1556:38:40","nodeType":"YulFunctionCall","src":"1556:38:40"},"nativeSrc":"1556:38:40","nodeType":"YulExpressionStatement","src":"1556:38:40"},{"cases":[{"body":{"nativeSrc":"1689:59:40","nodeType":"YulBlock","src":"1689:59:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1714:1:40","nodeType":"YulLiteral","src":"1714:1:40","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"1717:14:40","nodeType":"YulIdentifier","src":"1717:14:40"},"nativeSrc":"1717:16:40","nodeType":"YulFunctionCall","src":"1717:16:40"}],"functionName":{"name":"revert","nativeSrc":"1707:6:40","nodeType":"YulIdentifier","src":"1707:6:40"},"nativeSrc":"1707:27:40","nodeType":"YulFunctionCall","src":"1707:27:40"},"nativeSrc":"1707:27:40","nodeType":"YulExpressionStatement","src":"1707:27:40"}]},"nativeSrc":"1682:66:40","nodeType":"YulCase","src":"1682:66:40","value":{"kind":"number","nativeSrc":"1687:1:40","nodeType":"YulLiteral","src":"1687:1:40","type":"","value":"0"}},{"body":{"nativeSrc":"1769:59:40","nodeType":"YulBlock","src":"1769:59:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1794:1:40","nodeType":"YulLiteral","src":"1794:1:40","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"1797:14:40","nodeType":"YulIdentifier","src":"1797:14:40"},"nativeSrc":"1797:16:40","nodeType":"YulFunctionCall","src":"1797:16:40"}],"functionName":{"name":"return","nativeSrc":"1787:6:40","nodeType":"YulIdentifier","src":"1787:6:40"},"nativeSrc":"1787:27:40","nodeType":"YulFunctionCall","src":"1787:27:40"},"nativeSrc":"1787:27:40","nodeType":"YulExpressionStatement","src":"1787:27:40"}]},"nativeSrc":"1761:67:40","nodeType":"YulCase","src":"1761:67:40","value":"default"}],"expression":{"name":"result","nativeSrc":"1615:6:40","nodeType":"YulIdentifier","src":"1615:6:40"},"nativeSrc":"1608:220:40","nodeType":"YulSwitch","src":"1608:220:40"}]},"evmVersion":"prague","externalReferences":[{"declaration":12530,"isOffset":false,"isSlot":false,"src":"1463:14:40","valueSize":1}],"id":12533,"nodeType":"InlineAssembly","src":"1019:819:40"}]},"documentation":{"id":12528,"nodeType":"StructuredDocumentation","src":"754:190:40","text":" @dev Delegates the current call to `implementation`.\n This function does not return to its internal call site, it will return directly to the external caller."},"implemented":true,"kind":"function","modifiers":[],"name":"_delegate","nameLocation":"958:9:40","parameters":{"id":12531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12530,"mutability":"mutable","name":"implementation","nameLocation":"976:14:40","nodeType":"VariableDeclaration","scope":12535,"src":"968:22:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12529,"name":"address","nodeType":"ElementaryTypeName","src":"968:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"967:24:40"},"returnParameters":{"id":12532,"nodeType":"ParameterList","parameters":[],"src":"1009:0:40"},"scope":12560,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":12541,"nodeType":"FunctionDefinition","src":"2028:67:40","nodes":[],"documentation":{"id":12536,"nodeType":"StructuredDocumentation","src":"1850:173:40","text":" @dev This is a virtual function that should be overridden so it returns the address to which the fallback\n function and {_fallback} should delegate."},"implemented":false,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"2037:15:40","parameters":{"id":12537,"nodeType":"ParameterList","parameters":[],"src":"2052:2:40"},"returnParameters":{"id":12540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12539,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12541,"src":"2086:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12538,"name":"address","nodeType":"ElementaryTypeName","src":"2086:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2085:9:40"},"scope":12560,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":12551,"nodeType":"FunctionDefinition","src":"2323:83:40","nodes":[],"body":{"id":12550,"nodeType":"Block","src":"2361:45:40","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":12546,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12541,"src":"2381:15:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":12547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2381:17:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12545,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12535,"src":"2371:9:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":12548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2371:28:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12549,"nodeType":"ExpressionStatement","src":"2371:28:40"}]},"documentation":{"id":12542,"nodeType":"StructuredDocumentation","src":"2101:217:40","text":" @dev Delegates the current call to the address returned by `_implementation()`.\n This function does not return to its internal call site, it will return directly to the external caller."},"implemented":true,"kind":"function","modifiers":[],"name":"_fallback","nameLocation":"2332:9:40","parameters":{"id":12543,"nodeType":"ParameterList","parameters":[],"src":"2341:2:40"},"returnParameters":{"id":12544,"nodeType":"ParameterList","parameters":[],"src":"2361:0:40"},"scope":12560,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":12559,"nodeType":"FunctionDefinition","src":"2603:64:40","nodes":[],"body":{"id":12558,"nodeType":"Block","src":"2639:28:40","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12555,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12551,"src":"2649:9:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":12556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2649:11:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12557,"nodeType":"ExpressionStatement","src":"2649:11:40"}]},"documentation":{"id":12552,"nodeType":"StructuredDocumentation","src":"2412:186:40","text":" @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n function in the contract matches the call data."},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":12553,"nodeType":"ParameterList","parameters":[],"src":"2611:2:40"},"returnParameters":{"id":12554,"nodeType":"ParameterList","parameters":[],"src":"2639:0:40"},"scope":12560,"stateMutability":"payable","virtual":true,"visibility":"external"}],"abstract":true,"baseContracts":[],"canonicalName":"Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":12527,"nodeType":"StructuredDocumentation","src":"125:598:40","text":" @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n be specified by overriding the virtual {_implementation} function.\n Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n different contract through the {_delegate} function.\n The success and return data of the delegated call will be returned back to the caller of the proxy."},"fullyImplemented":false,"linearizedBaseContracts":[12560],"name":"Proxy","nameLocation":"742:5:40","scope":12561,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"id":41,"ast":{"absolutePath":"node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol","id":12571,"exportedSymbols":{"IBeacon":[12570]},"nodeType":"SourceUnit","src":"108:365:41","nodes":[{"id":12562,"nodeType":"PragmaDirective","src":"108:25:41","nodes":[],"literals":["solidity",">=","0.4",".16"]},{"id":12570,"nodeType":"ContractDefinition","src":"215:257:41","nodes":[{"id":12569,"nodeType":"FunctionDefinition","src":"412:58:41","nodes":[],"documentation":{"id":12564,"nodeType":"StructuredDocumentation","src":"239:168:41","text":" @dev Must return an address that can be used as a delegate call target.\n {UpgradeableBeacon} will check that this address is a contract."},"functionSelector":"5c60da1b","implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"421:14:41","parameters":{"id":12565,"nodeType":"ParameterList","parameters":[],"src":"435:2:41"},"returnParameters":{"id":12568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12567,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12569,"src":"461:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12566,"name":"address","nodeType":"ElementaryTypeName","src":"461:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"460:9:41"},"scope":12570,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IBeacon","contractDependencies":[],"contractKind":"interface","documentation":{"id":12563,"nodeType":"StructuredDocumentation","src":"135:79:41","text":" @dev This is the interface that {BeaconProxy} expects of its beacon."},"fullyImplemented":false,"linearizedBaseContracts":[12570],"name":"IBeacon","nameLocation":"225:7:41","scope":12571,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"id":42,"ast":{"absolutePath":"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol","id":12649,"exportedSymbols":{"IERC20":[12648]},"nodeType":"SourceUnit","src":"106:2675:42","nodes":[{"id":12572,"nodeType":"PragmaDirective","src":"106:25:42","nodes":[],"literals":["solidity",">=","0.4",".16"]},{"id":12648,"nodeType":"ContractDefinition","src":"205:2575:42","nodes":[{"id":12582,"nodeType":"EventDefinition","src":"391:72:42","nodes":[],"anonymous":false,"documentation":{"id":12574,"nodeType":"StructuredDocumentation","src":"228:158:42","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","name":"Transfer","nameLocation":"397:8:42","parameters":{"id":12581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12576,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"422:4:42","nodeType":"VariableDeclaration","scope":12582,"src":"406:20:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12575,"name":"address","nodeType":"ElementaryTypeName","src":"406:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12578,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"444:2:42","nodeType":"VariableDeclaration","scope":12582,"src":"428:18:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12577,"name":"address","nodeType":"ElementaryTypeName","src":"428:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12580,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"456:5:42","nodeType":"VariableDeclaration","scope":12582,"src":"448:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12579,"name":"uint256","nodeType":"ElementaryTypeName","src":"448:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"405:57:42"}},{"id":12591,"nodeType":"EventDefinition","src":"622:78:42","nodes":[],"anonymous":false,"documentation":{"id":12583,"nodeType":"StructuredDocumentation","src":"469:148:42","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","name":"Approval","nameLocation":"628:8:42","parameters":{"id":12590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12585,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"653:5:42","nodeType":"VariableDeclaration","scope":12591,"src":"637:21:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12584,"name":"address","nodeType":"ElementaryTypeName","src":"637:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12587,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"676:7:42","nodeType":"VariableDeclaration","scope":12591,"src":"660:23:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12586,"name":"address","nodeType":"ElementaryTypeName","src":"660:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12589,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"693:5:42","nodeType":"VariableDeclaration","scope":12591,"src":"685:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12588,"name":"uint256","nodeType":"ElementaryTypeName","src":"685:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"636:63:42"}},{"id":12597,"nodeType":"FunctionDefinition","src":"776:55:42","nodes":[],"documentation":{"id":12592,"nodeType":"StructuredDocumentation","src":"706:65:42","text":" @dev Returns the value of tokens in existence."},"functionSelector":"18160ddd","implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"785:11:42","parameters":{"id":12593,"nodeType":"ParameterList","parameters":[],"src":"796:2:42"},"returnParameters":{"id":12596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12595,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12597,"src":"822:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12594,"name":"uint256","nodeType":"ElementaryTypeName","src":"822:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"821:9:42"},"scope":12648,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":12605,"nodeType":"FunctionDefinition","src":"913:68:42","nodes":[],"documentation":{"id":12598,"nodeType":"StructuredDocumentation","src":"837:71:42","text":" @dev Returns the value of tokens owned by `account`."},"functionSelector":"70a08231","implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"922:9:42","parameters":{"id":12601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12600,"mutability":"mutable","name":"account","nameLocation":"940:7:42","nodeType":"VariableDeclaration","scope":12605,"src":"932:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12599,"name":"address","nodeType":"ElementaryTypeName","src":"932:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"931:17:42"},"returnParameters":{"id":12604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12603,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12605,"src":"972:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12602,"name":"uint256","nodeType":"ElementaryTypeName","src":"972:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"971:9:42"},"scope":12648,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":12615,"nodeType":"FunctionDefinition","src":"1205:69:42","nodes":[],"documentation":{"id":12606,"nodeType":"StructuredDocumentation","src":"987:213:42","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1214:8:42","parameters":{"id":12611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12608,"mutability":"mutable","name":"to","nameLocation":"1231:2:42","nodeType":"VariableDeclaration","scope":12615,"src":"1223:10:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12607,"name":"address","nodeType":"ElementaryTypeName","src":"1223:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12610,"mutability":"mutable","name":"value","nameLocation":"1243:5:42","nodeType":"VariableDeclaration","scope":12615,"src":"1235:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12609,"name":"uint256","nodeType":"ElementaryTypeName","src":"1235:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1222:27:42"},"returnParameters":{"id":12614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12613,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12615,"src":"1268:4:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12612,"name":"bool","nodeType":"ElementaryTypeName","src":"1268:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1267:6:42"},"scope":12648,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":12625,"nodeType":"FunctionDefinition","src":"1549:83:42","nodes":[],"documentation":{"id":12616,"nodeType":"StructuredDocumentation","src":"1280:264:42","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","implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1558:9:42","parameters":{"id":12621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12618,"mutability":"mutable","name":"owner","nameLocation":"1576:5:42","nodeType":"VariableDeclaration","scope":12625,"src":"1568:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12617,"name":"address","nodeType":"ElementaryTypeName","src":"1568:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12620,"mutability":"mutable","name":"spender","nameLocation":"1591:7:42","nodeType":"VariableDeclaration","scope":12625,"src":"1583:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12619,"name":"address","nodeType":"ElementaryTypeName","src":"1583:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1567:32:42"},"returnParameters":{"id":12624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12623,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12625,"src":"1623:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12622,"name":"uint256","nodeType":"ElementaryTypeName","src":"1623:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1622:9:42"},"scope":12648,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":12635,"nodeType":"FunctionDefinition","src":"2310:73:42","nodes":[],"documentation":{"id":12626,"nodeType":"StructuredDocumentation","src":"1638:667:42","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2319:7:42","parameters":{"id":12631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12628,"mutability":"mutable","name":"spender","nameLocation":"2335:7:42","nodeType":"VariableDeclaration","scope":12635,"src":"2327:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12627,"name":"address","nodeType":"ElementaryTypeName","src":"2327:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12630,"mutability":"mutable","name":"value","nameLocation":"2352:5:42","nodeType":"VariableDeclaration","scope":12635,"src":"2344:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12629,"name":"uint256","nodeType":"ElementaryTypeName","src":"2344:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2326:32:42"},"returnParameters":{"id":12634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12633,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12635,"src":"2377:4:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12632,"name":"bool","nodeType":"ElementaryTypeName","src":"2377:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2376:6:42"},"scope":12648,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":12647,"nodeType":"FunctionDefinition","src":"2691:87:42","nodes":[],"documentation":{"id":12636,"nodeType":"StructuredDocumentation","src":"2389:297:42","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2700:12:42","parameters":{"id":12643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12638,"mutability":"mutable","name":"from","nameLocation":"2721:4:42","nodeType":"VariableDeclaration","scope":12647,"src":"2713:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12637,"name":"address","nodeType":"ElementaryTypeName","src":"2713:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12640,"mutability":"mutable","name":"to","nameLocation":"2735:2:42","nodeType":"VariableDeclaration","scope":12647,"src":"2727:10:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12639,"name":"address","nodeType":"ElementaryTypeName","src":"2727:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12642,"mutability":"mutable","name":"value","nameLocation":"2747:5:42","nodeType":"VariableDeclaration","scope":12647,"src":"2739:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12641,"name":"uint256","nodeType":"ElementaryTypeName","src":"2739:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2712:41:42"},"returnParameters":{"id":12646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12645,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12647,"src":"2772:4:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12644,"name":"bool","nodeType":"ElementaryTypeName","src":"2772:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2771:6:42"},"scope":12648,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":12573,"nodeType":"StructuredDocumentation","src":"133:71:42","text":" @dev Interface of the ERC-20 standard as defined in the ERC."},"fullyImplemented":false,"linearizedBaseContracts":[12648],"name":"IERC20","nameLocation":"215:6:42","scope":12649,"usedErrors":[],"usedEvents":[12582,12591]}],"license":"MIT"}},"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"id":43,"ast":{"absolutePath":"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":12675,"exportedSymbols":{"IERC20":[12648],"IERC20Metadata":[12674]},"nodeType":"SourceUnit","src":"125:559:43","nodes":[{"id":12650,"nodeType":"PragmaDirective","src":"125:24:43","nodes":[],"literals":["solidity",">=","0.6",".2"]},{"id":12652,"nodeType":"ImportDirective","src":"151:37:43","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","nameLocation":"-1:-1:-1","scope":12675,"sourceUnit":12649,"symbolAliases":[{"foreign":{"id":12651,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"159:6:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":12674,"nodeType":"ContractDefinition","src":"278:405:43","nodes":[{"id":12661,"nodeType":"FunctionDefinition","src":"378:54:43","nodes":[],"documentation":{"id":12656,"nodeType":"StructuredDocumentation","src":"319:54:43","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"387:4:43","parameters":{"id":12657,"nodeType":"ParameterList","parameters":[],"src":"391:2:43"},"returnParameters":{"id":12660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12659,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12661,"src":"417:13:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12658,"name":"string","nodeType":"ElementaryTypeName","src":"417:6:43","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"416:15:43"},"scope":12674,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":12667,"nodeType":"FunctionDefinition","src":"499:56:43","nodes":[],"documentation":{"id":12662,"nodeType":"StructuredDocumentation","src":"438:56:43","text":" @dev Returns the symbol of the token."},"functionSelector":"95d89b41","implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"508:6:43","parameters":{"id":12663,"nodeType":"ParameterList","parameters":[],"src":"514:2:43"},"returnParameters":{"id":12666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12667,"src":"540:13:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12664,"name":"string","nodeType":"ElementaryTypeName","src":"540:6:43","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"539:15:43"},"scope":12674,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":12673,"nodeType":"FunctionDefinition","src":"631:50:43","nodes":[],"documentation":{"id":12668,"nodeType":"StructuredDocumentation","src":"561:65:43","text":" @dev Returns the decimals places of the token."},"functionSelector":"313ce567","implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"640:8:43","parameters":{"id":12669,"nodeType":"ParameterList","parameters":[],"src":"648:2:43"},"returnParameters":{"id":12672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12671,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12673,"src":"674:5:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":12670,"name":"uint8","nodeType":"ElementaryTypeName","src":"674:5:43","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"673:7:43"},"scope":12674,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":12654,"name":"IERC20","nameLocations":["306:6:43"],"nodeType":"IdentifierPath","referencedDeclaration":12648,"src":"306:6:43"},"id":12655,"nodeType":"InheritanceSpecifier","src":"306:6:43"}],"canonicalName":"IERC20Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":12653,"nodeType":"StructuredDocumentation","src":"190:87:43","text":" @dev Interface for the optional metadata functions from the ERC-20 standard."},"fullyImplemented":false,"linearizedBaseContracts":[12674,12648],"name":"IERC20Metadata","nameLocation":"288:14:43","scope":12675,"usedErrors":[],"usedEvents":[12582,12591]}],"license":"MIT"}},"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"id":44,"ast":{"absolutePath":"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","id":13139,"exportedSymbols":{"IERC1363":[12016],"IERC20":[12648],"SafeERC20":[13138]},"nodeType":"SourceUnit","src":"115:9960:44","nodes":[{"id":12676,"nodeType":"PragmaDirective","src":"115:24:44","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":12678,"nodeType":"ImportDirective","src":"141:37:44","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","nameLocation":"-1:-1:-1","scope":13139,"sourceUnit":12649,"symbolAliases":[{"foreign":{"id":12677,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"149:6:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":12680,"nodeType":"ImportDirective","src":"179:58:44","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol","file":"../../../interfaces/IERC1363.sol","nameLocation":"-1:-1:-1","scope":13139,"sourceUnit":12017,"symbolAliases":[{"foreign":{"id":12679,"name":"IERC1363","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12016,"src":"187:8:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":13138,"nodeType":"ContractDefinition","src":"698:9376:44","nodes":[{"id":12686,"nodeType":"ErrorDefinition","src":"792:46:44","nodes":[],"documentation":{"id":12682,"nodeType":"StructuredDocumentation","src":"722:65:44","text":" @dev An operation with an ERC-20 token failed."},"errorSelector":"5274afe7","name":"SafeERC20FailedOperation","nameLocation":"798:24:44","parameters":{"id":12685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12684,"mutability":"mutable","name":"token","nameLocation":"831:5:44","nodeType":"VariableDeclaration","scope":12686,"src":"823:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12683,"name":"address","nodeType":"ElementaryTypeName","src":"823:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"822:15:44"}},{"id":12695,"nodeType":"ErrorDefinition","src":"920:109:44","nodes":[],"documentation":{"id":12687,"nodeType":"StructuredDocumentation","src":"844:71:44","text":" @dev Indicates a failed `decreaseAllowance` request."},"errorSelector":"e570110f","name":"SafeERC20FailedDecreaseAllowance","nameLocation":"926:32:44","parameters":{"id":12694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12689,"mutability":"mutable","name":"spender","nameLocation":"967:7:44","nodeType":"VariableDeclaration","scope":12695,"src":"959:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12688,"name":"address","nodeType":"ElementaryTypeName","src":"959:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12691,"mutability":"mutable","name":"currentAllowance","nameLocation":"984:16:44","nodeType":"VariableDeclaration","scope":12695,"src":"976:24:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12690,"name":"uint256","nodeType":"ElementaryTypeName","src":"976:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12693,"mutability":"mutable","name":"requestedDecrease","nameLocation":"1010:17:44","nodeType":"VariableDeclaration","scope":12695,"src":"1002:25:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12692,"name":"uint256","nodeType":"ElementaryTypeName","src":"1002:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"958:70:44"}},{"id":12719,"nodeType":"FunctionDefinition","src":"1219:160:44","nodes":[],"body":{"id":12718,"nodeType":"Block","src":"1291:88:44","nodes":[],"statements":[{"expression":{"arguments":[{"id":12707,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12699,"src":"1321:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},{"arguments":[{"expression":{"id":12710,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12699,"src":"1343:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":12711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1349:8:44","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":12615,"src":"1343:14:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},{"components":[{"id":12712,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12701,"src":"1360:2:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12713,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12703,"src":"1364:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12714,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1359:11:44","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}],"expression":{"id":12708,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1328:3:44","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12709,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1332:10:44","memberName":"encodeCall","nodeType":"MemberAccess","src":"1328:14:44","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1328:43:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12706,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13096,"src":"1301:19:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":12716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1301:71:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12717,"nodeType":"ExpressionStatement","src":"1301:71:44"}]},"documentation":{"id":12696,"nodeType":"StructuredDocumentation","src":"1035:179:44","text":" @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n non-reverting calls are assumed to be successful."},"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nameLocation":"1228:12:44","parameters":{"id":12704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12699,"mutability":"mutable","name":"token","nameLocation":"1248:5:44","nodeType":"VariableDeclaration","scope":12719,"src":"1241:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"},"typeName":{"id":12698,"nodeType":"UserDefinedTypeName","pathNode":{"id":12697,"name":"IERC20","nameLocations":["1241:6:44"],"nodeType":"IdentifierPath","referencedDeclaration":12648,"src":"1241:6:44"},"referencedDeclaration":12648,"src":"1241:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":12701,"mutability":"mutable","name":"to","nameLocation":"1263:2:44","nodeType":"VariableDeclaration","scope":12719,"src":"1255:10:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12700,"name":"address","nodeType":"ElementaryTypeName","src":"1255:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12703,"mutability":"mutable","name":"value","nameLocation":"1275:5:44","nodeType":"VariableDeclaration","scope":12719,"src":"1267:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12702,"name":"uint256","nodeType":"ElementaryTypeName","src":"1267:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1240:41:44"},"returnParameters":{"id":12705,"nodeType":"ParameterList","parameters":[],"src":"1291:0:44"},"scope":13138,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":12746,"nodeType":"FunctionDefinition","src":"1618:188:44","nodes":[],"body":{"id":12745,"nodeType":"Block","src":"1708:98:44","nodes":[],"statements":[{"expression":{"arguments":[{"id":12733,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12723,"src":"1738:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},{"arguments":[{"expression":{"id":12736,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12723,"src":"1760:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":12737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1766:12:44","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":12647,"src":"1760:18:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},{"components":[{"id":12738,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12725,"src":"1781:4:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12739,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12727,"src":"1787:2:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12740,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12729,"src":"1791:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12741,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1780:17:44","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint256_$","typeString":"tuple(address,address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint256_$","typeString":"tuple(address,address,uint256)"}],"expression":{"id":12734,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1745:3:44","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12735,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1749:10:44","memberName":"encodeCall","nodeType":"MemberAccess","src":"1745:14:44","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1745:53:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12732,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13096,"src":"1718:19:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":12743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1718:81:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12744,"nodeType":"ExpressionStatement","src":"1718:81:44"}]},"documentation":{"id":12720,"nodeType":"StructuredDocumentation","src":"1385:228:44","text":" @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n calling contract. If `token` returns no value, non-reverting calls are assumed to be successful."},"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1627:16:44","parameters":{"id":12730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12723,"mutability":"mutable","name":"token","nameLocation":"1651:5:44","nodeType":"VariableDeclaration","scope":12746,"src":"1644:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"},"typeName":{"id":12722,"nodeType":"UserDefinedTypeName","pathNode":{"id":12721,"name":"IERC20","nameLocations":["1644:6:44"],"nodeType":"IdentifierPath","referencedDeclaration":12648,"src":"1644:6:44"},"referencedDeclaration":12648,"src":"1644:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":12725,"mutability":"mutable","name":"from","nameLocation":"1666:4:44","nodeType":"VariableDeclaration","scope":12746,"src":"1658:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12724,"name":"address","nodeType":"ElementaryTypeName","src":"1658:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12727,"mutability":"mutable","name":"to","nameLocation":"1680:2:44","nodeType":"VariableDeclaration","scope":12746,"src":"1672:10:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12726,"name":"address","nodeType":"ElementaryTypeName","src":"1672:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12729,"mutability":"mutable","name":"value","nameLocation":"1692:5:44","nodeType":"VariableDeclaration","scope":12746,"src":"1684:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12728,"name":"uint256","nodeType":"ElementaryTypeName","src":"1684:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1643:55:44"},"returnParameters":{"id":12731,"nodeType":"ParameterList","parameters":[],"src":"1708:0:44"},"scope":13138,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":12772,"nodeType":"FunctionDefinition","src":"1943:189:44","nodes":[],"body":{"id":12771,"nodeType":"Block","src":"2033:99:44","nodes":[],"statements":[{"expression":{"arguments":[{"id":12760,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12750,"src":"2074:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},{"arguments":[{"expression":{"id":12763,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12750,"src":"2096:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":12764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2102:8:44","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":12615,"src":"2096:14:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},{"components":[{"id":12765,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12752,"src":"2113:2:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12766,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12754,"src":"2117:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12767,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2112:11:44","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}],"expression":{"id":12761,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2081:3:44","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12762,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2085:10:44","memberName":"encodeCall","nodeType":"MemberAccess","src":"2081:14:44","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2081:43:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12759,"name":"_callOptionalReturnBool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13137,"src":"2050:23:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (contract IERC20,bytes memory) returns (bool)"}},"id":12769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2050:75:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12758,"id":12770,"nodeType":"Return","src":"2043:82:44"}]},"documentation":{"id":12747,"nodeType":"StructuredDocumentation","src":"1812:126:44","text":" @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful."},"implemented":true,"kind":"function","modifiers":[],"name":"trySafeTransfer","nameLocation":"1952:15:44","parameters":{"id":12755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12750,"mutability":"mutable","name":"token","nameLocation":"1975:5:44","nodeType":"VariableDeclaration","scope":12772,"src":"1968:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"},"typeName":{"id":12749,"nodeType":"UserDefinedTypeName","pathNode":{"id":12748,"name":"IERC20","nameLocations":["1968:6:44"],"nodeType":"IdentifierPath","referencedDeclaration":12648,"src":"1968:6:44"},"referencedDeclaration":12648,"src":"1968:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":12752,"mutability":"mutable","name":"to","nameLocation":"1990:2:44","nodeType":"VariableDeclaration","scope":12772,"src":"1982:10:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12751,"name":"address","nodeType":"ElementaryTypeName","src":"1982:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12754,"mutability":"mutable","name":"value","nameLocation":"2002:5:44","nodeType":"VariableDeclaration","scope":12772,"src":"1994:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12753,"name":"uint256","nodeType":"ElementaryTypeName","src":"1994:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1967:41:44"},"returnParameters":{"id":12758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12772,"src":"2027:4:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12756,"name":"bool","nodeType":"ElementaryTypeName","src":"2027:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2026:6:44"},"scope":13138,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":12801,"nodeType":"FunctionDefinition","src":"2273:217:44","nodes":[],"body":{"id":12800,"nodeType":"Block","src":"2381:109:44","nodes":[],"statements":[{"expression":{"arguments":[{"id":12788,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12776,"src":"2422:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},{"arguments":[{"expression":{"id":12791,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12776,"src":"2444:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":12792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2450:12:44","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":12647,"src":"2444:18:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},{"components":[{"id":12793,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12778,"src":"2465:4:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12794,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12780,"src":"2471:2:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12795,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12782,"src":"2475:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12796,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2464:17:44","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint256_$","typeString":"tuple(address,address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint256_$","typeString":"tuple(address,address,uint256)"}],"expression":{"id":12789,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2429:3:44","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12790,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2433:10:44","memberName":"encodeCall","nodeType":"MemberAccess","src":"2429:14:44","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2429:53:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12787,"name":"_callOptionalReturnBool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13137,"src":"2398:23:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (contract IERC20,bytes memory) returns (bool)"}},"id":12798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2398:85:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12786,"id":12799,"nodeType":"Return","src":"2391:92:44"}]},"documentation":{"id":12773,"nodeType":"StructuredDocumentation","src":"2138:130:44","text":" @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful."},"implemented":true,"kind":"function","modifiers":[],"name":"trySafeTransferFrom","nameLocation":"2282:19:44","parameters":{"id":12783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12776,"mutability":"mutable","name":"token","nameLocation":"2309:5:44","nodeType":"VariableDeclaration","scope":12801,"src":"2302:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"},"typeName":{"id":12775,"nodeType":"UserDefinedTypeName","pathNode":{"id":12774,"name":"IERC20","nameLocations":["2302:6:44"],"nodeType":"IdentifierPath","referencedDeclaration":12648,"src":"2302:6:44"},"referencedDeclaration":12648,"src":"2302:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":12778,"mutability":"mutable","name":"from","nameLocation":"2324:4:44","nodeType":"VariableDeclaration","scope":12801,"src":"2316:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12777,"name":"address","nodeType":"ElementaryTypeName","src":"2316:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12780,"mutability":"mutable","name":"to","nameLocation":"2338:2:44","nodeType":"VariableDeclaration","scope":12801,"src":"2330:10:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12779,"name":"address","nodeType":"ElementaryTypeName","src":"2330:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12782,"mutability":"mutable","name":"value","nameLocation":"2350:5:44","nodeType":"VariableDeclaration","scope":12801,"src":"2342:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12781,"name":"uint256","nodeType":"ElementaryTypeName","src":"2342:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2301:55:44"},"returnParameters":{"id":12786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12785,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12801,"src":"2375:4:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12784,"name":"bool","nodeType":"ElementaryTypeName","src":"2375:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2374:6:44"},"scope":13138,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":12832,"nodeType":"FunctionDefinition","src":"3146:225:44","nodes":[],"body":{"id":12831,"nodeType":"Block","src":"3232:139:44","nodes":[],"statements":[{"assignments":[12813],"declarations":[{"constant":false,"id":12813,"mutability":"mutable","name":"oldAllowance","nameLocation":"3250:12:44","nodeType":"VariableDeclaration","scope":12831,"src":"3242:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12812,"name":"uint256","nodeType":"ElementaryTypeName","src":"3242:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12822,"initialValue":{"arguments":[{"arguments":[{"id":12818,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3289:4:44","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$13138","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$13138","typeString":"library SafeERC20"}],"id":12817,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3281:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12816,"name":"address","nodeType":"ElementaryTypeName","src":"3281:7:44","typeDescriptions":{}}},"id":12819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3281:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12820,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12807,"src":"3296:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":12814,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12805,"src":"3265:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":12815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3271:9:44","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":12625,"src":"3265:15:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":12821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3265:39:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3242:62:44"},{"expression":{"arguments":[{"id":12824,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12805,"src":"3327:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},{"id":12825,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12807,"src":"3334:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12826,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12813,"src":"3343:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":12827,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12809,"src":"3358:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3343:20:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12823,"name":"forceApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12922,"src":"3314:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":12829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3314:50:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12830,"nodeType":"ExpressionStatement","src":"3314:50:44"}]},"documentation":{"id":12802,"nodeType":"StructuredDocumentation","src":"2496:645:44","text":" @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful.\n IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior."},"implemented":true,"kind":"function","modifiers":[],"name":"safeIncreaseAllowance","nameLocation":"3155:21:44","parameters":{"id":12810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12805,"mutability":"mutable","name":"token","nameLocation":"3184:5:44","nodeType":"VariableDeclaration","scope":12832,"src":"3177:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"},"typeName":{"id":12804,"nodeType":"UserDefinedTypeName","pathNode":{"id":12803,"name":"IERC20","nameLocations":["3177:6:44"],"nodeType":"IdentifierPath","referencedDeclaration":12648,"src":"3177:6:44"},"referencedDeclaration":12648,"src":"3177:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":12807,"mutability":"mutable","name":"spender","nameLocation":"3199:7:44","nodeType":"VariableDeclaration","scope":12832,"src":"3191:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12806,"name":"address","nodeType":"ElementaryTypeName","src":"3191:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12809,"mutability":"mutable","name":"value","nameLocation":"3216:5:44","nodeType":"VariableDeclaration","scope":12832,"src":"3208:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12808,"name":"uint256","nodeType":"ElementaryTypeName","src":"3208:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3176:46:44"},"returnParameters":{"id":12811,"nodeType":"ParameterList","parameters":[],"src":"3232:0:44"},"scope":13138,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":12875,"nodeType":"FunctionDefinition","src":"4039:468:44","nodes":[],"body":{"id":12874,"nodeType":"Block","src":"4137:370:44","nodes":[],"statements":[{"id":12873,"nodeType":"UncheckedBlock","src":"4147:354:44","statements":[{"assignments":[12844],"declarations":[{"constant":false,"id":12844,"mutability":"mutable","name":"currentAllowance","nameLocation":"4179:16:44","nodeType":"VariableDeclaration","scope":12873,"src":"4171:24:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12843,"name":"uint256","nodeType":"ElementaryTypeName","src":"4171:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12853,"initialValue":{"arguments":[{"arguments":[{"id":12849,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4222:4:44","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$13138","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$13138","typeString":"library SafeERC20"}],"id":12848,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4214:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12847,"name":"address","nodeType":"ElementaryTypeName","src":"4214:7:44","typeDescriptions":{}}},"id":12850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4214:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12851,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12838,"src":"4229:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":12845,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12836,"src":"4198:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":12846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4204:9:44","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":12625,"src":"4198:15:44","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":12852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4198:39:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4171:66:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12854,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12844,"src":"4255:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12855,"name":"requestedDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12840,"src":"4274:17:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4255:36:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12864,"nodeType":"IfStatement","src":"4251:160:44","trueBody":{"id":12863,"nodeType":"Block","src":"4293:118:44","statements":[{"errorCall":{"arguments":[{"id":12858,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12838,"src":"4351:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12859,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12844,"src":"4360:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12860,"name":"requestedDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12840,"src":"4378:17:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12857,"name":"SafeERC20FailedDecreaseAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12695,"src":"4318:32:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":12861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4318:78:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12862,"nodeType":"RevertStatement","src":"4311:85:44"}]}},{"expression":{"arguments":[{"id":12866,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12836,"src":"4437:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},{"id":12867,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12838,"src":"4444:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12868,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12844,"src":"4453:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":12869,"name":"requestedDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12840,"src":"4472:17:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4453:36:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12865,"name":"forceApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12922,"src":"4424:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":12871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4424:66:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12872,"nodeType":"ExpressionStatement","src":"4424:66:44"}]}]},"documentation":{"id":12833,"nodeType":"StructuredDocumentation","src":"3377:657:44","text":" @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\n value, non-reverting calls are assumed to be successful.\n IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior."},"implemented":true,"kind":"function","modifiers":[],"name":"safeDecreaseAllowance","nameLocation":"4048:21:44","parameters":{"id":12841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12836,"mutability":"mutable","name":"token","nameLocation":"4077:5:44","nodeType":"VariableDeclaration","scope":12875,"src":"4070:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"},"typeName":{"id":12835,"nodeType":"UserDefinedTypeName","pathNode":{"id":12834,"name":"IERC20","nameLocations":["4070:6:44"],"nodeType":"IdentifierPath","referencedDeclaration":12648,"src":"4070:6:44"},"referencedDeclaration":12648,"src":"4070:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":12838,"mutability":"mutable","name":"spender","nameLocation":"4092:7:44","nodeType":"VariableDeclaration","scope":12875,"src":"4084:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12837,"name":"address","nodeType":"ElementaryTypeName","src":"4084:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12840,"mutability":"mutable","name":"requestedDecrease","nameLocation":"4109:17:44","nodeType":"VariableDeclaration","scope":12875,"src":"4101:25:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12839,"name":"uint256","nodeType":"ElementaryTypeName","src":"4101:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4069:58:44"},"returnParameters":{"id":12842,"nodeType":"ParameterList","parameters":[],"src":"4137:0:44"},"scope":13138,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":12922,"nodeType":"FunctionDefinition","src":"5084:380:44","nodes":[],"body":{"id":12921,"nodeType":"Block","src":"5161:303:44","nodes":[],"statements":[{"assignments":[12887],"declarations":[{"constant":false,"id":12887,"mutability":"mutable","name":"approvalCall","nameLocation":"5184:12:44","nodeType":"VariableDeclaration","scope":12921,"src":"5171:25:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12886,"name":"bytes","nodeType":"ElementaryTypeName","src":"5171:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":12896,"initialValue":{"arguments":[{"expression":{"id":12890,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12879,"src":"5214:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":12891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5220:7:44","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":12635,"src":"5214:13:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},{"components":[{"id":12892,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12881,"src":"5230:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12893,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12883,"src":"5239:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12894,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5229:16:44","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}],"expression":{"id":12888,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5199:3:44","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12889,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5203:10:44","memberName":"encodeCall","nodeType":"MemberAccess","src":"5199:14:44","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5199:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5171:75:44"},{"condition":{"id":12901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5261:45:44","subExpression":{"arguments":[{"id":12898,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12879,"src":"5286:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},{"id":12899,"name":"approvalCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12887,"src":"5293:12:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12897,"name":"_callOptionalReturnBool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13137,"src":"5262:23:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (contract IERC20,bytes memory) returns (bool)"}},"id":12900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5262:44:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12920,"nodeType":"IfStatement","src":"5257:201:44","trueBody":{"id":12919,"nodeType":"Block","src":"5308:150:44","statements":[{"expression":{"arguments":[{"id":12903,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12879,"src":"5342:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},{"arguments":[{"expression":{"id":12906,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12879,"src":"5364:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"id":12907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5370:7:44","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":12635,"src":"5364:13:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},{"components":[{"id":12908,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12881,"src":"5380:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":12909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5389:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":12910,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5379:12:44","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_rational_0_by_1_$","typeString":"tuple(address,int_const 0)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_rational_0_by_1_$","typeString":"tuple(address,int_const 0)"}],"expression":{"id":12904,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5349:3:44","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12905,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5353:10:44","memberName":"encodeCall","nodeType":"MemberAccess","src":"5349:14:44","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5349:43:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12902,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13096,"src":"5322:19:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":12912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5322:71:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12913,"nodeType":"ExpressionStatement","src":"5322:71:44"},{"expression":{"arguments":[{"id":12915,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12879,"src":"5427:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},{"id":12916,"name":"approvalCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12887,"src":"5434:12:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12914,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13096,"src":"5407:19:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":12917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5407:40:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12918,"nodeType":"ExpressionStatement","src":"5407:40:44"}]}}]},"documentation":{"id":12876,"nodeType":"StructuredDocumentation","src":"4513:566:44","text":" @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n to be set to zero before setting it to a non-zero value, such as USDT.\n NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\n only sets the \"standard\" allowance. Any temporary allowance will remain active, in addition to the value being\n set here."},"implemented":true,"kind":"function","modifiers":[],"name":"forceApprove","nameLocation":"5093:12:44","parameters":{"id":12884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12879,"mutability":"mutable","name":"token","nameLocation":"5113:5:44","nodeType":"VariableDeclaration","scope":12922,"src":"5106:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"},"typeName":{"id":12878,"nodeType":"UserDefinedTypeName","pathNode":{"id":12877,"name":"IERC20","nameLocations":["5106:6:44"],"nodeType":"IdentifierPath","referencedDeclaration":12648,"src":"5106:6:44"},"referencedDeclaration":12648,"src":"5106:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":12881,"mutability":"mutable","name":"spender","nameLocation":"5128:7:44","nodeType":"VariableDeclaration","scope":12922,"src":"5120:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12880,"name":"address","nodeType":"ElementaryTypeName","src":"5120:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12883,"mutability":"mutable","name":"value","nameLocation":"5145:5:44","nodeType":"VariableDeclaration","scope":12922,"src":"5137:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12882,"name":"uint256","nodeType":"ElementaryTypeName","src":"5137:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5105:46:44"},"returnParameters":{"id":12885,"nodeType":"ParameterList","parameters":[],"src":"5161:0:44"},"scope":13138,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":12965,"nodeType":"FunctionDefinition","src":"5808:322:44","nodes":[],"body":{"id":12964,"nodeType":"Block","src":"5911:219:44","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":12935,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12928,"src":"5925:2:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5928:4:44","memberName":"code","nodeType":"MemberAccess","src":"5925:7:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5933:6:44","memberName":"length","nodeType":"MemberAccess","src":"5925:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":12938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5943:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5925:19:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":12953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6011:39:44","subExpression":{"arguments":[{"id":12949,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12928,"src":"6034:2:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12950,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12930,"src":"6038:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12951,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12932,"src":"6045:4:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":12947,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12926,"src":"6012:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$12016","typeString":"contract IERC1363"}},"id":12948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6018:15:44","memberName":"transferAndCall","nodeType":"MemberAccess","referencedDeclaration":11967,"src":"6012:21:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,bytes memory) external returns (bool)"}},"id":12952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6012:38:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12962,"nodeType":"IfStatement","src":"6007:117:44","trueBody":{"id":12961,"nodeType":"Block","src":"6052:72:44","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":12957,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12926,"src":"6106:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$12016","typeString":"contract IERC1363"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$12016","typeString":"contract IERC1363"}],"id":12956,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6098:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12955,"name":"address","nodeType":"ElementaryTypeName","src":"6098:7:44","typeDescriptions":{}}},"id":12958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6098:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12954,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12686,"src":"6073:24:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":12959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6073:40:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12960,"nodeType":"RevertStatement","src":"6066:47:44"}]}},"id":12963,"nodeType":"IfStatement","src":"5921:203:44","trueBody":{"id":12946,"nodeType":"Block","src":"5946:55:44","statements":[{"expression":{"arguments":[{"id":12941,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12926,"src":"5973:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$12016","typeString":"contract IERC1363"}},{"id":12942,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12928,"src":"5980:2:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12943,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12930,"src":"5984:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$12016","typeString":"contract IERC1363"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12940,"name":"safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12719,"src":"5960:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":12944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5960:30:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12945,"nodeType":"ExpressionStatement","src":"5960:30:44"}]}}]},"documentation":{"id":12923,"nodeType":"StructuredDocumentation","src":"5470:333:44","text":" @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\n code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n targeting contracts.\n Reverts if the returned value is other than `true`."},"implemented":true,"kind":"function","modifiers":[],"name":"transferAndCallRelaxed","nameLocation":"5817:22:44","parameters":{"id":12933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12926,"mutability":"mutable","name":"token","nameLocation":"5849:5:44","nodeType":"VariableDeclaration","scope":12965,"src":"5840:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$12016","typeString":"contract IERC1363"},"typeName":{"id":12925,"nodeType":"UserDefinedTypeName","pathNode":{"id":12924,"name":"IERC1363","nameLocations":["5840:8:44"],"nodeType":"IdentifierPath","referencedDeclaration":12016,"src":"5840:8:44"},"referencedDeclaration":12016,"src":"5840:8:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$12016","typeString":"contract IERC1363"}},"visibility":"internal"},{"constant":false,"id":12928,"mutability":"mutable","name":"to","nameLocation":"5864:2:44","nodeType":"VariableDeclaration","scope":12965,"src":"5856:10:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12927,"name":"address","nodeType":"ElementaryTypeName","src":"5856:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12930,"mutability":"mutable","name":"value","nameLocation":"5876:5:44","nodeType":"VariableDeclaration","scope":12965,"src":"5868:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12929,"name":"uint256","nodeType":"ElementaryTypeName","src":"5868:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12932,"mutability":"mutable","name":"data","nameLocation":"5896:4:44","nodeType":"VariableDeclaration","scope":12965,"src":"5883:17:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12931,"name":"bytes","nodeType":"ElementaryTypeName","src":"5883:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5839:62:44"},"returnParameters":{"id":12934,"nodeType":"ParameterList","parameters":[],"src":"5911:0:44"},"scope":13138,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":13012,"nodeType":"FunctionDefinition","src":"6482:406:44","nodes":[],"body":{"id":13011,"nodeType":"Block","src":"6649:239:44","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":12980,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12973,"src":"6663:2:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6666:4:44","memberName":"code","nodeType":"MemberAccess","src":"6663:7:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6671:6:44","memberName":"length","nodeType":"MemberAccess","src":"6663:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":12983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6681:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6663:19:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":13000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6759:49:44","subExpression":{"arguments":[{"id":12995,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12971,"src":"6786:4:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12996,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12973,"src":"6792:2:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12997,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12975,"src":"6796:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12998,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12977,"src":"6803:4:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":12993,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12969,"src":"6760:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$12016","typeString":"contract IERC1363"}},"id":12994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6766:19:44","memberName":"transferFromAndCall","nodeType":"MemberAccess","referencedDeclaration":11993,"src":"6760:25:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) external returns (bool)"}},"id":12999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6760:48:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13009,"nodeType":"IfStatement","src":"6755:127:44","trueBody":{"id":13008,"nodeType":"Block","src":"6810:72:44","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":13004,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12969,"src":"6864:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$12016","typeString":"contract IERC1363"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$12016","typeString":"contract IERC1363"}],"id":13003,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6856:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13002,"name":"address","nodeType":"ElementaryTypeName","src":"6856:7:44","typeDescriptions":{}}},"id":13005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6856:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13001,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12686,"src":"6831:24:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":13006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6831:40:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13007,"nodeType":"RevertStatement","src":"6824:47:44"}]}},"id":13010,"nodeType":"IfStatement","src":"6659:223:44","trueBody":{"id":12992,"nodeType":"Block","src":"6684:65:44","statements":[{"expression":{"arguments":[{"id":12986,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12969,"src":"6715:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$12016","typeString":"contract IERC1363"}},{"id":12987,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12971,"src":"6722:4:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12988,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12973,"src":"6728:2:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12989,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12975,"src":"6732:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$12016","typeString":"contract IERC1363"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12985,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12746,"src":"6698:16:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":12990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6698:40:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12991,"nodeType":"ExpressionStatement","src":"6698:40:44"}]}}]},"documentation":{"id":12966,"nodeType":"StructuredDocumentation","src":"6136:341:44","text":" @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\n has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n targeting contracts.\n Reverts if the returned value is other than `true`."},"implemented":true,"kind":"function","modifiers":[],"name":"transferFromAndCallRelaxed","nameLocation":"6491:26:44","parameters":{"id":12978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12969,"mutability":"mutable","name":"token","nameLocation":"6536:5:44","nodeType":"VariableDeclaration","scope":13012,"src":"6527:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$12016","typeString":"contract IERC1363"},"typeName":{"id":12968,"nodeType":"UserDefinedTypeName","pathNode":{"id":12967,"name":"IERC1363","nameLocations":["6527:8:44"],"nodeType":"IdentifierPath","referencedDeclaration":12016,"src":"6527:8:44"},"referencedDeclaration":12016,"src":"6527:8:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$12016","typeString":"contract IERC1363"}},"visibility":"internal"},{"constant":false,"id":12971,"mutability":"mutable","name":"from","nameLocation":"6559:4:44","nodeType":"VariableDeclaration","scope":13012,"src":"6551:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12970,"name":"address","nodeType":"ElementaryTypeName","src":"6551:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12973,"mutability":"mutable","name":"to","nameLocation":"6581:2:44","nodeType":"VariableDeclaration","scope":13012,"src":"6573:10:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12972,"name":"address","nodeType":"ElementaryTypeName","src":"6573:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12975,"mutability":"mutable","name":"value","nameLocation":"6601:5:44","nodeType":"VariableDeclaration","scope":13012,"src":"6593:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12974,"name":"uint256","nodeType":"ElementaryTypeName","src":"6593:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12977,"mutability":"mutable","name":"data","nameLocation":"6629:4:44","nodeType":"VariableDeclaration","scope":13012,"src":"6616:17:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12976,"name":"bytes","nodeType":"ElementaryTypeName","src":"6616:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6517:122:44"},"returnParameters":{"id":12979,"nodeType":"ParameterList","parameters":[],"src":"6649:0:44"},"scope":13138,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":13055,"nodeType":"FunctionDefinition","src":"7553:320:44","nodes":[],"body":{"id":13054,"nodeType":"Block","src":"7655:218:44","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":13025,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13018,"src":"7669:2:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7672:4:44","memberName":"code","nodeType":"MemberAccess","src":"7669:7:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7677:6:44","memberName":"length","nodeType":"MemberAccess","src":"7669:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7687:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7669:19:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":13043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7755:38:44","subExpression":{"arguments":[{"id":13039,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13018,"src":"7777:2:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13040,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13020,"src":"7781:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13041,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13022,"src":"7788:4:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":13037,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13016,"src":"7756:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$12016","typeString":"contract IERC1363"}},"id":13038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7762:14:44","memberName":"approveAndCall","nodeType":"MemberAccess","referencedDeclaration":12015,"src":"7756:20:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,bytes memory) external returns (bool)"}},"id":13042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7756:37:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13052,"nodeType":"IfStatement","src":"7751:116:44","trueBody":{"id":13051,"nodeType":"Block","src":"7795:72:44","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":13047,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13016,"src":"7849:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$12016","typeString":"contract IERC1363"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$12016","typeString":"contract IERC1363"}],"id":13046,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7841:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13045,"name":"address","nodeType":"ElementaryTypeName","src":"7841:7:44","typeDescriptions":{}}},"id":13048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7841:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13044,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12686,"src":"7816:24:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":13049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:40:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13050,"nodeType":"RevertStatement","src":"7809:47:44"}]}},"id":13053,"nodeType":"IfStatement","src":"7665:202:44","trueBody":{"id":13036,"nodeType":"Block","src":"7690:55:44","statements":[{"expression":{"arguments":[{"id":13031,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13016,"src":"7717:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$12016","typeString":"contract IERC1363"}},{"id":13032,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13018,"src":"7724:2:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13033,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13020,"src":"7728:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$12016","typeString":"contract IERC1363"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13030,"name":"forceApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12922,"src":"7704:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$12648_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":13034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7704:30:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13035,"nodeType":"ExpressionStatement","src":"7704:30:44"}]}}]},"documentation":{"id":13013,"nodeType":"StructuredDocumentation","src":"6894:654:44","text":" @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\n code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n targeting contracts.\n NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\n Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\n once without retrying, and relies on the returned value to be true.\n Reverts if the returned value is other than `true`."},"implemented":true,"kind":"function","modifiers":[],"name":"approveAndCallRelaxed","nameLocation":"7562:21:44","parameters":{"id":13023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13016,"mutability":"mutable","name":"token","nameLocation":"7593:5:44","nodeType":"VariableDeclaration","scope":13055,"src":"7584:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$12016","typeString":"contract IERC1363"},"typeName":{"id":13015,"nodeType":"UserDefinedTypeName","pathNode":{"id":13014,"name":"IERC1363","nameLocations":["7584:8:44"],"nodeType":"IdentifierPath","referencedDeclaration":12016,"src":"7584:8:44"},"referencedDeclaration":12016,"src":"7584:8:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$12016","typeString":"contract IERC1363"}},"visibility":"internal"},{"constant":false,"id":13018,"mutability":"mutable","name":"to","nameLocation":"7608:2:44","nodeType":"VariableDeclaration","scope":13055,"src":"7600:10:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13017,"name":"address","nodeType":"ElementaryTypeName","src":"7600:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13020,"mutability":"mutable","name":"value","nameLocation":"7620:5:44","nodeType":"VariableDeclaration","scope":13055,"src":"7612:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13019,"name":"uint256","nodeType":"ElementaryTypeName","src":"7612:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13022,"mutability":"mutable","name":"data","nameLocation":"7640:4:44","nodeType":"VariableDeclaration","scope":13055,"src":"7627:17:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13021,"name":"bytes","nodeType":"ElementaryTypeName","src":"7627:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7583:62:44"},"returnParameters":{"id":13024,"nodeType":"ParameterList","parameters":[],"src":"7655:0:44"},"scope":13138,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":13096,"nodeType":"FunctionDefinition","src":"8370:720:44","nodes":[],"body":{"id":13095,"nodeType":"Block","src":"8440:650:44","nodes":[],"statements":[{"assignments":[13065],"declarations":[{"constant":false,"id":13065,"mutability":"mutable","name":"returnSize","nameLocation":"8458:10:44","nodeType":"VariableDeclaration","scope":13095,"src":"8450:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13064,"name":"uint256","nodeType":"ElementaryTypeName","src":"8450:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13066,"nodeType":"VariableDeclarationStatement","src":"8450:18:44"},{"assignments":[13068],"declarations":[{"constant":false,"id":13068,"mutability":"mutable","name":"returnValue","nameLocation":"8486:11:44","nodeType":"VariableDeclaration","scope":13095,"src":"8478:19:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13067,"name":"uint256","nodeType":"ElementaryTypeName","src":"8478:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13069,"nodeType":"VariableDeclarationStatement","src":"8478:19:44"},{"AST":{"nativeSrc":"8532:396:44","nodeType":"YulBlock","src":"8532:396:44","statements":[{"nativeSrc":"8546:75:44","nodeType":"YulVariableDeclaration","src":"8546:75:44","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"8566:3:44","nodeType":"YulIdentifier","src":"8566:3:44"},"nativeSrc":"8566:5:44","nodeType":"YulFunctionCall","src":"8566:5:44"},{"name":"token","nativeSrc":"8573:5:44","nodeType":"YulIdentifier","src":"8573:5:44"},{"kind":"number","nativeSrc":"8580:1:44","nodeType":"YulLiteral","src":"8580:1:44","type":"","value":"0"},{"arguments":[{"name":"data","nativeSrc":"8587:4:44","nodeType":"YulIdentifier","src":"8587:4:44"},{"kind":"number","nativeSrc":"8593:4:44","nodeType":"YulLiteral","src":"8593:4:44","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8583:3:44","nodeType":"YulIdentifier","src":"8583:3:44"},"nativeSrc":"8583:15:44","nodeType":"YulFunctionCall","src":"8583:15:44"},{"arguments":[{"name":"data","nativeSrc":"8606:4:44","nodeType":"YulIdentifier","src":"8606:4:44"}],"functionName":{"name":"mload","nativeSrc":"8600:5:44","nodeType":"YulIdentifier","src":"8600:5:44"},"nativeSrc":"8600:11:44","nodeType":"YulFunctionCall","src":"8600:11:44"},{"kind":"number","nativeSrc":"8613:1:44","nodeType":"YulLiteral","src":"8613:1:44","type":"","value":"0"},{"kind":"number","nativeSrc":"8616:4:44","nodeType":"YulLiteral","src":"8616:4:44","type":"","value":"0x20"}],"functionName":{"name":"call","nativeSrc":"8561:4:44","nodeType":"YulIdentifier","src":"8561:4:44"},"nativeSrc":"8561:60:44","nodeType":"YulFunctionCall","src":"8561:60:44"},"variables":[{"name":"success","nativeSrc":"8550:7:44","nodeType":"YulTypedName","src":"8550:7:44","type":""}]},{"body":{"nativeSrc":"8682:157:44","nodeType":"YulBlock","src":"8682:157:44","statements":[{"nativeSrc":"8700:22:44","nodeType":"YulVariableDeclaration","src":"8700:22:44","value":{"arguments":[{"kind":"number","nativeSrc":"8717:4:44","nodeType":"YulLiteral","src":"8717:4:44","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"8711:5:44","nodeType":"YulIdentifier","src":"8711:5:44"},"nativeSrc":"8711:11:44","nodeType":"YulFunctionCall","src":"8711:11:44"},"variables":[{"name":"ptr","nativeSrc":"8704:3:44","nodeType":"YulTypedName","src":"8704:3:44","type":""}]},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"8754:3:44","nodeType":"YulIdentifier","src":"8754:3:44"},{"kind":"number","nativeSrc":"8759:1:44","nodeType":"YulLiteral","src":"8759:1:44","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"8762:14:44","nodeType":"YulIdentifier","src":"8762:14:44"},"nativeSrc":"8762:16:44","nodeType":"YulFunctionCall","src":"8762:16:44"}],"functionName":{"name":"returndatacopy","nativeSrc":"8739:14:44","nodeType":"YulIdentifier","src":"8739:14:44"},"nativeSrc":"8739:40:44","nodeType":"YulFunctionCall","src":"8739:40:44"},"nativeSrc":"8739:40:44","nodeType":"YulExpressionStatement","src":"8739:40:44"},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"8803:3:44","nodeType":"YulIdentifier","src":"8803:3:44"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"8808:14:44","nodeType":"YulIdentifier","src":"8808:14:44"},"nativeSrc":"8808:16:44","nodeType":"YulFunctionCall","src":"8808:16:44"}],"functionName":{"name":"revert","nativeSrc":"8796:6:44","nodeType":"YulIdentifier","src":"8796:6:44"},"nativeSrc":"8796:29:44","nodeType":"YulFunctionCall","src":"8796:29:44"},"nativeSrc":"8796:29:44","nodeType":"YulExpressionStatement","src":"8796:29:44"}]},"condition":{"arguments":[{"name":"success","nativeSrc":"8673:7:44","nodeType":"YulIdentifier","src":"8673:7:44"}],"functionName":{"name":"iszero","nativeSrc":"8666:6:44","nodeType":"YulIdentifier","src":"8666:6:44"},"nativeSrc":"8666:15:44","nodeType":"YulFunctionCall","src":"8666:15:44"},"nativeSrc":"8663:176:44","nodeType":"YulIf","src":"8663:176:44"},{"nativeSrc":"8852:30:44","nodeType":"YulAssignment","src":"8852:30:44","value":{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"8866:14:44","nodeType":"YulIdentifier","src":"8866:14:44"},"nativeSrc":"8866:16:44","nodeType":"YulFunctionCall","src":"8866:16:44"},"variableNames":[{"name":"returnSize","nativeSrc":"8852:10:44","nodeType":"YulIdentifier","src":"8852:10:44"}]},{"nativeSrc":"8895:23:44","nodeType":"YulAssignment","src":"8895:23:44","value":{"arguments":[{"kind":"number","nativeSrc":"8916:1:44","nodeType":"YulLiteral","src":"8916:1:44","type":"","value":"0"}],"functionName":{"name":"mload","nativeSrc":"8910:5:44","nodeType":"YulIdentifier","src":"8910:5:44"},"nativeSrc":"8910:8:44","nodeType":"YulFunctionCall","src":"8910:8:44"},"variableNames":[{"name":"returnValue","nativeSrc":"8895:11:44","nodeType":"YulIdentifier","src":"8895:11:44"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":13061,"isOffset":false,"isSlot":false,"src":"8587:4:44","valueSize":1},{"declaration":13061,"isOffset":false,"isSlot":false,"src":"8606:4:44","valueSize":1},{"declaration":13065,"isOffset":false,"isSlot":false,"src":"8852:10:44","valueSize":1},{"declaration":13068,"isOffset":false,"isSlot":false,"src":"8895:11:44","valueSize":1},{"declaration":13059,"isOffset":false,"isSlot":false,"src":"8573:5:44","valueSize":1}],"flags":["memory-safe"],"id":13070,"nodeType":"InlineAssembly","src":"8507:421:44"},{"condition":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13071,"name":"returnSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13065,"src":"8942:10:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8956:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8942:15:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13082,"name":"returnValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13068,"src":"8994:11:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"31","id":13083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9009:1:44","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8994:16:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8942:68:44","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"arguments":[{"id":13076,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13059,"src":"8968:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}],"id":13075,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8960:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13074,"name":"address","nodeType":"ElementaryTypeName","src":"8960:7:44","typeDescriptions":{}}},"id":13077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8960:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8975:4:44","memberName":"code","nodeType":"MemberAccess","src":"8960:19:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8980:6:44","memberName":"length","nodeType":"MemberAccess","src":"8960:26:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8990:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8960:31:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13094,"nodeType":"IfStatement","src":"8938:146:44","trueBody":{"id":13093,"nodeType":"Block","src":"9012:72:44","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":13089,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13059,"src":"9066:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}],"id":13088,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9058:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13087,"name":"address","nodeType":"ElementaryTypeName","src":"9058:7:44","typeDescriptions":{}}},"id":13090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9058:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13086,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12686,"src":"9033:24:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":13091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9033:40:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13092,"nodeType":"RevertStatement","src":"9026:47:44"}]}}]},"documentation":{"id":13056,"nodeType":"StructuredDocumentation","src":"7879:486:44","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 @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants).\n This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements."},"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturn","nameLocation":"8379:19:44","parameters":{"id":13062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13059,"mutability":"mutable","name":"token","nameLocation":"8406:5:44","nodeType":"VariableDeclaration","scope":13096,"src":"8399:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"},"typeName":{"id":13058,"nodeType":"UserDefinedTypeName","pathNode":{"id":13057,"name":"IERC20","nameLocations":["8399:6:44"],"nodeType":"IdentifierPath","referencedDeclaration":12648,"src":"8399:6:44"},"referencedDeclaration":12648,"src":"8399:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":13061,"mutability":"mutable","name":"data","nameLocation":"8426:4:44","nodeType":"VariableDeclaration","scope":13096,"src":"8413:17:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13060,"name":"bytes","nodeType":"ElementaryTypeName","src":"8413:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8398:33:44"},"returnParameters":{"id":13063,"nodeType":"ParameterList","parameters":[],"src":"8440:0:44"},"scope":13138,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":13137,"nodeType":"FunctionDefinition","src":"9592:480:44","nodes":[],"body":{"id":13136,"nodeType":"Block","src":"9681:391:44","nodes":[],"statements":[{"assignments":[13108],"declarations":[{"constant":false,"id":13108,"mutability":"mutable","name":"success","nameLocation":"9696:7:44","nodeType":"VariableDeclaration","scope":13136,"src":"9691:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13107,"name":"bool","nodeType":"ElementaryTypeName","src":"9691:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":13109,"nodeType":"VariableDeclarationStatement","src":"9691:12:44"},{"assignments":[13111],"declarations":[{"constant":false,"id":13111,"mutability":"mutable","name":"returnSize","nameLocation":"9721:10:44","nodeType":"VariableDeclaration","scope":13136,"src":"9713:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13110,"name":"uint256","nodeType":"ElementaryTypeName","src":"9713:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13112,"nodeType":"VariableDeclarationStatement","src":"9713:18:44"},{"assignments":[13114],"declarations":[{"constant":false,"id":13114,"mutability":"mutable","name":"returnValue","nameLocation":"9749:11:44","nodeType":"VariableDeclaration","scope":13136,"src":"9741:19:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13113,"name":"uint256","nodeType":"ElementaryTypeName","src":"9741:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13115,"nodeType":"VariableDeclarationStatement","src":"9741:19:44"},{"AST":{"nativeSrc":"9795:174:44","nodeType":"YulBlock","src":"9795:174:44","statements":[{"nativeSrc":"9809:71:44","nodeType":"YulAssignment","src":"9809:71:44","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"9825:3:44","nodeType":"YulIdentifier","src":"9825:3:44"},"nativeSrc":"9825:5:44","nodeType":"YulFunctionCall","src":"9825:5:44"},{"name":"token","nativeSrc":"9832:5:44","nodeType":"YulIdentifier","src":"9832:5:44"},{"kind":"number","nativeSrc":"9839:1:44","nodeType":"YulLiteral","src":"9839:1:44","type":"","value":"0"},{"arguments":[{"name":"data","nativeSrc":"9846:4:44","nodeType":"YulIdentifier","src":"9846:4:44"},{"kind":"number","nativeSrc":"9852:4:44","nodeType":"YulLiteral","src":"9852:4:44","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9842:3:44","nodeType":"YulIdentifier","src":"9842:3:44"},"nativeSrc":"9842:15:44","nodeType":"YulFunctionCall","src":"9842:15:44"},{"arguments":[{"name":"data","nativeSrc":"9865:4:44","nodeType":"YulIdentifier","src":"9865:4:44"}],"functionName":{"name":"mload","nativeSrc":"9859:5:44","nodeType":"YulIdentifier","src":"9859:5:44"},"nativeSrc":"9859:11:44","nodeType":"YulFunctionCall","src":"9859:11:44"},{"kind":"number","nativeSrc":"9872:1:44","nodeType":"YulLiteral","src":"9872:1:44","type":"","value":"0"},{"kind":"number","nativeSrc":"9875:4:44","nodeType":"YulLiteral","src":"9875:4:44","type":"","value":"0x20"}],"functionName":{"name":"call","nativeSrc":"9820:4:44","nodeType":"YulIdentifier","src":"9820:4:44"},"nativeSrc":"9820:60:44","nodeType":"YulFunctionCall","src":"9820:60:44"},"variableNames":[{"name":"success","nativeSrc":"9809:7:44","nodeType":"YulIdentifier","src":"9809:7:44"}]},{"nativeSrc":"9893:30:44","nodeType":"YulAssignment","src":"9893:30:44","value":{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"9907:14:44","nodeType":"YulIdentifier","src":"9907:14:44"},"nativeSrc":"9907:16:44","nodeType":"YulFunctionCall","src":"9907:16:44"},"variableNames":[{"name":"returnSize","nativeSrc":"9893:10:44","nodeType":"YulIdentifier","src":"9893:10:44"}]},{"nativeSrc":"9936:23:44","nodeType":"YulAssignment","src":"9936:23:44","value":{"arguments":[{"kind":"number","nativeSrc":"9957:1:44","nodeType":"YulLiteral","src":"9957:1:44","type":"","value":"0"}],"functionName":{"name":"mload","nativeSrc":"9951:5:44","nodeType":"YulIdentifier","src":"9951:5:44"},"nativeSrc":"9951:8:44","nodeType":"YulFunctionCall","src":"9951:8:44"},"variableNames":[{"name":"returnValue","nativeSrc":"9936:11:44","nodeType":"YulIdentifier","src":"9936:11:44"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":13102,"isOffset":false,"isSlot":false,"src":"9846:4:44","valueSize":1},{"declaration":13102,"isOffset":false,"isSlot":false,"src":"9865:4:44","valueSize":1},{"declaration":13111,"isOffset":false,"isSlot":false,"src":"9893:10:44","valueSize":1},{"declaration":13114,"isOffset":false,"isSlot":false,"src":"9936:11:44","valueSize":1},{"declaration":13108,"isOffset":false,"isSlot":false,"src":"9809:7:44","valueSize":1},{"declaration":13100,"isOffset":false,"isSlot":false,"src":"9832:5:44","valueSize":1}],"flags":["memory-safe"],"id":13116,"nodeType":"InlineAssembly","src":"9770:199:44"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13117,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13108,"src":"9985:7:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13118,"name":"returnSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13111,"src":"9997:10:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10011:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9997:15:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13129,"name":"returnValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13114,"src":"10048:11:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":13130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10063:1:44","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10048:16:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9997:67:44","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"arguments":[{"id":13123,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13100,"src":"10023:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}],"id":13122,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10015:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13121,"name":"address","nodeType":"ElementaryTypeName","src":"10015:7:44","typeDescriptions":{}}},"id":13124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10015:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10030:4:44","memberName":"code","nodeType":"MemberAccess","src":"10015:19:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10035:6:44","memberName":"length","nodeType":"MemberAccess","src":"10015:26:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10044:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10015:30:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":13133,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9996:69:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9985:80:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13106,"id":13135,"nodeType":"Return","src":"9978:87:44"}]},"documentation":{"id":13097,"nodeType":"StructuredDocumentation","src":"9096:491:44","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 @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants).\n This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead."},"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturnBool","nameLocation":"9601:23:44","parameters":{"id":13103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13100,"mutability":"mutable","name":"token","nameLocation":"9632:5:44","nodeType":"VariableDeclaration","scope":13137,"src":"9625:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"},"typeName":{"id":13099,"nodeType":"UserDefinedTypeName","pathNode":{"id":13098,"name":"IERC20","nameLocations":["9625:6:44"],"nodeType":"IdentifierPath","referencedDeclaration":12648,"src":"9625:6:44"},"referencedDeclaration":12648,"src":"9625:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$12648","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":13102,"mutability":"mutable","name":"data","nameLocation":"9652:4:44","nodeType":"VariableDeclaration","scope":13137,"src":"9639:17:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13101,"name":"bytes","nodeType":"ElementaryTypeName","src":"9639:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9624:33:44"},"returnParameters":{"id":13106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13105,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13137,"src":"9675:4:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13104,"name":"bool","nodeType":"ElementaryTypeName","src":"9675:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9674:6:44"},"scope":13138,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[],"canonicalName":"SafeERC20","contractDependencies":[],"contractKind":"library","documentation":{"id":12681,"nodeType":"StructuredDocumentation","src":"239:458:44","text":" @title SafeERC20\n @dev Wrappers around ERC-20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."},"fullyImplemented":true,"linearizedBaseContracts":[13138],"name":"SafeERC20","nameLocation":"706:9:44","scope":13139,"usedErrors":[12686,12695],"usedEvents":[]}],"license":"MIT"}},"node_modules/@openzeppelin/contracts/utils/Address.sol":{"id":45,"ast":{"absolutePath":"node_modules/@openzeppelin/contracts/utils/Address.sol","id":13399,"exportedSymbols":{"Address":[13398],"Errors":[13450]},"nodeType":"SourceUnit","src":"101:5895:45","nodes":[{"id":13140,"nodeType":"PragmaDirective","src":"101:24:45","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":13142,"nodeType":"ImportDirective","src":"127:36:45","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/utils/Errors.sol","file":"./Errors.sol","nameLocation":"-1:-1:-1","scope":13399,"sourceUnit":13451,"symbolAliases":[{"foreign":{"id":13141,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13450,"src":"135:6:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":13398,"nodeType":"ContractDefinition","src":"233:5762:45","nodes":[{"id":13148,"nodeType":"ErrorDefinition","src":"335:39:45","nodes":[],"documentation":{"id":13144,"nodeType":"StructuredDocumentation","src":"255:75:45","text":" @dev There's no code at `target` (it is not a contract)."},"errorSelector":"9996b315","name":"AddressEmptyCode","nameLocation":"341:16:45","parameters":{"id":13147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13146,"mutability":"mutable","name":"target","nameLocation":"366:6:45","nodeType":"VariableDeclaration","scope":13148,"src":"358:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13145,"name":"address","nodeType":"ElementaryTypeName","src":"358:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"357:16:45"}},{"id":13196,"nodeType":"FunctionDefinition","src":"1290:365:45","nodes":[],"body":{"id":13195,"nodeType":"Block","src":"1361:294:45","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":13158,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1383:4:45","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$13398","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$13398","typeString":"library Address"}],"id":13157,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1375:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13156,"name":"address","nodeType":"ElementaryTypeName","src":"1375:7:45","typeDescriptions":{}}},"id":13159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1375:13:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1389:7:45","memberName":"balance","nodeType":"MemberAccess","src":"1375:21:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13161,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13153,"src":"1399:6:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1375:30:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13175,"nodeType":"IfStatement","src":"1371:125:45","trueBody":{"id":13174,"nodeType":"Block","src":"1407:89:45","statements":[{"errorCall":{"arguments":[{"expression":{"arguments":[{"id":13168,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1463:4:45","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$13398","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$13398","typeString":"library Address"}],"id":13167,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1455:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13166,"name":"address","nodeType":"ElementaryTypeName","src":"1455:7:45","typeDescriptions":{}}},"id":13169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1455:13:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1469:7:45","memberName":"balance","nodeType":"MemberAccess","src":"1455:21:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13171,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13153,"src":"1478:6:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13163,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13450,"src":"1428:6:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$13450_$","typeString":"type(library Errors)"}},"id":13165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1435:19:45","memberName":"InsufficientBalance","nodeType":"MemberAccess","referencedDeclaration":13438,"src":"1428:26:45","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":13172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1428:57:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13173,"nodeType":"RevertStatement","src":"1421:64:45"}]}},{"assignments":[13177,13179],"declarations":[{"constant":false,"id":13177,"mutability":"mutable","name":"success","nameLocation":"1512:7:45","nodeType":"VariableDeclaration","scope":13195,"src":"1507:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13176,"name":"bool","nodeType":"ElementaryTypeName","src":"1507:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":13179,"mutability":"mutable","name":"returndata","nameLocation":"1534:10:45","nodeType":"VariableDeclaration","scope":13195,"src":"1521:23:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13178,"name":"bytes","nodeType":"ElementaryTypeName","src":"1521:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":13186,"initialValue":{"arguments":[{"hexValue":"","id":13184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1578:2:45","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":13180,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13151,"src":"1548:9:45","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":13181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1558:4:45","memberName":"call","nodeType":"MemberAccess","src":"1548:14:45","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":13183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":13182,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13153,"src":"1570:6:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"1548:29:45","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":13185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1548:33:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1506:75:45"},{"condition":{"id":13188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1595:8:45","subExpression":{"id":13187,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13177,"src":"1596:7:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13194,"nodeType":"IfStatement","src":"1591:58:45","trueBody":{"id":13193,"nodeType":"Block","src":"1605:44:45","statements":[{"expression":{"arguments":[{"id":13190,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13179,"src":"1627:10:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":13189,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13397,"src":"1619:7:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":13191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1619:19:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13192,"nodeType":"ExpressionStatement","src":"1619:19:45"}]}}]},"documentation":{"id":13149,"nodeType":"StructuredDocumentation","src":"380:905:45","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://consensys.net/diligence/blog/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.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"1299:9:45","parameters":{"id":13154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13151,"mutability":"mutable","name":"recipient","nameLocation":"1325:9:45","nodeType":"VariableDeclaration","scope":13196,"src":"1309:25:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":13150,"name":"address","nodeType":"ElementaryTypeName","src":"1309:15:45","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":13153,"mutability":"mutable","name":"amount","nameLocation":"1344:6:45","nodeType":"VariableDeclaration","scope":13196,"src":"1336:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13152,"name":"uint256","nodeType":"ElementaryTypeName","src":"1336:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1308:43:45"},"returnParameters":{"id":13155,"nodeType":"ParameterList","parameters":[],"src":"1361:0:45"},"scope":13398,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":13213,"nodeType":"FunctionDefinition","src":"2500:151:45","nodes":[],"body":{"id":13212,"nodeType":"Block","src":"2589:62:45","nodes":[],"statements":[{"expression":{"arguments":[{"id":13207,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13199,"src":"2628:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13208,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13201,"src":"2636:4:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":13209,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2642:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":13206,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13263,"src":"2606:21:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256) returns (bytes memory)"}},"id":13210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2606:38:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":13205,"id":13211,"nodeType":"Return","src":"2599:45:45"}]},"documentation":{"id":13197,"nodeType":"StructuredDocumentation","src":"1661:834:45","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 or custom error, it is bubbled\n up by this function (like regular Solidity function calls). However, if\n the call reverted with no returned reason, this function reverts with a\n {Errors.FailedCall} error.\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 - `target` must be a contract.\n - calling `target` with `data` must not revert."},"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"2509:12:45","parameters":{"id":13202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13199,"mutability":"mutable","name":"target","nameLocation":"2530:6:45","nodeType":"VariableDeclaration","scope":13213,"src":"2522:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13198,"name":"address","nodeType":"ElementaryTypeName","src":"2522:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13201,"mutability":"mutable","name":"data","nameLocation":"2551:4:45","nodeType":"VariableDeclaration","scope":13213,"src":"2538:17:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13200,"name":"bytes","nodeType":"ElementaryTypeName","src":"2538:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2521:35:45"},"returnParameters":{"id":13205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13204,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13213,"src":"2575:12:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13203,"name":"bytes","nodeType":"ElementaryTypeName","src":"2575:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2574:14:45"},"scope":13398,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":13263,"nodeType":"FunctionDefinition","src":"2975:407:45","nodes":[],"body":{"id":13262,"nodeType":"Block","src":"3088:294:45","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":13227,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3110:4:45","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$13398","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$13398","typeString":"library Address"}],"id":13226,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3102:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13225,"name":"address","nodeType":"ElementaryTypeName","src":"3102:7:45","typeDescriptions":{}}},"id":13228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3102:13:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3116:7:45","memberName":"balance","nodeType":"MemberAccess","src":"3102:21:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13230,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13220,"src":"3126:5:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3102:29:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13244,"nodeType":"IfStatement","src":"3098:123:45","trueBody":{"id":13243,"nodeType":"Block","src":"3133:88:45","statements":[{"errorCall":{"arguments":[{"expression":{"arguments":[{"id":13237,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3189:4:45","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$13398","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$13398","typeString":"library Address"}],"id":13236,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3181:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13235,"name":"address","nodeType":"ElementaryTypeName","src":"3181:7:45","typeDescriptions":{}}},"id":13238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3181:13:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3195:7:45","memberName":"balance","nodeType":"MemberAccess","src":"3181:21:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13240,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13220,"src":"3204:5:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13232,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13450,"src":"3154:6:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$13450_$","typeString":"type(library Errors)"}},"id":13234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3161:19:45","memberName":"InsufficientBalance","nodeType":"MemberAccess","referencedDeclaration":13438,"src":"3154:26:45","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":13241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3154:56:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13242,"nodeType":"RevertStatement","src":"3147:63:45"}]}},{"assignments":[13246,13248],"declarations":[{"constant":false,"id":13246,"mutability":"mutable","name":"success","nameLocation":"3236:7:45","nodeType":"VariableDeclaration","scope":13262,"src":"3231:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13245,"name":"bool","nodeType":"ElementaryTypeName","src":"3231:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":13248,"mutability":"mutable","name":"returndata","nameLocation":"3258:10:45","nodeType":"VariableDeclaration","scope":13262,"src":"3245:23:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13247,"name":"bytes","nodeType":"ElementaryTypeName","src":"3245:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":13255,"initialValue":{"arguments":[{"id":13253,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13218,"src":"3298:4:45","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":13249,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13216,"src":"3272:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3279:4:45","memberName":"call","nodeType":"MemberAccess","src":"3272:11:45","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":13252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":13251,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13220,"src":"3291:5:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3272:25:45","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":13254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3272:31:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3230:73:45"},{"expression":{"arguments":[{"id":13257,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13216,"src":"3347:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13258,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13246,"src":"3355:7:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":13259,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13248,"src":"3364:10:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":13256,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13355,"src":"3320:26:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":13260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3320:55:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":13224,"id":13261,"nodeType":"Return","src":"3313:62:45"}]},"documentation":{"id":13214,"nodeType":"StructuredDocumentation","src":"2657:313:45","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`."},"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"2984:21:45","parameters":{"id":13221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13216,"mutability":"mutable","name":"target","nameLocation":"3014:6:45","nodeType":"VariableDeclaration","scope":13263,"src":"3006:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13215,"name":"address","nodeType":"ElementaryTypeName","src":"3006:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13218,"mutability":"mutable","name":"data","nameLocation":"3035:4:45","nodeType":"VariableDeclaration","scope":13263,"src":"3022:17:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13217,"name":"bytes","nodeType":"ElementaryTypeName","src":"3022:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":13220,"mutability":"mutable","name":"value","nameLocation":"3049:5:45","nodeType":"VariableDeclaration","scope":13263,"src":"3041:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13219,"name":"uint256","nodeType":"ElementaryTypeName","src":"3041:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3005:50:45"},"returnParameters":{"id":13224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13223,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13263,"src":"3074:12:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13222,"name":"bytes","nodeType":"ElementaryTypeName","src":"3074:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3073:14:45"},"scope":13398,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":13289,"nodeType":"FunctionDefinition","src":"3521:254:45","nodes":[],"body":{"id":13288,"nodeType":"Block","src":"3621:154:45","nodes":[],"statements":[{"assignments":[13274,13276],"declarations":[{"constant":false,"id":13274,"mutability":"mutable","name":"success","nameLocation":"3637:7:45","nodeType":"VariableDeclaration","scope":13288,"src":"3632:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13273,"name":"bool","nodeType":"ElementaryTypeName","src":"3632:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":13276,"mutability":"mutable","name":"returndata","nameLocation":"3659:10:45","nodeType":"VariableDeclaration","scope":13288,"src":"3646:23:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13275,"name":"bytes","nodeType":"ElementaryTypeName","src":"3646:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":13281,"initialValue":{"arguments":[{"id":13279,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13268,"src":"3691:4:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":13277,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13266,"src":"3673:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3680:10:45","memberName":"staticcall","nodeType":"MemberAccess","src":"3673:17:45","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":13280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3673:23:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3631:65:45"},{"expression":{"arguments":[{"id":13283,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13266,"src":"3740:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13284,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13274,"src":"3748:7:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":13285,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13276,"src":"3757:10:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":13282,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13355,"src":"3713:26:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":13286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3713:55:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":13272,"id":13287,"nodeType":"Return","src":"3706:62:45"}]},"documentation":{"id":13264,"nodeType":"StructuredDocumentation","src":"3388:128:45","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call."},"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"3530:18:45","parameters":{"id":13269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13266,"mutability":"mutable","name":"target","nameLocation":"3557:6:45","nodeType":"VariableDeclaration","scope":13289,"src":"3549:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13265,"name":"address","nodeType":"ElementaryTypeName","src":"3549:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13268,"mutability":"mutable","name":"data","nameLocation":"3578:4:45","nodeType":"VariableDeclaration","scope":13289,"src":"3565:17:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13267,"name":"bytes","nodeType":"ElementaryTypeName","src":"3565:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3548:35:45"},"returnParameters":{"id":13272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13271,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13289,"src":"3607:12:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13270,"name":"bytes","nodeType":"ElementaryTypeName","src":"3607:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3606:14:45"},"scope":13398,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":13315,"nodeType":"FunctionDefinition","src":"3916:253:45","nodes":[],"body":{"id":13314,"nodeType":"Block","src":"4013:156:45","nodes":[],"statements":[{"assignments":[13300,13302],"declarations":[{"constant":false,"id":13300,"mutability":"mutable","name":"success","nameLocation":"4029:7:45","nodeType":"VariableDeclaration","scope":13314,"src":"4024:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13299,"name":"bool","nodeType":"ElementaryTypeName","src":"4024:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":13302,"mutability":"mutable","name":"returndata","nameLocation":"4051:10:45","nodeType":"VariableDeclaration","scope":13314,"src":"4038:23:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13301,"name":"bytes","nodeType":"ElementaryTypeName","src":"4038:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":13307,"initialValue":{"arguments":[{"id":13305,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13294,"src":"4085:4:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":13303,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13292,"src":"4065:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4072:12:45","memberName":"delegatecall","nodeType":"MemberAccess","src":"4065:19:45","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":13306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4065:25:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4023:67:45"},{"expression":{"arguments":[{"id":13309,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13292,"src":"4134:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13310,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13300,"src":"4142:7:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":13311,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13302,"src":"4151:10:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":13308,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13355,"src":"4107:26:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":13312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4107:55:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":13298,"id":13313,"nodeType":"Return","src":"4100:62:45"}]},"documentation":{"id":13290,"nodeType":"StructuredDocumentation","src":"3781:130:45","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call."},"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"3925:20:45","parameters":{"id":13295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13292,"mutability":"mutable","name":"target","nameLocation":"3954:6:45","nodeType":"VariableDeclaration","scope":13315,"src":"3946:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13291,"name":"address","nodeType":"ElementaryTypeName","src":"3946:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13294,"mutability":"mutable","name":"data","nameLocation":"3975:4:45","nodeType":"VariableDeclaration","scope":13315,"src":"3962:17:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13293,"name":"bytes","nodeType":"ElementaryTypeName","src":"3962:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3945:35:45"},"returnParameters":{"id":13298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13297,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13315,"src":"3999:12:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13296,"name":"bytes","nodeType":"ElementaryTypeName","src":"3999:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3998:14:45"},"scope":13398,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":13355,"nodeType":"FunctionDefinition","src":"4437:582:45","nodes":[],"body":{"id":13354,"nodeType":"Block","src":"4595:424:45","nodes":[],"statements":[{"condition":{"id":13328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4609:8:45","subExpression":{"id":13327,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13320,"src":"4610:7:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13352,"nodeType":"Block","src":"4669:344:45","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13334,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13322,"src":"4857:10:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4868:6:45","memberName":"length","nodeType":"MemberAccess","src":"4857:17:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4878:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4857:22:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":13338,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13318,"src":"4883:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4890:4:45","memberName":"code","nodeType":"MemberAccess","src":"4883:11:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4895:6:45","memberName":"length","nodeType":"MemberAccess","src":"4883:18:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4905:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4883:23:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4857:49:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13349,"nodeType":"IfStatement","src":"4853:119:45","trueBody":{"id":13348,"nodeType":"Block","src":"4908:64:45","statements":[{"errorCall":{"arguments":[{"id":13345,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13318,"src":"4950:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13344,"name":"AddressEmptyCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13148,"src":"4933:16:45","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":13346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4933:24:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13347,"nodeType":"RevertStatement","src":"4926:31:45"}]}},{"expression":{"id":13350,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13322,"src":"4992:10:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":13326,"id":13351,"nodeType":"Return","src":"4985:17:45"}]},"id":13353,"nodeType":"IfStatement","src":"4605:408:45","trueBody":{"id":13333,"nodeType":"Block","src":"4619:44:45","statements":[{"expression":{"arguments":[{"id":13330,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13322,"src":"4641:10:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":13329,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13397,"src":"4633:7:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":13331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4633:19:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13332,"nodeType":"ExpressionStatement","src":"4633:19:45"}]}}]},"documentation":{"id":13316,"nodeType":"StructuredDocumentation","src":"4175:257:45","text":" @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n was not a contract or bubbling up the revert reason (falling back to {Errors.FailedCall}) in case\n of an unsuccessful call."},"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"4446:26:45","parameters":{"id":13323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13318,"mutability":"mutable","name":"target","nameLocation":"4490:6:45","nodeType":"VariableDeclaration","scope":13355,"src":"4482:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13317,"name":"address","nodeType":"ElementaryTypeName","src":"4482:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13320,"mutability":"mutable","name":"success","nameLocation":"4511:7:45","nodeType":"VariableDeclaration","scope":13355,"src":"4506:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13319,"name":"bool","nodeType":"ElementaryTypeName","src":"4506:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":13322,"mutability":"mutable","name":"returndata","nameLocation":"4541:10:45","nodeType":"VariableDeclaration","scope":13355,"src":"4528:23:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13321,"name":"bytes","nodeType":"ElementaryTypeName","src":"4528:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4472:85:45"},"returnParameters":{"id":13326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13325,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13355,"src":"4581:12:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13324,"name":"bytes","nodeType":"ElementaryTypeName","src":"4581:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4580:14:45"},"scope":13398,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":13377,"nodeType":"FunctionDefinition","src":"5221:224:45","nodes":[],"body":{"id":13376,"nodeType":"Block","src":"5323:122:45","nodes":[],"statements":[{"condition":{"id":13366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5337:8:45","subExpression":{"id":13365,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13358,"src":"5338:7:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13374,"nodeType":"Block","src":"5397:42:45","statements":[{"expression":{"id":13372,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13360,"src":"5418:10:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":13364,"id":13373,"nodeType":"Return","src":"5411:17:45"}]},"id":13375,"nodeType":"IfStatement","src":"5333:106:45","trueBody":{"id":13371,"nodeType":"Block","src":"5347:44:45","statements":[{"expression":{"arguments":[{"id":13368,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13360,"src":"5369:10:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":13367,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13397,"src":"5361:7:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":13369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5361:19:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13370,"nodeType":"ExpressionStatement","src":"5361:19:45"}]}}]},"documentation":{"id":13356,"nodeType":"StructuredDocumentation","src":"5025:191:45","text":" @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n revert reason or with a default {Errors.FailedCall} error."},"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"5230:16:45","parameters":{"id":13361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13358,"mutability":"mutable","name":"success","nameLocation":"5252:7:45","nodeType":"VariableDeclaration","scope":13377,"src":"5247:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13357,"name":"bool","nodeType":"ElementaryTypeName","src":"5247:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":13360,"mutability":"mutable","name":"returndata","nameLocation":"5274:10:45","nodeType":"VariableDeclaration","scope":13377,"src":"5261:23:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13359,"name":"bytes","nodeType":"ElementaryTypeName","src":"5261:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5246:39:45"},"returnParameters":{"id":13364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13363,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13377,"src":"5309:12:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13362,"name":"bytes","nodeType":"ElementaryTypeName","src":"5309:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5308:14:45"},"scope":13398,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":13397,"nodeType":"FunctionDefinition","src":"5559:434:45","nodes":[],"body":{"id":13396,"nodeType":"Block","src":"5614:379:45","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13383,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13380,"src":"5690:10:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5701:6:45","memberName":"length","nodeType":"MemberAccess","src":"5690:17:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5710:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5690:21:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13394,"nodeType":"Block","src":"5936:51:45","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13389,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13450,"src":"5957:6:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$13450_$","typeString":"type(library Errors)"}},"id":13391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5964:10:45","memberName":"FailedCall","nodeType":"MemberAccess","referencedDeclaration":13441,"src":"5957:17:45","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":13392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5957:19:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13393,"nodeType":"RevertStatement","src":"5950:26:45"}]},"id":13395,"nodeType":"IfStatement","src":"5686:301:45","trueBody":{"id":13388,"nodeType":"Block","src":"5713:217:45","statements":[{"AST":{"nativeSrc":"5840:80:45","nodeType":"YulBlock","src":"5840:80:45","statements":[{"expression":{"arguments":[{"arguments":[{"name":"returndata","nativeSrc":"5869:10:45","nodeType":"YulIdentifier","src":"5869:10:45"},{"kind":"number","nativeSrc":"5881:4:45","nodeType":"YulLiteral","src":"5881:4:45","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5865:3:45","nodeType":"YulIdentifier","src":"5865:3:45"},"nativeSrc":"5865:21:45","nodeType":"YulFunctionCall","src":"5865:21:45"},{"arguments":[{"name":"returndata","nativeSrc":"5894:10:45","nodeType":"YulIdentifier","src":"5894:10:45"}],"functionName":{"name":"mload","nativeSrc":"5888:5:45","nodeType":"YulIdentifier","src":"5888:5:45"},"nativeSrc":"5888:17:45","nodeType":"YulFunctionCall","src":"5888:17:45"}],"functionName":{"name":"revert","nativeSrc":"5858:6:45","nodeType":"YulIdentifier","src":"5858:6:45"},"nativeSrc":"5858:48:45","nodeType":"YulFunctionCall","src":"5858:48:45"},"nativeSrc":"5858:48:45","nodeType":"YulExpressionStatement","src":"5858:48:45"}]},"evmVersion":"prague","externalReferences":[{"declaration":13380,"isOffset":false,"isSlot":false,"src":"5869:10:45","valueSize":1},{"declaration":13380,"isOffset":false,"isSlot":false,"src":"5894:10:45","valueSize":1}],"flags":["memory-safe"],"id":13387,"nodeType":"InlineAssembly","src":"5815:105:45"}]}}]},"documentation":{"id":13378,"nodeType":"StructuredDocumentation","src":"5451:103:45","text":" @dev Reverts with returndata if present. Otherwise reverts with {Errors.FailedCall}."},"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"5568:7:45","parameters":{"id":13381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13380,"mutability":"mutable","name":"returndata","nameLocation":"5589:10:45","nodeType":"VariableDeclaration","scope":13397,"src":"5576:23:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13379,"name":"bytes","nodeType":"ElementaryTypeName","src":"5576:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5575:25:45"},"returnParameters":{"id":13382,"nodeType":"ParameterList","parameters":[],"src":"5614:0:45"},"scope":13398,"stateMutability":"pure","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":13143,"nodeType":"StructuredDocumentation","src":"165:67:45","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"linearizedBaseContracts":[13398],"name":"Address","nameLocation":"241:7:45","scope":13399,"usedErrors":[13148],"usedEvents":[]}],"license":"MIT"}},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"id":46,"ast":{"absolutePath":"node_modules/@openzeppelin/contracts/utils/Context.sol","id":13429,"exportedSymbols":{"Context":[13428]},"nodeType":"SourceUnit","src":"101:862:46","nodes":[{"id":13400,"nodeType":"PragmaDirective","src":"101:24:46","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":13428,"nodeType":"ContractDefinition","src":"624:338:46","nodes":[{"id":13410,"nodeType":"FunctionDefinition","src":"656:96:46","nodes":[],"body":{"id":13409,"nodeType":"Block","src":"718:34:46","nodes":[],"statements":[{"expression":{"expression":{"id":13406,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"735:3:46","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"739:6:46","memberName":"sender","nodeType":"MemberAccess","src":"735:10:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":13405,"id":13408,"nodeType":"Return","src":"728:17:46"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"665:10:46","parameters":{"id":13402,"nodeType":"ParameterList","parameters":[],"src":"675:2:46"},"returnParameters":{"id":13405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13404,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13410,"src":"709:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13403,"name":"address","nodeType":"ElementaryTypeName","src":"709:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"708:9:46"},"scope":13428,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":13419,"nodeType":"FunctionDefinition","src":"758:99:46","nodes":[],"body":{"id":13418,"nodeType":"Block","src":"825:32:46","nodes":[],"statements":[{"expression":{"expression":{"id":13415,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"842:3:46","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"846:4:46","memberName":"data","nodeType":"MemberAccess","src":"842:8:46","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":13414,"id":13417,"nodeType":"Return","src":"835:15:46"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"767:8:46","parameters":{"id":13411,"nodeType":"ParameterList","parameters":[],"src":"775:2:46"},"returnParameters":{"id":13414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13413,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13419,"src":"809:14:46","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":13412,"name":"bytes","nodeType":"ElementaryTypeName","src":"809:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"808:16:46"},"scope":13428,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":13427,"nodeType":"FunctionDefinition","src":"863:97:46","nodes":[],"body":{"id":13426,"nodeType":"Block","src":"935:25:46","nodes":[],"statements":[{"expression":{"hexValue":"30","id":13424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"952:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":13423,"id":13425,"nodeType":"Return","src":"945:8:46"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"872:20:46","parameters":{"id":13420,"nodeType":"ParameterList","parameters":[],"src":"892:2:46"},"returnParameters":{"id":13423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13422,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13427,"src":"926:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13421,"name":"uint256","nodeType":"ElementaryTypeName","src":"926:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"925:9:46"},"scope":13428,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":13401,"nodeType":"StructuredDocumentation","src":"127:496:46","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[13428],"name":"Context","nameLocation":"642:7:46","scope":13429,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"node_modules/@openzeppelin/contracts/utils/Errors.sol":{"id":47,"ast":{"absolutePath":"node_modules/@openzeppelin/contracts/utils/Errors.sol","id":13451,"exportedSymbols":{"Errors":[13450]},"nodeType":"SourceUnit","src":"100:796:47","nodes":[{"id":13430,"nodeType":"PragmaDirective","src":"100:24:47","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":13450,"nodeType":"ContractDefinition","src":"411:484:47","nodes":[{"id":13438,"nodeType":"ErrorDefinition","src":"531:59:47","nodes":[],"documentation":{"id":13432,"nodeType":"StructuredDocumentation","src":"432:94:47","text":" @dev The ETH balance of the account is not enough to perform the operation."},"errorSelector":"cf479181","name":"InsufficientBalance","nameLocation":"537:19:47","parameters":{"id":13437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13434,"mutability":"mutable","name":"balance","nameLocation":"565:7:47","nodeType":"VariableDeclaration","scope":13438,"src":"557:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13433,"name":"uint256","nodeType":"ElementaryTypeName","src":"557:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13436,"mutability":"mutable","name":"needed","nameLocation":"582:6:47","nodeType":"VariableDeclaration","scope":13438,"src":"574:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13435,"name":"uint256","nodeType":"ElementaryTypeName","src":"574:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"556:33:47"}},{"id":13441,"nodeType":"ErrorDefinition","src":"690:19:47","nodes":[],"documentation":{"id":13439,"nodeType":"StructuredDocumentation","src":"596:89:47","text":" @dev A call to an address target failed. The target may have reverted."},"errorSelector":"d6bda275","name":"FailedCall","nameLocation":"696:10:47","parameters":{"id":13440,"nodeType":"ParameterList","parameters":[],"src":"706:2:47"}},{"id":13444,"nodeType":"ErrorDefinition","src":"766:25:47","nodes":[],"documentation":{"id":13442,"nodeType":"StructuredDocumentation","src":"715:46:47","text":" @dev The deployment failed."},"errorSelector":"b06ebf3d","name":"FailedDeployment","nameLocation":"772:16:47","parameters":{"id":13443,"nodeType":"ParameterList","parameters":[],"src":"788:2:47"}},{"id":13449,"nodeType":"ErrorDefinition","src":"860:33:47","nodes":[],"documentation":{"id":13445,"nodeType":"StructuredDocumentation","src":"797:58:47","text":" @dev A necessary precompile is missing."},"errorSelector":"42b01bce","name":"MissingPrecompile","nameLocation":"866:17:47","parameters":{"id":13448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13447,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13449,"src":"884:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13446,"name":"address","nodeType":"ElementaryTypeName","src":"884:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"883:9:47"}}],"abstract":false,"baseContracts":[],"canonicalName":"Errors","contractDependencies":[],"contractKind":"library","documentation":{"id":13431,"nodeType":"StructuredDocumentation","src":"126:284:47","text":" @dev Collection of common custom errors used in multiple contracts\n IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\n It is recommended to avoid relying on the error API for critical functionality.\n _Available since v5.1._"},"fullyImplemented":true,"linearizedBaseContracts":[13450],"name":"Errors","nameLocation":"419:6:47","scope":13451,"usedErrors":[13438,13441,13444,13449],"usedEvents":[]}],"license":"MIT"}},"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol":{"id":48,"ast":{"absolutePath":"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol","id":13575,"exportedSymbols":{"StorageSlot":[13574]},"nodeType":"SourceUnit","src":"193:3989:48","nodes":[{"id":13452,"nodeType":"PragmaDirective","src":"193:24:48","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":13574,"nodeType":"ContractDefinition","src":"1407:2774:48","nodes":[{"id":13456,"nodeType":"StructDefinition","src":"1433:49:48","nodes":[],"canonicalName":"StorageSlot.AddressSlot","members":[{"constant":false,"id":13455,"mutability":"mutable","name":"value","nameLocation":"1470:5:48","nodeType":"VariableDeclaration","scope":13456,"src":"1462:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13454,"name":"address","nodeType":"ElementaryTypeName","src":"1462:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1440:11:48","scope":13574,"visibility":"public"},{"id":13459,"nodeType":"StructDefinition","src":"1488:46:48","nodes":[],"canonicalName":"StorageSlot.BooleanSlot","members":[{"constant":false,"id":13458,"mutability":"mutable","name":"value","nameLocation":"1522:5:48","nodeType":"VariableDeclaration","scope":13459,"src":"1517:10:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13457,"name":"bool","nodeType":"ElementaryTypeName","src":"1517:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1495:11:48","scope":13574,"visibility":"public"},{"id":13462,"nodeType":"StructDefinition","src":"1540:49:48","nodes":[],"canonicalName":"StorageSlot.Bytes32Slot","members":[{"constant":false,"id":13461,"mutability":"mutable","name":"value","nameLocation":"1577:5:48","nodeType":"VariableDeclaration","scope":13462,"src":"1569:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13460,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1569:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1547:11:48","scope":13574,"visibility":"public"},{"id":13465,"nodeType":"StructDefinition","src":"1595:49:48","nodes":[],"canonicalName":"StorageSlot.Uint256Slot","members":[{"constant":false,"id":13464,"mutability":"mutable","name":"value","nameLocation":"1632:5:48","nodeType":"VariableDeclaration","scope":13465,"src":"1624:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13463,"name":"uint256","nodeType":"ElementaryTypeName","src":"1624:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1602:11:48","scope":13574,"visibility":"public"},{"id":13468,"nodeType":"StructDefinition","src":"1650:47:48","nodes":[],"canonicalName":"StorageSlot.Int256Slot","members":[{"constant":false,"id":13467,"mutability":"mutable","name":"value","nameLocation":"1685:5:48","nodeType":"VariableDeclaration","scope":13468,"src":"1678:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":13466,"name":"int256","nodeType":"ElementaryTypeName","src":"1678:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"name":"Int256Slot","nameLocation":"1657:10:48","scope":13574,"visibility":"public"},{"id":13471,"nodeType":"StructDefinition","src":"1703:47:48","nodes":[],"canonicalName":"StorageSlot.StringSlot","members":[{"constant":false,"id":13470,"mutability":"mutable","name":"value","nameLocation":"1738:5:48","nodeType":"VariableDeclaration","scope":13471,"src":"1731:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":13469,"name":"string","nodeType":"ElementaryTypeName","src":"1731:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"StringSlot","nameLocation":"1710:10:48","scope":13574,"visibility":"public"},{"id":13474,"nodeType":"StructDefinition","src":"1756:45:48","nodes":[],"canonicalName":"StorageSlot.BytesSlot","members":[{"constant":false,"id":13473,"mutability":"mutable","name":"value","nameLocation":"1789:5:48","nodeType":"VariableDeclaration","scope":13474,"src":"1783:11:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":13472,"name":"bytes","nodeType":"ElementaryTypeName","src":"1783:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BytesSlot","nameLocation":"1763:9:48","scope":13574,"visibility":"public"},{"id":13485,"nodeType":"FunctionDefinition","src":"1899:163:48","nodes":[],"body":{"id":13484,"nodeType":"Block","src":"1983:79:48","nodes":[],"statements":[{"AST":{"nativeSrc":"2018:38:48","nodeType":"YulBlock","src":"2018:38:48","statements":[{"nativeSrc":"2032:14:48","nodeType":"YulAssignment","src":"2032:14:48","value":{"name":"slot","nativeSrc":"2042:4:48","nodeType":"YulIdentifier","src":"2042:4:48"},"variableNames":[{"name":"r.slot","nativeSrc":"2032:6:48","nodeType":"YulIdentifier","src":"2032:6:48"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":13481,"isOffset":false,"isSlot":true,"src":"2032:6:48","suffix":"slot","valueSize":1},{"declaration":13477,"isOffset":false,"isSlot":false,"src":"2042:4:48","valueSize":1}],"flags":["memory-safe"],"id":13483,"nodeType":"InlineAssembly","src":"1993:63:48"}]},"documentation":{"id":13475,"nodeType":"StructuredDocumentation","src":"1807:87:48","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1908:14:48","parameters":{"id":13478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13477,"mutability":"mutable","name":"slot","nameLocation":"1931:4:48","nodeType":"VariableDeclaration","scope":13485,"src":"1923:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13476,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1923:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1922:14:48"},"returnParameters":{"id":13482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13481,"mutability":"mutable","name":"r","nameLocation":"1980:1:48","nodeType":"VariableDeclaration","scope":13485,"src":"1960:21:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$13456_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":13480,"nodeType":"UserDefinedTypeName","pathNode":{"id":13479,"name":"AddressSlot","nameLocations":["1960:11:48"],"nodeType":"IdentifierPath","referencedDeclaration":13456,"src":"1960:11:48"},"referencedDeclaration":13456,"src":"1960:11:48","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$13456_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"src":"1959:23:48"},"scope":13574,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":13496,"nodeType":"FunctionDefinition","src":"2159:163:48","nodes":[],"body":{"id":13495,"nodeType":"Block","src":"2243:79:48","nodes":[],"statements":[{"AST":{"nativeSrc":"2278:38:48","nodeType":"YulBlock","src":"2278:38:48","statements":[{"nativeSrc":"2292:14:48","nodeType":"YulAssignment","src":"2292:14:48","value":{"name":"slot","nativeSrc":"2302:4:48","nodeType":"YulIdentifier","src":"2302:4:48"},"variableNames":[{"name":"r.slot","nativeSrc":"2292:6:48","nodeType":"YulIdentifier","src":"2292:6:48"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":13492,"isOffset":false,"isSlot":true,"src":"2292:6:48","suffix":"slot","valueSize":1},{"declaration":13488,"isOffset":false,"isSlot":false,"src":"2302:4:48","valueSize":1}],"flags":["memory-safe"],"id":13494,"nodeType":"InlineAssembly","src":"2253:63:48"}]},"documentation":{"id":13486,"nodeType":"StructuredDocumentation","src":"2068:86:48","text":" @dev Returns a `BooleanSlot` with member `value` located at `slot`."},"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"2168:14:48","parameters":{"id":13489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13488,"mutability":"mutable","name":"slot","nameLocation":"2191:4:48","nodeType":"VariableDeclaration","scope":13496,"src":"2183:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13487,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2183:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2182:14:48"},"returnParameters":{"id":13493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13492,"mutability":"mutable","name":"r","nameLocation":"2240:1:48","nodeType":"VariableDeclaration","scope":13496,"src":"2220:21:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$13459_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"},"typeName":{"id":13491,"nodeType":"UserDefinedTypeName","pathNode":{"id":13490,"name":"BooleanSlot","nameLocations":["2220:11:48"],"nodeType":"IdentifierPath","referencedDeclaration":13459,"src":"2220:11:48"},"referencedDeclaration":13459,"src":"2220:11:48","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$13459_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"}},"visibility":"internal"}],"src":"2219:23:48"},"scope":13574,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":13507,"nodeType":"FunctionDefinition","src":"2419:163:48","nodes":[],"body":{"id":13506,"nodeType":"Block","src":"2503:79:48","nodes":[],"statements":[{"AST":{"nativeSrc":"2538:38:48","nodeType":"YulBlock","src":"2538:38:48","statements":[{"nativeSrc":"2552:14:48","nodeType":"YulAssignment","src":"2552:14:48","value":{"name":"slot","nativeSrc":"2562:4:48","nodeType":"YulIdentifier","src":"2562:4:48"},"variableNames":[{"name":"r.slot","nativeSrc":"2552:6:48","nodeType":"YulIdentifier","src":"2552:6:48"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":13503,"isOffset":false,"isSlot":true,"src":"2552:6:48","suffix":"slot","valueSize":1},{"declaration":13499,"isOffset":false,"isSlot":false,"src":"2562:4:48","valueSize":1}],"flags":["memory-safe"],"id":13505,"nodeType":"InlineAssembly","src":"2513:63:48"}]},"documentation":{"id":13497,"nodeType":"StructuredDocumentation","src":"2328:86:48","text":" @dev Returns a `Bytes32Slot` with member `value` located at `slot`."},"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2428:14:48","parameters":{"id":13500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13499,"mutability":"mutable","name":"slot","nameLocation":"2451:4:48","nodeType":"VariableDeclaration","scope":13507,"src":"2443:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13498,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2443:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2442:14:48"},"returnParameters":{"id":13504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13503,"mutability":"mutable","name":"r","nameLocation":"2500:1:48","nodeType":"VariableDeclaration","scope":13507,"src":"2480:21:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$13462_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"},"typeName":{"id":13502,"nodeType":"UserDefinedTypeName","pathNode":{"id":13501,"name":"Bytes32Slot","nameLocations":["2480:11:48"],"nodeType":"IdentifierPath","referencedDeclaration":13462,"src":"2480:11:48"},"referencedDeclaration":13462,"src":"2480:11:48","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$13462_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"2479:23:48"},"scope":13574,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":13518,"nodeType":"FunctionDefinition","src":"2679:163:48","nodes":[],"body":{"id":13517,"nodeType":"Block","src":"2763:79:48","nodes":[],"statements":[{"AST":{"nativeSrc":"2798:38:48","nodeType":"YulBlock","src":"2798:38:48","statements":[{"nativeSrc":"2812:14:48","nodeType":"YulAssignment","src":"2812:14:48","value":{"name":"slot","nativeSrc":"2822:4:48","nodeType":"YulIdentifier","src":"2822:4:48"},"variableNames":[{"name":"r.slot","nativeSrc":"2812:6:48","nodeType":"YulIdentifier","src":"2812:6:48"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":13514,"isOffset":false,"isSlot":true,"src":"2812:6:48","suffix":"slot","valueSize":1},{"declaration":13510,"isOffset":false,"isSlot":false,"src":"2822:4:48","valueSize":1}],"flags":["memory-safe"],"id":13516,"nodeType":"InlineAssembly","src":"2773:63:48"}]},"documentation":{"id":13508,"nodeType":"StructuredDocumentation","src":"2588:86:48","text":" @dev Returns a `Uint256Slot` with member `value` located at `slot`."},"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2688:14:48","parameters":{"id":13511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13510,"mutability":"mutable","name":"slot","nameLocation":"2711:4:48","nodeType":"VariableDeclaration","scope":13518,"src":"2703:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13509,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2703:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2702:14:48"},"returnParameters":{"id":13515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13514,"mutability":"mutable","name":"r","nameLocation":"2760:1:48","nodeType":"VariableDeclaration","scope":13518,"src":"2740:21:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$13465_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"},"typeName":{"id":13513,"nodeType":"UserDefinedTypeName","pathNode":{"id":13512,"name":"Uint256Slot","nameLocations":["2740:11:48"],"nodeType":"IdentifierPath","referencedDeclaration":13465,"src":"2740:11:48"},"referencedDeclaration":13465,"src":"2740:11:48","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$13465_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"}},"visibility":"internal"}],"src":"2739:23:48"},"scope":13574,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":13529,"nodeType":"FunctionDefinition","src":"2938:161:48","nodes":[],"body":{"id":13528,"nodeType":"Block","src":"3020:79:48","nodes":[],"statements":[{"AST":{"nativeSrc":"3055:38:48","nodeType":"YulBlock","src":"3055:38:48","statements":[{"nativeSrc":"3069:14:48","nodeType":"YulAssignment","src":"3069:14:48","value":{"name":"slot","nativeSrc":"3079:4:48","nodeType":"YulIdentifier","src":"3079:4:48"},"variableNames":[{"name":"r.slot","nativeSrc":"3069:6:48","nodeType":"YulIdentifier","src":"3069:6:48"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":13525,"isOffset":false,"isSlot":true,"src":"3069:6:48","suffix":"slot","valueSize":1},{"declaration":13521,"isOffset":false,"isSlot":false,"src":"3079:4:48","valueSize":1}],"flags":["memory-safe"],"id":13527,"nodeType":"InlineAssembly","src":"3030:63:48"}]},"documentation":{"id":13519,"nodeType":"StructuredDocumentation","src":"2848:85:48","text":" @dev Returns a `Int256Slot` with member `value` located at `slot`."},"implemented":true,"kind":"function","modifiers":[],"name":"getInt256Slot","nameLocation":"2947:13:48","parameters":{"id":13522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13521,"mutability":"mutable","name":"slot","nameLocation":"2969:4:48","nodeType":"VariableDeclaration","scope":13529,"src":"2961:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13520,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2961:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2960:14:48"},"returnParameters":{"id":13526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13525,"mutability":"mutable","name":"r","nameLocation":"3017:1:48","nodeType":"VariableDeclaration","scope":13529,"src":"2998:20:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Int256Slot_$13468_storage_ptr","typeString":"struct StorageSlot.Int256Slot"},"typeName":{"id":13524,"nodeType":"UserDefinedTypeName","pathNode":{"id":13523,"name":"Int256Slot","nameLocations":["2998:10:48"],"nodeType":"IdentifierPath","referencedDeclaration":13468,"src":"2998:10:48"},"referencedDeclaration":13468,"src":"2998:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_Int256Slot_$13468_storage_ptr","typeString":"struct StorageSlot.Int256Slot"}},"visibility":"internal"}],"src":"2997:22:48"},"scope":13574,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":13540,"nodeType":"FunctionDefinition","src":"3195:161:48","nodes":[],"body":{"id":13539,"nodeType":"Block","src":"3277:79:48","nodes":[],"statements":[{"AST":{"nativeSrc":"3312:38:48","nodeType":"YulBlock","src":"3312:38:48","statements":[{"nativeSrc":"3326:14:48","nodeType":"YulAssignment","src":"3326:14:48","value":{"name":"slot","nativeSrc":"3336:4:48","nodeType":"YulIdentifier","src":"3336:4:48"},"variableNames":[{"name":"r.slot","nativeSrc":"3326:6:48","nodeType":"YulIdentifier","src":"3326:6:48"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":13536,"isOffset":false,"isSlot":true,"src":"3326:6:48","suffix":"slot","valueSize":1},{"declaration":13532,"isOffset":false,"isSlot":false,"src":"3336:4:48","valueSize":1}],"flags":["memory-safe"],"id":13538,"nodeType":"InlineAssembly","src":"3287:63:48"}]},"documentation":{"id":13530,"nodeType":"StructuredDocumentation","src":"3105:85:48","text":" @dev Returns a `StringSlot` with member `value` located at `slot`."},"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3204:13:48","parameters":{"id":13533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13532,"mutability":"mutable","name":"slot","nameLocation":"3226:4:48","nodeType":"VariableDeclaration","scope":13540,"src":"3218:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13531,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3218:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3217:14:48"},"returnParameters":{"id":13537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13536,"mutability":"mutable","name":"r","nameLocation":"3274:1:48","nodeType":"VariableDeclaration","scope":13540,"src":"3255:20:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$13471_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":13535,"nodeType":"UserDefinedTypeName","pathNode":{"id":13534,"name":"StringSlot","nameLocations":["3255:10:48"],"nodeType":"IdentifierPath","referencedDeclaration":13471,"src":"3255:10:48"},"referencedDeclaration":13471,"src":"3255:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$13471_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3254:22:48"},"scope":13574,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":13551,"nodeType":"FunctionDefinition","src":"3468:175:48","nodes":[],"body":{"id":13550,"nodeType":"Block","src":"3558:85:48","nodes":[],"statements":[{"AST":{"nativeSrc":"3593:44:48","nodeType":"YulBlock","src":"3593:44:48","statements":[{"nativeSrc":"3607:20:48","nodeType":"YulAssignment","src":"3607:20:48","value":{"name":"store.slot","nativeSrc":"3617:10:48","nodeType":"YulIdentifier","src":"3617:10:48"},"variableNames":[{"name":"r.slot","nativeSrc":"3607:6:48","nodeType":"YulIdentifier","src":"3607:6:48"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":13547,"isOffset":false,"isSlot":true,"src":"3607:6:48","suffix":"slot","valueSize":1},{"declaration":13543,"isOffset":false,"isSlot":true,"src":"3617:10:48","suffix":"slot","valueSize":1}],"flags":["memory-safe"],"id":13549,"nodeType":"InlineAssembly","src":"3568:69:48"}]},"documentation":{"id":13541,"nodeType":"StructuredDocumentation","src":"3362:101:48","text":" @dev Returns an `StringSlot` representation of the string storage pointer `store`."},"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3477:13:48","parameters":{"id":13544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13543,"mutability":"mutable","name":"store","nameLocation":"3506:5:48","nodeType":"VariableDeclaration","scope":13551,"src":"3491:20:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":13542,"name":"string","nodeType":"ElementaryTypeName","src":"3491:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3490:22:48"},"returnParameters":{"id":13548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13547,"mutability":"mutable","name":"r","nameLocation":"3555:1:48","nodeType":"VariableDeclaration","scope":13551,"src":"3536:20:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$13471_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":13546,"nodeType":"UserDefinedTypeName","pathNode":{"id":13545,"name":"StringSlot","nameLocations":["3536:10:48"],"nodeType":"IdentifierPath","referencedDeclaration":13471,"src":"3536:10:48"},"referencedDeclaration":13471,"src":"3536:10:48","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$13471_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3535:22:48"},"scope":13574,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":13562,"nodeType":"FunctionDefinition","src":"3738:159:48","nodes":[],"body":{"id":13561,"nodeType":"Block","src":"3818:79:48","nodes":[],"statements":[{"AST":{"nativeSrc":"3853:38:48","nodeType":"YulBlock","src":"3853:38:48","statements":[{"nativeSrc":"3867:14:48","nodeType":"YulAssignment","src":"3867:14:48","value":{"name":"slot","nativeSrc":"3877:4:48","nodeType":"YulIdentifier","src":"3877:4:48"},"variableNames":[{"name":"r.slot","nativeSrc":"3867:6:48","nodeType":"YulIdentifier","src":"3867:6:48"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":13558,"isOffset":false,"isSlot":true,"src":"3867:6:48","suffix":"slot","valueSize":1},{"declaration":13554,"isOffset":false,"isSlot":false,"src":"3877:4:48","valueSize":1}],"flags":["memory-safe"],"id":13560,"nodeType":"InlineAssembly","src":"3828:63:48"}]},"documentation":{"id":13552,"nodeType":"StructuredDocumentation","src":"3649:84:48","text":" @dev Returns a `BytesSlot` with member `value` located at `slot`."},"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3747:12:48","parameters":{"id":13555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13554,"mutability":"mutable","name":"slot","nameLocation":"3768:4:48","nodeType":"VariableDeclaration","scope":13562,"src":"3760:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13553,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3760:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3759:14:48"},"returnParameters":{"id":13559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13558,"mutability":"mutable","name":"r","nameLocation":"3815:1:48","nodeType":"VariableDeclaration","scope":13562,"src":"3797:19:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$13474_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":13557,"nodeType":"UserDefinedTypeName","pathNode":{"id":13556,"name":"BytesSlot","nameLocations":["3797:9:48"],"nodeType":"IdentifierPath","referencedDeclaration":13474,"src":"3797:9:48"},"referencedDeclaration":13474,"src":"3797:9:48","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$13474_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3796:21:48"},"scope":13574,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":13573,"nodeType":"FunctionDefinition","src":"4007:172:48","nodes":[],"body":{"id":13572,"nodeType":"Block","src":"4094:85:48","nodes":[],"statements":[{"AST":{"nativeSrc":"4129:44:48","nodeType":"YulBlock","src":"4129:44:48","statements":[{"nativeSrc":"4143:20:48","nodeType":"YulAssignment","src":"4143:20:48","value":{"name":"store.slot","nativeSrc":"4153:10:48","nodeType":"YulIdentifier","src":"4153:10:48"},"variableNames":[{"name":"r.slot","nativeSrc":"4143:6:48","nodeType":"YulIdentifier","src":"4143:6:48"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":13569,"isOffset":false,"isSlot":true,"src":"4143:6:48","suffix":"slot","valueSize":1},{"declaration":13565,"isOffset":false,"isSlot":true,"src":"4153:10:48","suffix":"slot","valueSize":1}],"flags":["memory-safe"],"id":13571,"nodeType":"InlineAssembly","src":"4104:69:48"}]},"documentation":{"id":13563,"nodeType":"StructuredDocumentation","src":"3903:99:48","text":" @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."},"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"4016:12:48","parameters":{"id":13566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13565,"mutability":"mutable","name":"store","nameLocation":"4043:5:48","nodeType":"VariableDeclaration","scope":13573,"src":"4029:19:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":13564,"name":"bytes","nodeType":"ElementaryTypeName","src":"4029:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4028:21:48"},"returnParameters":{"id":13570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13569,"mutability":"mutable","name":"r","nameLocation":"4091:1:48","nodeType":"VariableDeclaration","scope":13573,"src":"4073:19:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$13474_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":13568,"nodeType":"UserDefinedTypeName","pathNode":{"id":13567,"name":"BytesSlot","nameLocations":["4073:9:48"],"nodeType":"IdentifierPath","referencedDeclaration":13474,"src":"4073:9:48"},"referencedDeclaration":13474,"src":"4073:9:48","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$13474_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"4072:21:48"},"scope":13574,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"StorageSlot","contractDependencies":[],"contractKind":"library","documentation":{"id":13453,"nodeType":"StructuredDocumentation","src":"219:1187:48","text":" @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC-1967 implementation slot:\n ```solidity\n contract ERC1967 {\n // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n function _setImplementation(address newImplementation) internal {\n require(newImplementation.code.length > 0);\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n }\n ```\n TIP: Consider using this library along with {SlotDerivation}."},"fullyImplemented":true,"linearizedBaseContracts":[13574],"name":"StorageSlot","nameLocation":"1415:11:48","scope":13575,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"id":49,"ast":{"absolutePath":"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol","id":13587,"exportedSymbols":{"IERC165":[13586]},"nodeType":"SourceUnit","src":"115:756:49","nodes":[{"id":13576,"nodeType":"PragmaDirective","src":"115:25:49","nodes":[],"literals":["solidity",">=","0.4",".16"]},{"id":13586,"nodeType":"ContractDefinition","src":"423:447:49","nodes":[{"id":13585,"nodeType":"FunctionDefinition","src":"792:76:49","nodes":[],"documentation":{"id":13578,"nodeType":"StructuredDocumentation","src":"447:340:49","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"801:17:49","parameters":{"id":13581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13580,"mutability":"mutable","name":"interfaceId","nameLocation":"826:11:49","nodeType":"VariableDeclaration","scope":13585,"src":"819:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":13579,"name":"bytes4","nodeType":"ElementaryTypeName","src":"819:6:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"818:20:49"},"returnParameters":{"id":13584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13583,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13585,"src":"862:4:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13582,"name":"bool","nodeType":"ElementaryTypeName","src":"862:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"861:6:49"},"scope":13586,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":13577,"nodeType":"StructuredDocumentation","src":"142:280:49","text":" @dev Interface of the ERC-165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[ERC].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"linearizedBaseContracts":[13586],"name":"IERC165","nameLocation":"433:7:49","scope":13587,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol":{"id":24,"ast":{"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","id":10385,"exportedSymbols":{"ContextUpgradeable":[11497],"Initializable":[10652],"OwnableUpgradeable":[10384]},"nodeType":"SourceUnit","src":"102:3923:24","nodes":[{"id":10191,"nodeType":"PragmaDirective","src":"102:24:24","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":10193,"nodeType":"ImportDirective","src":"128:67:24","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"../utils/ContextUpgradeable.sol","nameLocation":"-1:-1:-1","scope":10385,"sourceUnit":11498,"symbolAliases":[{"foreign":{"id":10192,"name":"ContextUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11497,"src":"136:18:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":10195,"nodeType":"ImportDirective","src":"196:63:24","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":10385,"sourceUnit":10653,"symbolAliases":[{"foreign":{"id":10194,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10652,"src":"204:13:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":10384,"nodeType":"ContractDefinition","src":"749:3275:24","nodes":[{"id":10204,"nodeType":"StructDefinition","src":"899:53:24","nodes":[],"canonicalName":"OwnableUpgradeable.OwnableStorage","documentation":{"id":10201,"nodeType":"StructuredDocumentation","src":"829:65:24","text":"@custom:storage-location erc7201:openzeppelin.storage.Ownable"},"members":[{"constant":false,"id":10203,"mutability":"mutable","name":"_owner","nameLocation":"939:6:24","nodeType":"VariableDeclaration","scope":10204,"src":"931:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10202,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"OwnableStorage","nameLocation":"906:14:24","scope":10384,"visibility":"public"},{"id":10207,"nodeType":"VariableDeclaration","src":"1069:116:24","nodes":[],"constant":true,"mutability":"constant","name":"OwnableStorageLocation","nameLocation":"1094:22:24","scope":10384,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10205,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1069:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307839303136643039643732643430666461653266643863656163366236323334633737303632313466643339633163643165363039613035323863313939333030","id":10206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1119:66:24","typeDescriptions":{"typeIdentifier":"t_rational_65173360639460082030725920392146925864023520599682862633725751242436743107328_by_1","typeString":"int_const 6517...(69 digits omitted)...7328"},"value":"0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300"},"visibility":"private"},{"id":10215,"nodeType":"FunctionDefinition","src":"1192:159:24","nodes":[],"body":{"id":10214,"nodeType":"Block","src":"1270:81:24","nodes":[],"statements":[{"AST":{"nativeSrc":"1289:56:24","nodeType":"YulBlock","src":"1289:56:24","statements":[{"nativeSrc":"1303:32:24","nodeType":"YulAssignment","src":"1303:32:24","value":{"name":"OwnableStorageLocation","nativeSrc":"1313:22:24","nodeType":"YulIdentifier","src":"1313:22:24"},"variableNames":[{"name":"$.slot","nativeSrc":"1303:6:24","nodeType":"YulIdentifier","src":"1303:6:24"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":10211,"isOffset":false,"isSlot":true,"src":"1303:6:24","suffix":"slot","valueSize":1},{"declaration":10207,"isOffset":false,"isSlot":false,"src":"1313:22:24","valueSize":1}],"id":10213,"nodeType":"InlineAssembly","src":"1280:65:24"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getOwnableStorage","nameLocation":"1201:18:24","parameters":{"id":10208,"nodeType":"ParameterList","parameters":[],"src":"1219:2:24"},"returnParameters":{"id":10212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10211,"mutability":"mutable","name":"$","nameLocation":"1267:1:24","nodeType":"VariableDeclaration","scope":10215,"src":"1244:24:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$10204_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage"},"typeName":{"id":10210,"nodeType":"UserDefinedTypeName","pathNode":{"id":10209,"name":"OwnableStorage","nameLocations":["1244:14:24"],"nodeType":"IdentifierPath","referencedDeclaration":10204,"src":"1244:14:24"},"referencedDeclaration":10204,"src":"1244:14:24","typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$10204_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage"}},"visibility":"internal"}],"src":"1243:26:24"},"scope":10384,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":10220,"nodeType":"ErrorDefinition","src":"1447:50:24","nodes":[],"documentation":{"id":10216,"nodeType":"StructuredDocumentation","src":"1357:85:24","text":" @dev The caller account is not authorized to perform an operation."},"errorSelector":"118cdaa7","name":"OwnableUnauthorizedAccount","nameLocation":"1453:26:24","parameters":{"id":10219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10218,"mutability":"mutable","name":"account","nameLocation":"1488:7:24","nodeType":"VariableDeclaration","scope":10220,"src":"1480:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10217,"name":"address","nodeType":"ElementaryTypeName","src":"1480:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1479:17:24"}},{"id":10225,"nodeType":"ErrorDefinition","src":"1590:41:24","nodes":[],"documentation":{"id":10221,"nodeType":"StructuredDocumentation","src":"1503:82:24","text":" @dev The owner is not a valid owner account. (eg. `address(0)`)"},"errorSelector":"1e4fbdf7","name":"OwnableInvalidOwner","nameLocation":"1596:19:24","parameters":{"id":10224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10223,"mutability":"mutable","name":"owner","nameLocation":"1624:5:24","nodeType":"VariableDeclaration","scope":10225,"src":"1616:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10222,"name":"address","nodeType":"ElementaryTypeName","src":"1616:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1615:15:24"}},{"id":10231,"nodeType":"EventDefinition","src":"1637:84:24","nodes":[],"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","name":"OwnershipTransferred","nameLocation":"1643:20:24","parameters":{"id":10230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10227,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"1680:13:24","nodeType":"VariableDeclaration","scope":10231,"src":"1664:29:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10226,"name":"address","nodeType":"ElementaryTypeName","src":"1664:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10229,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"1711:8:24","nodeType":"VariableDeclaration","scope":10231,"src":"1695:24:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10228,"name":"address","nodeType":"ElementaryTypeName","src":"1695:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1663:57:24"}},{"id":10244,"nodeType":"FunctionDefinition","src":"1847:127:24","nodes":[],"body":{"id":10243,"nodeType":"Block","src":"1919:55:24","nodes":[],"statements":[{"expression":{"arguments":[{"id":10240,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10234,"src":"1954:12:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10239,"name":"__Ownable_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10271,"src":"1929:24:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1929:38:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10242,"nodeType":"ExpressionStatement","src":"1929:38:24"}]},"documentation":{"id":10232,"nodeType":"StructuredDocumentation","src":"1727:115:24","text":" @dev Initializes the contract setting the address provided by the deployer as the initial owner."},"implemented":true,"kind":"function","modifiers":[{"id":10237,"kind":"modifierInvocation","modifierName":{"id":10236,"name":"onlyInitializing","nameLocations":["1902:16:24"],"nodeType":"IdentifierPath","referencedDeclaration":10547,"src":"1902:16:24"},"nodeType":"ModifierInvocation","src":"1902:16:24"}],"name":"__Ownable_init","nameLocation":"1856:14:24","parameters":{"id":10235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10234,"mutability":"mutable","name":"initialOwner","nameLocation":"1879:12:24","nodeType":"VariableDeclaration","scope":10244,"src":"1871:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10233,"name":"address","nodeType":"ElementaryTypeName","src":"1871:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1870:22:24"},"returnParameters":{"id":10238,"nodeType":"ParameterList","parameters":[],"src":"1919:0:24"},"scope":10384,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":10271,"nodeType":"FunctionDefinition","src":"1980:235:24","nodes":[],"body":{"id":10270,"nodeType":"Block","src":"2062:153:24","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10251,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10246,"src":"2076:12:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2100:1:24","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":10253,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2092:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10252,"name":"address","nodeType":"ElementaryTypeName","src":"2092:7:24","typeDescriptions":{}}},"id":10255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2092:10:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2076:26:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10265,"nodeType":"IfStatement","src":"2072:95:24","trueBody":{"id":10264,"nodeType":"Block","src":"2104:63:24","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":10260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2153:1:24","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":10259,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2145:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10258,"name":"address","nodeType":"ElementaryTypeName","src":"2145:7:24","typeDescriptions":{}}},"id":10261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2145:10:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10257,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10225,"src":"2125:19:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":10262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2125:31:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10263,"nodeType":"RevertStatement","src":"2118:38:24"}]}},{"expression":{"arguments":[{"id":10267,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10246,"src":"2195:12:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10266,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10383,"src":"2176:18:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2176:32:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10269,"nodeType":"ExpressionStatement","src":"2176:32:24"}]},"implemented":true,"kind":"function","modifiers":[{"id":10249,"kind":"modifierInvocation","modifierName":{"id":10248,"name":"onlyInitializing","nameLocations":["2045:16:24"],"nodeType":"IdentifierPath","referencedDeclaration":10547,"src":"2045:16:24"},"nodeType":"ModifierInvocation","src":"2045:16:24"}],"name":"__Ownable_init_unchained","nameLocation":"1989:24:24","parameters":{"id":10247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10246,"mutability":"mutable","name":"initialOwner","nameLocation":"2022:12:24","nodeType":"VariableDeclaration","scope":10271,"src":"2014:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10245,"name":"address","nodeType":"ElementaryTypeName","src":"2014:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2013:22:24"},"returnParameters":{"id":10250,"nodeType":"ParameterList","parameters":[],"src":"2062:0:24"},"scope":10384,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":10279,"nodeType":"ModifierDefinition","src":"2303:62:24","nodes":[],"body":{"id":10278,"nodeType":"Block","src":"2324:41:24","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10274,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10312,"src":"2334:11:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":10275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2334:13:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10276,"nodeType":"ExpressionStatement","src":"2334:13:24"},{"id":10277,"nodeType":"PlaceholderStatement","src":"2357:1:24"}]},"documentation":{"id":10272,"nodeType":"StructuredDocumentation","src":"2221:77:24","text":" @dev Throws if called by any account other than the owner."},"name":"onlyOwner","nameLocation":"2312:9:24","parameters":{"id":10273,"nodeType":"ParameterList","parameters":[],"src":"2321:2:24"},"virtual":false,"visibility":"internal"},{"id":10295,"nodeType":"FunctionDefinition","src":"2441:144:24","nodes":[],"body":{"id":10294,"nodeType":"Block","src":"2496:89:24","nodes":[],"statements":[{"assignments":[10287],"declarations":[{"constant":false,"id":10287,"mutability":"mutable","name":"$","nameLocation":"2529:1:24","nodeType":"VariableDeclaration","scope":10294,"src":"2506:24:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$10204_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage"},"typeName":{"id":10286,"nodeType":"UserDefinedTypeName","pathNode":{"id":10285,"name":"OwnableStorage","nameLocations":["2506:14:24"],"nodeType":"IdentifierPath","referencedDeclaration":10204,"src":"2506:14:24"},"referencedDeclaration":10204,"src":"2506:14:24","typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$10204_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage"}},"visibility":"internal"}],"id":10290,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10288,"name":"_getOwnableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10215,"src":"2533:18:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_OwnableStorage_$10204_storage_ptr_$","typeString":"function () pure returns (struct OwnableUpgradeable.OwnableStorage storage pointer)"}},"id":10289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2533:20:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$10204_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2506:47:24"},{"expression":{"expression":{"id":10291,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10287,"src":"2570:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$10204_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage storage pointer"}},"id":10292,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2572:6:24","memberName":"_owner","nodeType":"MemberAccess","referencedDeclaration":10203,"src":"2570:8:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10284,"id":10293,"nodeType":"Return","src":"2563:15:24"}]},"documentation":{"id":10280,"nodeType":"StructuredDocumentation","src":"2371:65:24","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"2450:5:24","parameters":{"id":10281,"nodeType":"ParameterList","parameters":[],"src":"2455:2:24"},"returnParameters":{"id":10284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10283,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10295,"src":"2487:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10282,"name":"address","nodeType":"ElementaryTypeName","src":"2487:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2486:9:24"},"scope":10384,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":10312,"nodeType":"FunctionDefinition","src":"2658:162:24","nodes":[],"body":{"id":10311,"nodeType":"Block","src":"2703:117:24","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":10299,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10295,"src":"2717:5:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":10300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2717:7:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":10301,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11479,"src":"2728:10:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":10302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2728:12:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2717:23:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10310,"nodeType":"IfStatement","src":"2713:101:24","trueBody":{"id":10309,"nodeType":"Block","src":"2742:72:24","statements":[{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":10305,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11479,"src":"2790:10:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":10306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2790:12:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10304,"name":"OwnableUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10220,"src":"2763:26:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":10307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2763:40:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10308,"nodeType":"RevertStatement","src":"2756:47:24"}]}}]},"documentation":{"id":10296,"nodeType":"StructuredDocumentation","src":"2591:62:24","text":" @dev Throws if the sender is not the owner."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"2667:11:24","parameters":{"id":10297,"nodeType":"ParameterList","parameters":[],"src":"2678:2:24"},"returnParameters":{"id":10298,"nodeType":"ParameterList","parameters":[],"src":"2703:0:24"},"scope":10384,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":10326,"nodeType":"FunctionDefinition","src":"3155:101:24","nodes":[],"body":{"id":10325,"nodeType":"Block","src":"3209:47:24","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":10321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3246:1:24","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":10320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3238:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10319,"name":"address","nodeType":"ElementaryTypeName","src":"3238:7:24","typeDescriptions":{}}},"id":10322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3238:10:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10318,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10383,"src":"3219:18:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3219:30:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10324,"nodeType":"ExpressionStatement","src":"3219:30:24"}]},"documentation":{"id":10313,"nodeType":"StructuredDocumentation","src":"2826:324:24","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","implemented":true,"kind":"function","modifiers":[{"id":10316,"kind":"modifierInvocation","modifierName":{"id":10315,"name":"onlyOwner","nameLocations":["3199:9:24"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"3199:9:24"},"nodeType":"ModifierInvocation","src":"3199:9:24"}],"name":"renounceOwnership","nameLocation":"3164:17:24","parameters":{"id":10314,"nodeType":"ParameterList","parameters":[],"src":"3181:2:24"},"returnParameters":{"id":10317,"nodeType":"ParameterList","parameters":[],"src":"3209:0:24"},"scope":10384,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":10354,"nodeType":"FunctionDefinition","src":"3405:215:24","nodes":[],"body":{"id":10353,"nodeType":"Block","src":"3475:145:24","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10334,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10329,"src":"3489:8:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3509:1:24","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":10336,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3501:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10335,"name":"address","nodeType":"ElementaryTypeName","src":"3501:7:24","typeDescriptions":{}}},"id":10338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3501:10:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3489:22:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10348,"nodeType":"IfStatement","src":"3485:91:24","trueBody":{"id":10347,"nodeType":"Block","src":"3513:63:24","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":10343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3562:1:24","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":10342,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3554:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10341,"name":"address","nodeType":"ElementaryTypeName","src":"3554:7:24","typeDescriptions":{}}},"id":10344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3554:10:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10340,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10225,"src":"3534:19:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":10345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3534:31:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10346,"nodeType":"RevertStatement","src":"3527:38:24"}]}},{"expression":{"arguments":[{"id":10350,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10329,"src":"3604:8:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10349,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10383,"src":"3585:18:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3585:28:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10352,"nodeType":"ExpressionStatement","src":"3585:28:24"}]},"documentation":{"id":10327,"nodeType":"StructuredDocumentation","src":"3262:138:24","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","implemented":true,"kind":"function","modifiers":[{"id":10332,"kind":"modifierInvocation","modifierName":{"id":10331,"name":"onlyOwner","nameLocations":["3465:9:24"],"nodeType":"IdentifierPath","referencedDeclaration":10279,"src":"3465:9:24"},"nodeType":"ModifierInvocation","src":"3465:9:24"}],"name":"transferOwnership","nameLocation":"3414:17:24","parameters":{"id":10330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10329,"mutability":"mutable","name":"newOwner","nameLocation":"3440:8:24","nodeType":"VariableDeclaration","scope":10354,"src":"3432:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10328,"name":"address","nodeType":"ElementaryTypeName","src":"3432:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3431:18:24"},"returnParameters":{"id":10333,"nodeType":"ParameterList","parameters":[],"src":"3475:0:24"},"scope":10384,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":10383,"nodeType":"FunctionDefinition","src":"3774:248:24","nodes":[],"body":{"id":10382,"nodeType":"Block","src":"3837:185:24","nodes":[],"statements":[{"assignments":[10362],"declarations":[{"constant":false,"id":10362,"mutability":"mutable","name":"$","nameLocation":"3870:1:24","nodeType":"VariableDeclaration","scope":10382,"src":"3847:24:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$10204_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage"},"typeName":{"id":10361,"nodeType":"UserDefinedTypeName","pathNode":{"id":10360,"name":"OwnableStorage","nameLocations":["3847:14:24"],"nodeType":"IdentifierPath","referencedDeclaration":10204,"src":"3847:14:24"},"referencedDeclaration":10204,"src":"3847:14:24","typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$10204_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage"}},"visibility":"internal"}],"id":10365,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10363,"name":"_getOwnableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10215,"src":"3874:18:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_OwnableStorage_$10204_storage_ptr_$","typeString":"function () pure returns (struct OwnableUpgradeable.OwnableStorage storage pointer)"}},"id":10364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3874:20:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$10204_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3847:47:24"},{"assignments":[10367],"declarations":[{"constant":false,"id":10367,"mutability":"mutable","name":"oldOwner","nameLocation":"3912:8:24","nodeType":"VariableDeclaration","scope":10382,"src":"3904:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10366,"name":"address","nodeType":"ElementaryTypeName","src":"3904:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":10370,"initialValue":{"expression":{"id":10368,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10362,"src":"3923:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$10204_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage storage pointer"}},"id":10369,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3925:6:24","memberName":"_owner","nodeType":"MemberAccess","referencedDeclaration":10203,"src":"3923:8:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3904:27:24"},{"expression":{"id":10375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":10371,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10362,"src":"3941:1:24","typeDescriptions":{"typeIdentifier":"t_struct$_OwnableStorage_$10204_storage_ptr","typeString":"struct OwnableUpgradeable.OwnableStorage storage pointer"}},"id":10373,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3943:6:24","memberName":"_owner","nodeType":"MemberAccess","referencedDeclaration":10203,"src":"3941:8:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10374,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10357,"src":"3952:8:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3941:19:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10376,"nodeType":"ExpressionStatement","src":"3941:19:24"},{"eventCall":{"arguments":[{"id":10378,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10367,"src":"3996:8:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10379,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10357,"src":"4006:8:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":10377,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10231,"src":"3975:20:24","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":10380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3975:40:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10381,"nodeType":"EmitStatement","src":"3970:45:24"}]},"documentation":{"id":10355,"nodeType":"StructuredDocumentation","src":"3626:143:24","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"3783:18:24","parameters":{"id":10358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10357,"mutability":"mutable","name":"newOwner","nameLocation":"3810:8:24","nodeType":"VariableDeclaration","scope":10383,"src":"3802:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10356,"name":"address","nodeType":"ElementaryTypeName","src":"3802:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3801:18:24"},"returnParameters":{"id":10359,"nodeType":"ParameterList","parameters":[],"src":"3837:0:24"},"scope":10384,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[{"baseName":{"id":10197,"name":"Initializable","nameLocations":["789:13:24"],"nodeType":"IdentifierPath","referencedDeclaration":10652,"src":"789:13:24"},"id":10198,"nodeType":"InheritanceSpecifier","src":"789:13:24"},{"baseName":{"id":10199,"name":"ContextUpgradeable","nameLocations":["804:18:24"],"nodeType":"IdentifierPath","referencedDeclaration":11497,"src":"804:18:24"},"id":10200,"nodeType":"InheritanceSpecifier","src":"804:18:24"}],"canonicalName":"OwnableUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":10196,"nodeType":"StructuredDocumentation","src":"261:487:24","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n The initial owner is set to the address provided by the deployer. This can\n later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"linearizedBaseContracts":[10384,11497,10652],"name":"OwnableUpgradeable","nameLocation":"767:18:24","scope":10385,"usedErrors":[10220,10225,10401,10404],"usedEvents":[10231,10409]}],"license":"MIT"}},"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"id":25,"ast":{"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":10653,"exportedSymbols":{"Initializable":[10652]},"nodeType":"SourceUnit","src":"113:9166:25","nodes":[{"id":10386,"nodeType":"PragmaDirective","src":"113:24:25","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":10652,"nodeType":"ContractDefinition","src":"2349:6929:25","nodes":[{"id":10395,"nodeType":"StructDefinition","src":"2685:290:25","nodes":[],"canonicalName":"Initializable.InitializableStorage","documentation":{"id":10388,"nodeType":"StructuredDocumentation","src":"2387:293:25","text":" @dev Storage of the initializable contract.\n It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n when using with upgradeable contracts.\n @custom:storage-location erc7201:openzeppelin.storage.Initializable"},"members":[{"constant":false,"id":10391,"mutability":"mutable","name":"_initialized","nameLocation":"2820:12:25","nodeType":"VariableDeclaration","scope":10395,"src":"2813:19:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":10390,"name":"uint64","nodeType":"ElementaryTypeName","src":"2813:6:25","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":10394,"mutability":"mutable","name":"_initializing","nameLocation":"2955:13:25","nodeType":"VariableDeclaration","scope":10395,"src":"2950:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10393,"name":"bool","nodeType":"ElementaryTypeName","src":"2950:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"InitializableStorage","nameLocation":"2692:20:25","scope":10652,"visibility":"public"},{"id":10398,"nodeType":"VariableDeclaration","src":"3098:115:25","nodes":[],"constant":true,"mutability":"constant","name":"INITIALIZABLE_STORAGE","nameLocation":"3123:21:25","scope":10652,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10396,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3098:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307866306335376531363834306466303430663135303838646332663831666533393163333932336265633733653233613936363265666339633232396336613030","id":10397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3147:66:25","typeDescriptions":{"typeIdentifier":"t_rational_108904022758810753673719992590105913556127789646572562039383141376366747609600_by_1","typeString":"int_const 1089...(70 digits omitted)...9600"},"value":"0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00"},"visibility":"private"},{"id":10401,"nodeType":"ErrorDefinition","src":"3285:30:25","nodes":[],"documentation":{"id":10399,"nodeType":"StructuredDocumentation","src":"3220:60:25","text":" @dev The contract is already initialized."},"errorSelector":"f92ee8a9","name":"InvalidInitialization","nameLocation":"3291:21:25","parameters":{"id":10400,"nodeType":"ParameterList","parameters":[],"src":"3312:2:25"}},{"id":10404,"nodeType":"ErrorDefinition","src":"3383:24:25","nodes":[],"documentation":{"id":10402,"nodeType":"StructuredDocumentation","src":"3321:57:25","text":" @dev The contract is not initializing."},"errorSelector":"d7e6bcf8","name":"NotInitializing","nameLocation":"3389:15:25","parameters":{"id":10403,"nodeType":"ParameterList","parameters":[],"src":"3404:2:25"}},{"id":10409,"nodeType":"EventDefinition","src":"3508:34:25","nodes":[],"anonymous":false,"documentation":{"id":10405,"nodeType":"StructuredDocumentation","src":"3413:90:25","text":" @dev Triggered when the contract has been initialized or reinitialized."},"eventSelector":"c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2","name":"Initialized","nameLocation":"3514:11:25","parameters":{"id":10408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10407,"indexed":false,"mutability":"mutable","name":"version","nameLocation":"3533:7:25","nodeType":"VariableDeclaration","scope":10409,"src":"3526:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":10406,"name":"uint64","nodeType":"ElementaryTypeName","src":"3526:6:25","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3525:16:25"}},{"id":10492,"nodeType":"ModifierDefinition","src":"4069:1102:25","nodes":[],"body":{"id":10491,"nodeType":"Block","src":"4092:1079:25","nodes":[],"statements":[{"assignments":[10414],"declarations":[{"constant":false,"id":10414,"mutability":"mutable","name":"$","nameLocation":"4187:1:25","nodeType":"VariableDeclaration","scope":10491,"src":"4158:30:25","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10395_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":10413,"nodeType":"UserDefinedTypeName","pathNode":{"id":10412,"name":"InitializableStorage","nameLocations":["4158:20:25"],"nodeType":"IdentifierPath","referencedDeclaration":10395,"src":"4158:20:25"},"referencedDeclaration":10395,"src":"4158:20:25","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10395_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":10417,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10415,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10651,"src":"4191:24:25","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$10395_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":10416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4191:26:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10395_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4158:59:25"},{"assignments":[10419],"declarations":[{"constant":false,"id":10419,"mutability":"mutable","name":"isTopLevelCall","nameLocation":"4284:14:25","nodeType":"VariableDeclaration","scope":10491,"src":"4279:19:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10418,"name":"bool","nodeType":"ElementaryTypeName","src":"4279:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":10423,"initialValue":{"id":10422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4301:16:25","subExpression":{"expression":{"id":10420,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10414,"src":"4302:1:25","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10395_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":10421,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4304:13:25","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":10394,"src":"4302:15:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4279:38:25"},{"assignments":[10425],"declarations":[{"constant":false,"id":10425,"mutability":"mutable","name":"initialized","nameLocation":"4334:11:25","nodeType":"VariableDeclaration","scope":10491,"src":"4327:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":10424,"name":"uint64","nodeType":"ElementaryTypeName","src":"4327:6:25","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":10428,"initialValue":{"expression":{"id":10426,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10414,"src":"4348:1:25","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10395_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":10427,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4350:12:25","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":10391,"src":"4348:14:25","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"4327:35:25"},{"assignments":[10430],"declarations":[{"constant":false,"id":10430,"mutability":"mutable","name":"initialSetup","nameLocation":"4709:12:25","nodeType":"VariableDeclaration","scope":10491,"src":"4704:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10429,"name":"bool","nodeType":"ElementaryTypeName","src":"4704:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":10436,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":10433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10431,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10425,"src":"4724:11:25","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4739:1:25","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4724:16:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":10434,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10419,"src":"4744:14:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4724:34:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4704:54:25"},{"assignments":[10438],"declarations":[{"constant":false,"id":10438,"mutability":"mutable","name":"construction","nameLocation":"4773:12:25","nodeType":"VariableDeclaration","scope":10491,"src":"4768:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10437,"name":"bool","nodeType":"ElementaryTypeName","src":"4768:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":10451,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":10441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10439,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10425,"src":"4788:11:25","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":10440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4803:1:25","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4788:16:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"arguments":[{"id":10444,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4816:4:25","typeDescriptions":{"typeIdentifier":"t_contract$_Initializable_$10652","typeString":"contract Initializable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Initializable_$10652","typeString":"contract Initializable"}],"id":10443,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4808:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10442,"name":"address","nodeType":"ElementaryTypeName","src":"4808:7:25","typeDescriptions":{}}},"id":10445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4808:13:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4822:4:25","memberName":"code","nodeType":"MemberAccess","src":"4808:18:25","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4827:6:25","memberName":"length","nodeType":"MemberAccess","src":"4808:25:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4837:1:25","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4808:30:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4788:50:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4768:70:25"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4853:13:25","subExpression":{"id":10452,"name":"initialSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10430,"src":"4854:12:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":10455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4870:13:25","subExpression":{"id":10454,"name":"construction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10438,"src":"4871:12:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4853:30:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10461,"nodeType":"IfStatement","src":"4849:91:25","trueBody":{"id":10460,"nodeType":"Block","src":"4885:55:25","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10457,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10401,"src":"4906:21:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4906:23:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10459,"nodeType":"RevertStatement","src":"4899:30:25"}]}},{"expression":{"id":10466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":10462,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10414,"src":"4949:1:25","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10395_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":10464,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4951:12:25","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":10391,"src":"4949:14:25","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":10465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4966:1:25","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4949:18:25","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":10467,"nodeType":"ExpressionStatement","src":"4949:18:25"},{"condition":{"id":10468,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10419,"src":"4981:14:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10476,"nodeType":"IfStatement","src":"4977:67:25","trueBody":{"id":10475,"nodeType":"Block","src":"4997:47:25","statements":[{"expression":{"id":10473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":10469,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10414,"src":"5011:1:25","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10395_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":10471,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5013:13:25","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":10394,"src":"5011:15:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":10472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5029:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5011:22:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10474,"nodeType":"ExpressionStatement","src":"5011:22:25"}]}},{"id":10477,"nodeType":"PlaceholderStatement","src":"5053:1:25"},{"condition":{"id":10478,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10419,"src":"5068:14:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10490,"nodeType":"IfStatement","src":"5064:101:25","trueBody":{"id":10489,"nodeType":"Block","src":"5084:81:25","statements":[{"expression":{"id":10483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":10479,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10414,"src":"5098:1:25","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10395_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":10481,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5100:13:25","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":10394,"src":"5098:15:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":10482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5116:5:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5098:23:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10484,"nodeType":"ExpressionStatement","src":"5098:23:25"},{"eventCall":{"arguments":[{"hexValue":"31","id":10486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5152:1:25","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":10485,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10409,"src":"5140:11:25","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":10487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5140:14:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10488,"nodeType":"EmitStatement","src":"5135:19:25"}]}}]},"documentation":{"id":10410,"nodeType":"StructuredDocumentation","src":"3548:516:25","text":" @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n production.\n Emits an {Initialized} event."},"name":"initializer","nameLocation":"4078:11:25","parameters":{"id":10411,"nodeType":"ParameterList","parameters":[],"src":"4089:2:25"},"virtual":false,"visibility":"internal"},{"id":10539,"nodeType":"ModifierDefinition","src":"6250:431:25","nodes":[],"body":{"id":10538,"nodeType":"Block","src":"6289:392:25","nodes":[],"statements":[{"assignments":[10499],"declarations":[{"constant":false,"id":10499,"mutability":"mutable","name":"$","nameLocation":"6384:1:25","nodeType":"VariableDeclaration","scope":10538,"src":"6355:30:25","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10395_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":10498,"nodeType":"UserDefinedTypeName","pathNode":{"id":10497,"name":"InitializableStorage","nameLocations":["6355:20:25"],"nodeType":"IdentifierPath","referencedDeclaration":10395,"src":"6355:20:25"},"referencedDeclaration":10395,"src":"6355:20:25","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10395_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":10502,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10500,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10651,"src":"6388:24:25","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$10395_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":10501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6388:26:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10395_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6355:59:25"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10503,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10499,"src":"6429:1:25","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10395_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":10504,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6431:13:25","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":10394,"src":"6429:15:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":10508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10505,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10499,"src":"6448:1:25","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10395_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":10506,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6450:12:25","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":10391,"src":"6448:14:25","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":10507,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10495,"src":"6466:7:25","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6448:25:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6429:44:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10514,"nodeType":"IfStatement","src":"6425:105:25","trueBody":{"id":10513,"nodeType":"Block","src":"6475:55:25","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10510,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10401,"src":"6496:21:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6496:23:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10512,"nodeType":"RevertStatement","src":"6489:30:25"}]}},{"expression":{"id":10519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":10515,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10499,"src":"6539:1:25","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10395_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":10517,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6541:12:25","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":10391,"src":"6539:14:25","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10518,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10495,"src":"6556:7:25","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6539:24:25","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":10520,"nodeType":"ExpressionStatement","src":"6539:24:25"},{"expression":{"id":10525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":10521,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10499,"src":"6573:1:25","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10395_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":10523,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6575:13:25","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":10394,"src":"6573:15:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":10524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6591:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"6573:22:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10526,"nodeType":"ExpressionStatement","src":"6573:22:25"},{"id":10527,"nodeType":"PlaceholderStatement","src":"6605:1:25"},{"expression":{"id":10532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":10528,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10499,"src":"6616:1:25","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10395_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":10530,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6618:13:25","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":10394,"src":"6616:15:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":10531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6634:5:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"6616:23:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10533,"nodeType":"ExpressionStatement","src":"6616:23:25"},{"eventCall":{"arguments":[{"id":10535,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10495,"src":"6666:7:25","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":10534,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10409,"src":"6654:11:25","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":10536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6654:20:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10537,"nodeType":"EmitStatement","src":"6649:25:25"}]},"documentation":{"id":10493,"nodeType":"StructuredDocumentation","src":"5177:1068:25","text":" @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n Emits an {Initialized} event."},"name":"reinitializer","nameLocation":"6259:13:25","parameters":{"id":10496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10495,"mutability":"mutable","name":"version","nameLocation":"6280:7:25","nodeType":"VariableDeclaration","scope":10539,"src":"6273:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":10494,"name":"uint64","nodeType":"ElementaryTypeName","src":"6273:6:25","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"6272:16:25"},"virtual":false,"visibility":"internal"},{"id":10547,"nodeType":"ModifierDefinition","src":"6891:76:25","nodes":[],"body":{"id":10546,"nodeType":"Block","src":"6919:48:25","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10542,"name":"_checkInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10560,"src":"6929:18:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":10543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6929:20:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10544,"nodeType":"ExpressionStatement","src":"6929:20:25"},{"id":10545,"nodeType":"PlaceholderStatement","src":"6959:1:25"}]},"documentation":{"id":10540,"nodeType":"StructuredDocumentation","src":"6687:199:25","text":" @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly."},"name":"onlyInitializing","nameLocation":"6900:16:25","parameters":{"id":10541,"nodeType":"ParameterList","parameters":[],"src":"6916:2:25"},"virtual":false,"visibility":"internal"},{"id":10560,"nodeType":"FunctionDefinition","src":"7082:141:25","nodes":[],"body":{"id":10559,"nodeType":"Block","src":"7134:89:25","nodes":[],"statements":[{"condition":{"id":10553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7148:18:25","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":10551,"name":"_isInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10628,"src":"7149:15:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":10552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7149:17:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10558,"nodeType":"IfStatement","src":"7144:73:25","trueBody":{"id":10557,"nodeType":"Block","src":"7168:49:25","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10554,"name":"NotInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10404,"src":"7189:15:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7189:17:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10556,"nodeType":"RevertStatement","src":"7182:24:25"}]}}]},"documentation":{"id":10548,"nodeType":"StructuredDocumentation","src":"6973:104:25","text":" @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkInitializing","nameLocation":"7091:18:25","parameters":{"id":10549,"nodeType":"ParameterList","parameters":[],"src":"7109:2:25"},"returnParameters":{"id":10550,"nodeType":"ParameterList","parameters":[],"src":"7134:0:25"},"scope":10652,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":10606,"nodeType":"FunctionDefinition","src":"7709:422:25","nodes":[],"body":{"id":10605,"nodeType":"Block","src":"7758:373:25","nodes":[],"statements":[{"assignments":[10566],"declarations":[{"constant":false,"id":10566,"mutability":"mutable","name":"$","nameLocation":"7853:1:25","nodeType":"VariableDeclaration","scope":10605,"src":"7824:30:25","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10395_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":10565,"nodeType":"UserDefinedTypeName","pathNode":{"id":10564,"name":"InitializableStorage","nameLocations":["7824:20:25"],"nodeType":"IdentifierPath","referencedDeclaration":10395,"src":"7824:20:25"},"referencedDeclaration":10395,"src":"7824:20:25","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10395_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":10569,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10567,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10651,"src":"7857:24:25","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$10395_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":10568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7857:26:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10395_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7824:59:25"},{"condition":{"expression":{"id":10570,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10566,"src":"7898:1:25","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10395_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":10571,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7900:13:25","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":10394,"src":"7898:15:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10576,"nodeType":"IfStatement","src":"7894:76:25","trueBody":{"id":10575,"nodeType":"Block","src":"7915:55:25","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10572,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10401,"src":"7936:21:25","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7936:23:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10574,"nodeType":"RevertStatement","src":"7929:30:25"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":10584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10577,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10566,"src":"7983:1:25","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10395_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":10578,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7985:12:25","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":10391,"src":"7983:14:25","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":10581,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8006:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":10580,"name":"uint64","nodeType":"ElementaryTypeName","src":"8006:6:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":10579,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8001:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8001:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":10583,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8014:3:25","memberName":"max","nodeType":"MemberAccess","src":"8001:16:25","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"7983:34:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10604,"nodeType":"IfStatement","src":"7979:146:25","trueBody":{"id":10603,"nodeType":"Block","src":"8019:106:25","statements":[{"expression":{"id":10593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":10585,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10566,"src":"8033:1:25","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10395_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":10587,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8035:12:25","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":10391,"src":"8033:14:25","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":10590,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8055:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":10589,"name":"uint64","nodeType":"ElementaryTypeName","src":"8055:6:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":10588,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8050:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8050:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":10592,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8063:3:25","memberName":"max","nodeType":"MemberAccess","src":"8050:16:25","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"8033:33:25","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":10594,"nodeType":"ExpressionStatement","src":"8033:33:25"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":10598,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8102:6:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":10597,"name":"uint64","nodeType":"ElementaryTypeName","src":"8102:6:25","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":10596,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8097:4:25","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8097:12:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":10600,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8110:3:25","memberName":"max","nodeType":"MemberAccess","src":"8097:16:25","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":10595,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10409,"src":"8085:11:25","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":10601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8085:29:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10602,"nodeType":"EmitStatement","src":"8080:34:25"}]}}]},"documentation":{"id":10561,"nodeType":"StructuredDocumentation","src":"7229:475:25","text":" @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed."},"implemented":true,"kind":"function","modifiers":[],"name":"_disableInitializers","nameLocation":"7718:20:25","parameters":{"id":10562,"nodeType":"ParameterList","parameters":[],"src":"7738:2:25"},"returnParameters":{"id":10563,"nodeType":"ParameterList","parameters":[],"src":"7758:0:25"},"scope":10652,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":10617,"nodeType":"FunctionDefinition","src":"8241:128:25","nodes":[],"body":{"id":10616,"nodeType":"Block","src":"8306:63:25","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10612,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10651,"src":"8323:24:25","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$10395_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":10613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8323:26:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10395_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":10614,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8350:12:25","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":10391,"src":"8323:39:25","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":10611,"id":10615,"nodeType":"Return","src":"8316:46:25"}]},"documentation":{"id":10607,"nodeType":"StructuredDocumentation","src":"8137:99:25","text":" @dev Returns the highest version that has been initialized. See {reinitializer}."},"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializedVersion","nameLocation":"8250:22:25","parameters":{"id":10608,"nodeType":"ParameterList","parameters":[],"src":"8272:2:25"},"returnParameters":{"id":10611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10617,"src":"8298:6:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":10609,"name":"uint64","nodeType":"ElementaryTypeName","src":"8298:6:25","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"8297:8:25"},"scope":10652,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":10628,"nodeType":"FunctionDefinition","src":"8485:120:25","nodes":[],"body":{"id":10627,"nodeType":"Block","src":"8541:64:25","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10623,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10651,"src":"8558:24:25","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$10395_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":10624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8558:26:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10395_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":10625,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8585:13:25","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":10394,"src":"8558:40:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10622,"id":10626,"nodeType":"Return","src":"8551:47:25"}]},"documentation":{"id":10618,"nodeType":"StructuredDocumentation","src":"8375:105:25","text":" @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}."},"implemented":true,"kind":"function","modifiers":[],"name":"_isInitializing","nameLocation":"8494:15:25","parameters":{"id":10619,"nodeType":"ParameterList","parameters":[],"src":"8509:2:25"},"returnParameters":{"id":10622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10621,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10628,"src":"8535:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10620,"name":"bool","nodeType":"ElementaryTypeName","src":"8535:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8534:6:25"},"scope":10652,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":10637,"nodeType":"FunctionDefinition","src":"8819:122:25","nodes":[],"body":{"id":10636,"nodeType":"Block","src":"8896:45:25","nodes":[],"statements":[{"expression":{"id":10634,"name":"INITIALIZABLE_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10398,"src":"8913:21:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":10633,"id":10635,"nodeType":"Return","src":"8906:28:25"}]},"documentation":{"id":10629,"nodeType":"StructuredDocumentation","src":"8611:203:25","text":" @dev Pointer to storage slot. Allows integrators to override it with a custom storage location.\n NOTE: Consider following the ERC-7201 formula to derive storage locations."},"implemented":true,"kind":"function","modifiers":[],"name":"_initializableStorageSlot","nameLocation":"8828:25:25","parameters":{"id":10630,"nodeType":"ParameterList","parameters":[],"src":"8853:2:25"},"returnParameters":{"id":10633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10632,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10637,"src":"8887:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10631,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8887:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8886:9:25"},"scope":10652,"stateMutability":"pure","virtual":true,"visibility":"internal"},{"id":10651,"nodeType":"FunctionDefinition","src":"9071:205:25","nodes":[],"body":{"id":10650,"nodeType":"Block","src":"9161:115:25","nodes":[],"statements":[{"assignments":[10645],"declarations":[{"constant":false,"id":10645,"mutability":"mutable","name":"slot","nameLocation":"9179:4:25","nodeType":"VariableDeclaration","scope":10650,"src":"9171:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10644,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9171:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":10648,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10646,"name":"_initializableStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10637,"src":"9186:25:25","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes32_$","typeString":"function () pure returns (bytes32)"}},"id":10647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9186:27:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9171:42:25"},{"AST":{"nativeSrc":"9232:38:25","nodeType":"YulBlock","src":"9232:38:25","statements":[{"nativeSrc":"9246:14:25","nodeType":"YulAssignment","src":"9246:14:25","value":{"name":"slot","nativeSrc":"9256:4:25","nodeType":"YulIdentifier","src":"9256:4:25"},"variableNames":[{"name":"$.slot","nativeSrc":"9246:6:25","nodeType":"YulIdentifier","src":"9246:6:25"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":10642,"isOffset":false,"isSlot":true,"src":"9246:6:25","suffix":"slot","valueSize":1},{"declaration":10645,"isOffset":false,"isSlot":false,"src":"9256:4:25","valueSize":1}],"id":10649,"nodeType":"InlineAssembly","src":"9223:47:25"}]},"documentation":{"id":10638,"nodeType":"StructuredDocumentation","src":"8947:67:25","text":" @dev Returns a pointer to the storage namespace."},"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializableStorage","nameLocation":"9080:24:25","parameters":{"id":10639,"nodeType":"ParameterList","parameters":[],"src":"9104:2:25"},"returnParameters":{"id":10643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10642,"mutability":"mutable","name":"$","nameLocation":"9158:1:25","nodeType":"VariableDeclaration","scope":10651,"src":"9129:30:25","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10395_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":10641,"nodeType":"UserDefinedTypeName","pathNode":{"id":10640,"name":"InitializableStorage","nameLocations":["9129:20:25"],"nodeType":"IdentifierPath","referencedDeclaration":10395,"src":"9129:20:25"},"referencedDeclaration":10395,"src":"9129:20:25","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10395_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"src":"9128:32:25"},"scope":10652,"stateMutability":"pure","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[],"canonicalName":"Initializable","contractDependencies":[],"contractKind":"contract","documentation":{"id":10387,"nodeType":"StructuredDocumentation","src":"139:2209:25","text":" @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```solidity\n contract MyToken is ERC20Upgradeable {\n function initialize() initializer public {\n __ERC20_init(\"MyToken\", \"MTK\");\n }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n function initializeV2() reinitializer(2) public {\n __ERC20Permit_init(\"MyToken\");\n }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n ```\n ===="},"fullyImplemented":true,"linearizedBaseContracts":[10652],"name":"Initializable","nameLocation":"2367:13:25","scope":10653,"usedErrors":[10401,10404],"usedEvents":[10409]}],"license":"MIT"}},"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"id":26,"ast":{"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":10835,"exportedSymbols":{"ERC1967Utils":[12524],"IERC1822Proxiable":[12055],"Initializable":[10652],"UUPSUpgradeable":[10834]},"nodeType":"SourceUnit","src":"115:6458:26","nodes":[{"id":10654,"nodeType":"PragmaDirective","src":"115:24:26","nodes":[],"literals":["solidity","^","0.8",".22"]},{"id":10656,"nodeType":"ImportDirective","src":"141:88:26","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol","file":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","nameLocation":"-1:-1:-1","scope":10835,"sourceUnit":12056,"symbolAliases":[{"foreign":{"id":10655,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12055,"src":"149:17:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":10658,"nodeType":"ImportDirective","src":"230:84:26","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","nameLocation":"-1:-1:-1","scope":10835,"sourceUnit":12525,"symbolAliases":[{"foreign":{"id":10657,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12524,"src":"238:12:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":10660,"nodeType":"ImportDirective","src":"315:50:26","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"./Initializable.sol","nameLocation":"-1:-1:-1","scope":10835,"sourceUnit":10653,"symbolAliases":[{"foreign":{"id":10659,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10652,"src":"323:13:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":10834,"nodeType":"ContractDefinition","src":"986:5586:26","nodes":[{"id":10672,"nodeType":"VariableDeclaration","src":"1128:48:26","nodes":[],"constant":false,"documentation":{"id":10666,"nodeType":"StructuredDocumentation","src":"1062:61:26","text":"@custom:oz-upgrades-unsafe-allow state-variable-immutable"},"mutability":"immutable","name":"__self","nameLocation":"1154:6:26","scope":10834,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10667,"name":"address","nodeType":"ElementaryTypeName","src":"1128:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"id":10670,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1171:4:26","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$10834","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$10834","typeString":"contract UUPSUpgradeable"}],"id":10669,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1163:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10668,"name":"address","nodeType":"ElementaryTypeName","src":"1163:7:26","typeDescriptions":{}}},"id":10671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1163:13:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":10676,"nodeType":"VariableDeclaration","src":"1819:58:26","nodes":[],"constant":true,"documentation":{"id":10673,"nodeType":"StructuredDocumentation","src":"1183:631:26","text":" @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\n and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\n while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\n If the getter returns `\"5.0.0\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\n be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\n during an upgrade."},"functionSelector":"ad3cb1cc","mutability":"constant","name":"UPGRADE_INTERFACE_VERSION","nameLocation":"1842:25:26","scope":10834,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10674,"name":"string","nodeType":"ElementaryTypeName","src":"1819:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"352e302e30","id":10675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1870:7:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c","typeString":"literal_string \"5.0.0\""},"value":"5.0.0"},"visibility":"public"},{"id":10679,"nodeType":"ErrorDefinition","src":"1954:36:26","nodes":[],"documentation":{"id":10677,"nodeType":"StructuredDocumentation","src":"1884:65:26","text":" @dev The call is from an unauthorized context."},"errorSelector":"e07c8dba","name":"UUPSUnauthorizedCallContext","nameLocation":"1960:27:26","parameters":{"id":10678,"nodeType":"ParameterList","parameters":[],"src":"1987:2:26"}},{"id":10684,"nodeType":"ErrorDefinition","src":"2069:49:26","nodes":[],"documentation":{"id":10680,"nodeType":"StructuredDocumentation","src":"1996:68:26","text":" @dev The storage `slot` is unsupported as a UUID."},"errorSelector":"aa1d49a4","name":"UUPSUnsupportedProxiableUUID","nameLocation":"2075:28:26","parameters":{"id":10683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10682,"mutability":"mutable","name":"slot","nameLocation":"2112:4:26","nodeType":"VariableDeclaration","scope":10684,"src":"2104:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10681,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2104:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2103:14:26"}},{"id":10692,"nodeType":"ModifierDefinition","src":"2624:62:26","nodes":[],"body":{"id":10691,"nodeType":"Block","src":"2645:41:26","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10687,"name":"_checkProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10766,"src":"2655:11:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":10688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2655:13:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10689,"nodeType":"ExpressionStatement","src":"2655:13:26"},{"id":10690,"nodeType":"PlaceholderStatement","src":"2678:1:26"}]},"documentation":{"id":10685,"nodeType":"StructuredDocumentation","src":"2124:495:26","text":" @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n a proxy contract with an implementation (as defined in ERC-1967) pointing to self. This should only be the case\n for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n function through ERC-1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n fail."},"name":"onlyProxy","nameLocation":"2633:9:26","parameters":{"id":10686,"nodeType":"ParameterList","parameters":[],"src":"2642:2:26"},"virtual":false,"visibility":"internal"},{"id":10700,"nodeType":"ModifierDefinition","src":"2892:72:26","nodes":[],"body":{"id":10699,"nodeType":"Block","src":"2916:48:26","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10695,"name":"_checkNotDelegated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10782,"src":"2926:18:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":10696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2926:20:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10697,"nodeType":"ExpressionStatement","src":"2926:20:26"},{"id":10698,"nodeType":"PlaceholderStatement","src":"2956:1:26"}]},"documentation":{"id":10693,"nodeType":"StructuredDocumentation","src":"2692:195:26","text":" @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n callable on the implementing contract but not through proxies."},"name":"notDelegated","nameLocation":"2901:12:26","parameters":{"id":10694,"nodeType":"ParameterList","parameters":[],"src":"2913:2:26"},"virtual":false,"visibility":"internal"},{"id":10706,"nodeType":"FunctionDefinition","src":"2970:67:26","nodes":[],"body":{"id":10705,"nodeType":"Block","src":"3030:7:26","nodes":[],"statements":[]},"implemented":true,"kind":"function","modifiers":[{"id":10703,"kind":"modifierInvocation","modifierName":{"id":10702,"name":"onlyInitializing","nameLocations":["3013:16:26"],"nodeType":"IdentifierPath","referencedDeclaration":10547,"src":"3013:16:26"},"nodeType":"ModifierInvocation","src":"3013:16:26"}],"name":"__UUPSUpgradeable_init","nameLocation":"2979:22:26","parameters":{"id":10701,"nodeType":"ParameterList","parameters":[],"src":"3001:2:26"},"returnParameters":{"id":10704,"nodeType":"ParameterList","parameters":[],"src":"3030:0:26"},"scope":10834,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":10712,"nodeType":"FunctionDefinition","src":"3043:77:26","nodes":[],"body":{"id":10711,"nodeType":"Block","src":"3113:7:26","nodes":[],"statements":[]},"implemented":true,"kind":"function","modifiers":[{"id":10709,"kind":"modifierInvocation","modifierName":{"id":10708,"name":"onlyInitializing","nameLocations":["3096:16:26"],"nodeType":"IdentifierPath","referencedDeclaration":10547,"src":"3096:16:26"},"nodeType":"ModifierInvocation","src":"3096:16:26"}],"name":"__UUPSUpgradeable_init_unchained","nameLocation":"3052:32:26","parameters":{"id":10707,"nodeType":"ParameterList","parameters":[],"src":"3084:2:26"},"returnParameters":{"id":10710,"nodeType":"ParameterList","parameters":[],"src":"3113:0:26"},"scope":10834,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":10724,"nodeType":"FunctionDefinition","src":"3708:134:26","nodes":[],"body":{"id":10723,"nodeType":"Block","src":"3786:56:26","nodes":[],"statements":[{"expression":{"expression":{"id":10720,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12524,"src":"3803:12:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$12524_$","typeString":"type(library ERC1967Utils)"}},"id":10721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3816:19:26","memberName":"IMPLEMENTATION_SLOT","nodeType":"MemberAccess","referencedDeclaration":12245,"src":"3803:32:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":10719,"id":10722,"nodeType":"Return","src":"3796:39:26"}]},"baseFunctions":[12054],"documentation":{"id":10713,"nodeType":"StructuredDocumentation","src":"3125:578:26","text":" @dev Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the\n implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"functionSelector":"52d1902d","implemented":true,"kind":"function","modifiers":[{"id":10716,"kind":"modifierInvocation","modifierName":{"id":10715,"name":"notDelegated","nameLocations":["3755:12:26"],"nodeType":"IdentifierPath","referencedDeclaration":10700,"src":"3755:12:26"},"nodeType":"ModifierInvocation","src":"3755:12:26"}],"name":"proxiableUUID","nameLocation":"3717:13:26","parameters":{"id":10714,"nodeType":"ParameterList","parameters":[],"src":"3730:2:26"},"returnParameters":{"id":10719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10718,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10724,"src":"3777:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10717,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3777:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3776:9:26"},"scope":10834,"stateMutability":"view","virtual":true,"visibility":"external"},{"id":10744,"nodeType":"FunctionDefinition","src":"4161:214:26","nodes":[],"body":{"id":10743,"nodeType":"Block","src":"4266:109:26","nodes":[],"statements":[{"expression":{"arguments":[{"id":10735,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10727,"src":"4294:17:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10734,"name":"_authorizeUpgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10788,"src":"4276:17:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4276:36:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10737,"nodeType":"ExpressionStatement","src":"4276:36:26"},{"expression":{"arguments":[{"id":10739,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10727,"src":"4344:17:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10740,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10729,"src":"4363:4:26","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":10738,"name":"_upgradeToAndCallUUPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10833,"src":"4322:21:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":10741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4322:46:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10742,"nodeType":"ExpressionStatement","src":"4322:46:26"}]},"documentation":{"id":10725,"nodeType":"StructuredDocumentation","src":"3848:308:26","text":" @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n encoded in `data`.\n Calls {_authorizeUpgrade}.\n Emits an {Upgraded} event.\n @custom:oz-upgrades-unsafe-allow-reachable delegatecall"},"functionSelector":"4f1ef286","implemented":true,"kind":"function","modifiers":[{"id":10732,"kind":"modifierInvocation","modifierName":{"id":10731,"name":"onlyProxy","nameLocations":["4256:9:26"],"nodeType":"IdentifierPath","referencedDeclaration":10692,"src":"4256:9:26"},"nodeType":"ModifierInvocation","src":"4256:9:26"}],"name":"upgradeToAndCall","nameLocation":"4170:16:26","parameters":{"id":10730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10727,"mutability":"mutable","name":"newImplementation","nameLocation":"4195:17:26","nodeType":"VariableDeclaration","scope":10744,"src":"4187:25:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10726,"name":"address","nodeType":"ElementaryTypeName","src":"4187:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10729,"mutability":"mutable","name":"data","nameLocation":"4227:4:26","nodeType":"VariableDeclaration","scope":10744,"src":"4214:17:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10728,"name":"bytes","nodeType":"ElementaryTypeName","src":"4214:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4186:46:26"},"returnParameters":{"id":10733,"nodeType":"ParameterList","parameters":[],"src":"4266:0:26"},"scope":10834,"stateMutability":"payable","virtual":true,"visibility":"public"},{"id":10766,"nodeType":"FunctionDefinition","src":"4578:312:26","nodes":[],"body":{"id":10765,"nodeType":"Block","src":"4623:267:26","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10750,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4658:4:26","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$10834","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$10834","typeString":"contract UUPSUpgradeable"}],"id":10749,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4650:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10748,"name":"address","nodeType":"ElementaryTypeName","src":"4650:7:26","typeDescriptions":{}}},"id":10751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4650:13:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":10752,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10672,"src":"4667:6:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4650:23:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10754,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12524,"src":"4728:12:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$12524_$","typeString":"type(library ERC1967Utils)"}},"id":10755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4741:17:26","memberName":"getImplementation","nodeType":"MemberAccess","referencedDeclaration":12276,"src":"4728:30:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":10756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4728:32:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":10757,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10672,"src":"4764:6:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4728:42:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4650:120:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10764,"nodeType":"IfStatement","src":"4633:251:26","trueBody":{"id":10763,"nodeType":"Block","src":"4823:61:26","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10760,"name":"UUPSUnauthorizedCallContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10679,"src":"4844:27:26","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4844:29:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10762,"nodeType":"RevertStatement","src":"4837:36:26"}]}}]},"documentation":{"id":10745,"nodeType":"StructuredDocumentation","src":"4381:192:26","text":" @dev Reverts if the execution is not performed via delegatecall or the execution\n context is not of a proxy with an ERC-1967 compliant implementation pointing to self."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkProxy","nameLocation":"4587:11:26","parameters":{"id":10746,"nodeType":"ParameterList","parameters":[],"src":"4598:2:26"},"returnParameters":{"id":10747,"nodeType":"ParameterList","parameters":[],"src":"4623:0:26"},"scope":10834,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":10782,"nodeType":"FunctionDefinition","src":"5007:213:26","nodes":[],"body":{"id":10781,"nodeType":"Block","src":"5059:161:26","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10772,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5081:4:26","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$10834","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$10834","typeString":"contract UUPSUpgradeable"}],"id":10771,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5073:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10770,"name":"address","nodeType":"ElementaryTypeName","src":"5073:7:26","typeDescriptions":{}}},"id":10773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5073:13:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":10774,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10672,"src":"5090:6:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5073:23:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10780,"nodeType":"IfStatement","src":"5069:145:26","trueBody":{"id":10779,"nodeType":"Block","src":"5098:116:26","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10776,"name":"UUPSUnauthorizedCallContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10679,"src":"5174:27:26","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5174:29:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10778,"nodeType":"RevertStatement","src":"5167:36:26"}]}}]},"documentation":{"id":10767,"nodeType":"StructuredDocumentation","src":"4896:106:26","text":" @dev Reverts if the execution is performed via delegatecall.\n See {notDelegated}."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkNotDelegated","nameLocation":"5016:18:26","parameters":{"id":10768,"nodeType":"ParameterList","parameters":[],"src":"5034:2:26"},"returnParameters":{"id":10769,"nodeType":"ParameterList","parameters":[],"src":"5059:0:26"},"scope":10834,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":10788,"nodeType":"FunctionDefinition","src":"5603:71:26","nodes":[],"documentation":{"id":10783,"nodeType":"StructuredDocumentation","src":"5226:372:26","text":" @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n {upgradeToAndCall}.\n Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n ```solidity\n function _authorizeUpgrade(address) internal onlyOwner {}\n ```"},"implemented":false,"kind":"function","modifiers":[],"name":"_authorizeUpgrade","nameLocation":"5612:17:26","parameters":{"id":10786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10785,"mutability":"mutable","name":"newImplementation","nameLocation":"5638:17:26","nodeType":"VariableDeclaration","scope":10788,"src":"5630:25:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10784,"name":"address","nodeType":"ElementaryTypeName","src":"5630:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5629:27:26"},"returnParameters":{"id":10787,"nodeType":"ParameterList","parameters":[],"src":"5673:0:26"},"scope":10834,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":10833,"nodeType":"FunctionDefinition","src":"6032:538:26","nodes":[],"body":{"id":10832,"nodeType":"Block","src":"6117:453:26","nodes":[],"statements":[{"clauses":[{"block":{"id":10821,"nodeType":"Block","src":"6207:212:26","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":10807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10804,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10802,"src":"6225:4:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":10805,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12524,"src":"6233:12:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$12524_$","typeString":"type(library ERC1967Utils)"}},"id":10806,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6246:19:26","memberName":"IMPLEMENTATION_SLOT","nodeType":"MemberAccess","referencedDeclaration":12245,"src":"6233:32:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6225:40:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10813,"nodeType":"IfStatement","src":"6221:120:26","trueBody":{"id":10812,"nodeType":"Block","src":"6267:74:26","statements":[{"errorCall":{"arguments":[{"id":10809,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10802,"src":"6321:4:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":10808,"name":"UUPSUnsupportedProxiableUUID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10684,"src":"6292:28:26","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$_t_error_$","typeString":"function (bytes32) pure returns (error)"}},"id":10810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6292:34:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10811,"nodeType":"RevertStatement","src":"6285:41:26"}]}},{"expression":{"arguments":[{"id":10817,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10791,"src":"6384:17:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10818,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10793,"src":"6403:4:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":10814,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12524,"src":"6354:12:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$12524_$","typeString":"type(library ERC1967Utils)"}},"id":10816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6367:16:26","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":12339,"src":"6354:29:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":10819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6354:54:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10820,"nodeType":"ExpressionStatement","src":"6354:54:26"}]},"errorName":"","id":10822,"nodeType":"TryCatchClause","parameters":{"id":10803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10802,"mutability":"mutable","name":"slot","nameLocation":"6201:4:26","nodeType":"VariableDeclaration","scope":10822,"src":"6193:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10801,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6193:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6192:14:26"},"src":"6184:235:26"},{"block":{"id":10829,"nodeType":"Block","src":"6426:138:26","statements":[{"errorCall":{"arguments":[{"id":10826,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10791,"src":"6535:17:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10823,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12524,"src":"6493:12:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$12524_$","typeString":"type(library ERC1967Utils)"}},"id":10825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6506:28:26","memberName":"ERC1967InvalidImplementation","nodeType":"MemberAccess","referencedDeclaration":12250,"src":"6493:41:26","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":10827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6493:60:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10828,"nodeType":"RevertStatement","src":"6486:67:26"}]},"errorName":"","id":10830,"nodeType":"TryCatchClause","src":"6420:144:26"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":10797,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10791,"src":"6149:17:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10796,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12055,"src":"6131:17:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1822Proxiable_$12055_$","typeString":"type(contract IERC1822Proxiable)"}},"id":10798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6131:36:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1822Proxiable_$12055","typeString":"contract IERC1822Proxiable"}},"id":10799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6168:13:26","memberName":"proxiableUUID","nodeType":"MemberAccess","referencedDeclaration":12054,"src":"6131:50:26","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":10800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6131:52:26","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":10831,"nodeType":"TryStatement","src":"6127:437:26"}]},"documentation":{"id":10789,"nodeType":"StructuredDocumentation","src":"5680:347:26","text":" @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\n As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\n is expected to be the implementation slot in ERC-1967.\n Emits an {IERC1967-Upgraded} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCallUUPS","nameLocation":"6041:21:26","parameters":{"id":10794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10791,"mutability":"mutable","name":"newImplementation","nameLocation":"6071:17:26","nodeType":"VariableDeclaration","scope":10833,"src":"6063:25:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10790,"name":"address","nodeType":"ElementaryTypeName","src":"6063:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10793,"mutability":"mutable","name":"data","nameLocation":"6103:4:26","nodeType":"VariableDeclaration","scope":10833,"src":"6090:17:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10792,"name":"bytes","nodeType":"ElementaryTypeName","src":"6090:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6062:46:26"},"returnParameters":{"id":10795,"nodeType":"ParameterList","parameters":[],"src":"6117:0:26"},"scope":10834,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":10662,"name":"Initializable","nameLocations":["1023:13:26"],"nodeType":"IdentifierPath","referencedDeclaration":10652,"src":"1023:13:26"},"id":10663,"nodeType":"InheritanceSpecifier","src":"1023:13:26"},{"baseName":{"id":10664,"name":"IERC1822Proxiable","nameLocations":["1038:17:26"],"nodeType":"IdentifierPath","referencedDeclaration":12055,"src":"1038:17:26"},"id":10665,"nodeType":"InheritanceSpecifier","src":"1038:17:26"}],"canonicalName":"UUPSUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":10661,"nodeType":"StructuredDocumentation","src":"367:618:26","text":" @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n `UUPSUpgradeable` with a custom implementation of upgrades.\n The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism."},"fullyImplemented":false,"linearizedBaseContracts":[10834,12055,10652],"name":"UUPSUpgradeable","nameLocation":"1004:15:26","scope":10835,"usedErrors":[10401,10404,10679,10684,12250,12263,13148,13441],"usedEvents":[10409,12028]}],"license":"MIT"}},"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol":{"id":27,"ast":{"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","id":11452,"exportedSymbols":{"ContextUpgradeable":[11497],"ERC20Upgradeable":[11451],"IERC20":[12648],"IERC20Errors":[12097],"IERC20Metadata":[12674],"Initializable":[10652]},"nodeType":"SourceUnit","src":"105:12023:27","nodes":[{"id":10836,"nodeType":"PragmaDirective","src":"105:24:27","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":10838,"nodeType":"ImportDirective","src":"131:70:27","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","nameLocation":"-1:-1:-1","scope":11452,"sourceUnit":12649,"symbolAliases":[{"foreign":{"id":10837,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"139:6:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":10840,"nodeType":"ImportDirective","src":"202:97:27","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","nameLocation":"-1:-1:-1","scope":11452,"sourceUnit":12675,"symbolAliases":[{"foreign":{"id":10839,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12674,"src":"210:14:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":10842,"nodeType":"ImportDirective","src":"300:70:27","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"../../utils/ContextUpgradeable.sol","nameLocation":"-1:-1:-1","scope":11452,"sourceUnit":11498,"symbolAliases":[{"foreign":{"id":10841,"name":"ContextUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11497,"src":"308:18:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":10844,"nodeType":"ImportDirective","src":"371:83:27","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol","file":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","nameLocation":"-1:-1:-1","scope":11452,"sourceUnit":12193,"symbolAliases":[{"foreign":{"id":10843,"name":"IERC20Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12097,"src":"379:12:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":10846,"nodeType":"ImportDirective","src":"455:66:27","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../../proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":11452,"sourceUnit":10653,"symbolAliases":[{"foreign":{"id":10845,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10652,"src":"463:13:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":11451,"nodeType":"ContractDefinition","src":"1281:10846:27","nodes":[{"id":10875,"nodeType":"StructDefinition","src":"1465:246:27","nodes":[],"canonicalName":"ERC20Upgradeable.ERC20Storage","documentation":{"id":10858,"nodeType":"StructuredDocumentation","src":"1397:63:27","text":"@custom:storage-location erc7201:openzeppelin.storage.ERC20"},"members":[{"constant":false,"id":10862,"mutability":"mutable","name":"_balances","nameLocation":"1531:9:27","nodeType":"VariableDeclaration","scope":10875,"src":"1495:45:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":10861,"keyName":"account","keyNameLocation":"1511:7:27","keyType":{"id":10859,"name":"address","nodeType":"ElementaryTypeName","src":"1503:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1495:35:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":10860,"name":"uint256","nodeType":"ElementaryTypeName","src":"1522:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":10868,"mutability":"mutable","name":"_allowances","nameLocation":"1615:11:27","nodeType":"VariableDeclaration","scope":10875,"src":"1551:75:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":10867,"keyName":"account","keyNameLocation":"1567:7:27","keyType":{"id":10863,"name":"address","nodeType":"ElementaryTypeName","src":"1559:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1551:63:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":10866,"keyName":"spender","keyNameLocation":"1594:7:27","keyType":{"id":10864,"name":"address","nodeType":"ElementaryTypeName","src":"1586:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1578:35:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":10865,"name":"uint256","nodeType":"ElementaryTypeName","src":"1605:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"constant":false,"id":10870,"mutability":"mutable","name":"_totalSupply","nameLocation":"1645:12:27","nodeType":"VariableDeclaration","scope":10875,"src":"1637:20:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10869,"name":"uint256","nodeType":"ElementaryTypeName","src":"1637:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10872,"mutability":"mutable","name":"_name","nameLocation":"1675:5:27","nodeType":"VariableDeclaration","scope":10875,"src":"1668:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":10871,"name":"string","nodeType":"ElementaryTypeName","src":"1668:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":10874,"mutability":"mutable","name":"_symbol","nameLocation":"1697:7:27","nodeType":"VariableDeclaration","scope":10875,"src":"1690:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":10873,"name":"string","nodeType":"ElementaryTypeName","src":"1690:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"ERC20Storage","nameLocation":"1472:12:27","scope":11451,"visibility":"public"},{"id":10878,"nodeType":"VariableDeclaration","src":"1826:114:27","nodes":[],"constant":true,"mutability":"constant","name":"ERC20StorageLocation","nameLocation":"1851:20:27","scope":11451,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10876,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1826:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307835326336333234376531663437646231396435636530343630303330633439376630363763613463656266373162613938656561646162653230626163653030","id":10877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1874:66:27","typeDescriptions":{"typeIdentifier":"t_rational_37439836327923360225337895871394760624280537466773280374265222508165906222592_by_1","typeString":"int_const 3743...(69 digits omitted)...2592"},"value":"0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00"},"visibility":"private"},{"id":10886,"nodeType":"FunctionDefinition","src":"1947:153:27","nodes":[],"body":{"id":10885,"nodeType":"Block","src":"2021:79:27","nodes":[],"statements":[{"AST":{"nativeSrc":"2040:54:27","nodeType":"YulBlock","src":"2040:54:27","statements":[{"nativeSrc":"2054:30:27","nodeType":"YulAssignment","src":"2054:30:27","value":{"name":"ERC20StorageLocation","nativeSrc":"2064:20:27","nodeType":"YulIdentifier","src":"2064:20:27"},"variableNames":[{"name":"$.slot","nativeSrc":"2054:6:27","nodeType":"YulIdentifier","src":"2054:6:27"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":10882,"isOffset":false,"isSlot":true,"src":"2054:6:27","suffix":"slot","valueSize":1},{"declaration":10878,"isOffset":false,"isSlot":false,"src":"2064:20:27","valueSize":1}],"id":10884,"nodeType":"InlineAssembly","src":"2031:63:27"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getERC20Storage","nameLocation":"1956:16:27","parameters":{"id":10879,"nodeType":"ParameterList","parameters":[],"src":"1972:2:27"},"returnParameters":{"id":10883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10882,"mutability":"mutable","name":"$","nameLocation":"2018:1:27","nodeType":"VariableDeclaration","scope":10886,"src":"1997:22:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":10881,"nodeType":"UserDefinedTypeName","pathNode":{"id":10880,"name":"ERC20Storage","nameLocations":["1997:12:27"],"nodeType":"IdentifierPath","referencedDeclaration":10875,"src":"1997:12:27"},"referencedDeclaration":10875,"src":"1997:12:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"src":"1996:24:27"},"scope":11451,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":10902,"nodeType":"FunctionDefinition","src":"2263:147:27","nodes":[],"body":{"id":10901,"nodeType":"Block","src":"2355:55:27","nodes":[],"statements":[{"expression":{"arguments":[{"id":10897,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10889,"src":"2388:5:27","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":10898,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10891,"src":"2395:7:27","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":10896,"name":"__ERC20_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10930,"src":"2365:22:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":10899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2365:38:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10900,"nodeType":"ExpressionStatement","src":"2365:38:27"}]},"documentation":{"id":10887,"nodeType":"StructuredDocumentation","src":"2106:152:27","text":" @dev Sets the values for {name} and {symbol}.\n Both values are immutable: they can only be set once during construction."},"implemented":true,"kind":"function","modifiers":[{"id":10894,"kind":"modifierInvocation","modifierName":{"id":10893,"name":"onlyInitializing","nameLocations":["2338:16:27"],"nodeType":"IdentifierPath","referencedDeclaration":10547,"src":"2338:16:27"},"nodeType":"ModifierInvocation","src":"2338:16:27"}],"name":"__ERC20_init","nameLocation":"2272:12:27","parameters":{"id":10892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10889,"mutability":"mutable","name":"name_","nameLocation":"2299:5:27","nodeType":"VariableDeclaration","scope":10902,"src":"2285:19:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10888,"name":"string","nodeType":"ElementaryTypeName","src":"2285:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":10891,"mutability":"mutable","name":"symbol_","nameLocation":"2320:7:27","nodeType":"VariableDeclaration","scope":10902,"src":"2306:21:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10890,"name":"string","nodeType":"ElementaryTypeName","src":"2306:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2284:44:27"},"returnParameters":{"id":10895,"nodeType":"ParameterList","parameters":[],"src":"2355:0:27"},"scope":11451,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":10930,"nodeType":"FunctionDefinition","src":"2416:216:27","nodes":[],"body":{"id":10929,"nodeType":"Block","src":"2518:114:27","nodes":[],"statements":[{"assignments":[10913],"declarations":[{"constant":false,"id":10913,"mutability":"mutable","name":"$","nameLocation":"2549:1:27","nodeType":"VariableDeclaration","scope":10929,"src":"2528:22:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":10912,"nodeType":"UserDefinedTypeName","pathNode":{"id":10911,"name":"ERC20Storage","nameLocations":["2528:12:27"],"nodeType":"IdentifierPath","referencedDeclaration":10875,"src":"2528:12:27"},"referencedDeclaration":10875,"src":"2528:12:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":10916,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10914,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10886,"src":"2553:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$10875_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":10915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2553:18:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2528:43:27"},{"expression":{"id":10921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":10917,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10913,"src":"2581:1:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":10919,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2583:5:27","memberName":"_name","nodeType":"MemberAccess","referencedDeclaration":10872,"src":"2581:7:27","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10920,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10904,"src":"2591:5:27","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2581:15:27","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":10922,"nodeType":"ExpressionStatement","src":"2581:15:27"},{"expression":{"id":10927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":10923,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10913,"src":"2606:1:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":10925,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2608:7:27","memberName":"_symbol","nodeType":"MemberAccess","referencedDeclaration":10874,"src":"2606:9:27","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10926,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10906,"src":"2618:7:27","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2606:19:27","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":10928,"nodeType":"ExpressionStatement","src":"2606:19:27"}]},"implemented":true,"kind":"function","modifiers":[{"id":10909,"kind":"modifierInvocation","modifierName":{"id":10908,"name":"onlyInitializing","nameLocations":["2501:16:27"],"nodeType":"IdentifierPath","referencedDeclaration":10547,"src":"2501:16:27"},"nodeType":"ModifierInvocation","src":"2501:16:27"}],"name":"__ERC20_init_unchained","nameLocation":"2425:22:27","parameters":{"id":10907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10904,"mutability":"mutable","name":"name_","nameLocation":"2462:5:27","nodeType":"VariableDeclaration","scope":10930,"src":"2448:19:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10903,"name":"string","nodeType":"ElementaryTypeName","src":"2448:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":10906,"mutability":"mutable","name":"symbol_","nameLocation":"2483:7:27","nodeType":"VariableDeclaration","scope":10930,"src":"2469:21:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10905,"name":"string","nodeType":"ElementaryTypeName","src":"2469:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2447:44:27"},"returnParameters":{"id":10910,"nodeType":"ParameterList","parameters":[],"src":"2518:0:27"},"scope":11451,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":10946,"nodeType":"FunctionDefinition","src":"2697:144:27","nodes":[],"body":{"id":10945,"nodeType":"Block","src":"2757:84:27","nodes":[],"statements":[{"assignments":[10938],"declarations":[{"constant":false,"id":10938,"mutability":"mutable","name":"$","nameLocation":"2788:1:27","nodeType":"VariableDeclaration","scope":10945,"src":"2767:22:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":10937,"nodeType":"UserDefinedTypeName","pathNode":{"id":10936,"name":"ERC20Storage","nameLocations":["2767:12:27"],"nodeType":"IdentifierPath","referencedDeclaration":10875,"src":"2767:12:27"},"referencedDeclaration":10875,"src":"2767:12:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":10941,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10939,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10886,"src":"2792:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$10875_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":10940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2792:18:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2767:43:27"},{"expression":{"expression":{"id":10942,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10938,"src":"2827:1:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":10943,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2829:5:27","memberName":"_name","nodeType":"MemberAccess","referencedDeclaration":10872,"src":"2827:7:27","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":10935,"id":10944,"nodeType":"Return","src":"2820:14:27"}]},"baseFunctions":[12661],"documentation":{"id":10931,"nodeType":"StructuredDocumentation","src":"2638:54:27","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"2706:4:27","parameters":{"id":10932,"nodeType":"ParameterList","parameters":[],"src":"2710:2:27"},"returnParameters":{"id":10935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10934,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10946,"src":"2742:13:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10933,"name":"string","nodeType":"ElementaryTypeName","src":"2742:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2741:15:27"},"scope":11451,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":10962,"nodeType":"FunctionDefinition","src":"2954:148:27","nodes":[],"body":{"id":10961,"nodeType":"Block","src":"3016:86:27","nodes":[],"statements":[{"assignments":[10954],"declarations":[{"constant":false,"id":10954,"mutability":"mutable","name":"$","nameLocation":"3047:1:27","nodeType":"VariableDeclaration","scope":10961,"src":"3026:22:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":10953,"nodeType":"UserDefinedTypeName","pathNode":{"id":10952,"name":"ERC20Storage","nameLocations":["3026:12:27"],"nodeType":"IdentifierPath","referencedDeclaration":10875,"src":"3026:12:27"},"referencedDeclaration":10875,"src":"3026:12:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":10957,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10955,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10886,"src":"3051:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$10875_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":10956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3051:18:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3026:43:27"},{"expression":{"expression":{"id":10958,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10954,"src":"3086:1:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":10959,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3088:7:27","memberName":"_symbol","nodeType":"MemberAccess","referencedDeclaration":10874,"src":"3086:9:27","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":10951,"id":10960,"nodeType":"Return","src":"3079:16:27"}]},"baseFunctions":[12667],"documentation":{"id":10947,"nodeType":"StructuredDocumentation","src":"2847:102:27","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"2963:6:27","parameters":{"id":10948,"nodeType":"ParameterList","parameters":[],"src":"2969:2:27"},"returnParameters":{"id":10951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10950,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10962,"src":"3001:13:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10949,"name":"string","nodeType":"ElementaryTypeName","src":"3001:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3000:15:27"},"scope":11451,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":10971,"nodeType":"FunctionDefinition","src":"3735:82:27","nodes":[],"body":{"id":10970,"nodeType":"Block","src":"3791:26:27","nodes":[],"statements":[{"expression":{"hexValue":"3138","id":10968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3808:2:27","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"functionReturnParameters":10967,"id":10969,"nodeType":"Return","src":"3801:9:27"}]},"baseFunctions":[12673],"documentation":{"id":10963,"nodeType":"StructuredDocumentation","src":"3108:622:27","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the default value returned by this function, unless\n it's overridden.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"3744:8:27","parameters":{"id":10964,"nodeType":"ParameterList","parameters":[],"src":"3752:2:27"},"returnParameters":{"id":10967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10966,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10971,"src":"3784:5:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":10965,"name":"uint8","nodeType":"ElementaryTypeName","src":"3784:5:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3783:7:27"},"scope":11451,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":10987,"nodeType":"FunctionDefinition","src":"3850:152:27","nodes":[],"body":{"id":10986,"nodeType":"Block","src":"3911:91:27","nodes":[],"statements":[{"assignments":[10979],"declarations":[{"constant":false,"id":10979,"mutability":"mutable","name":"$","nameLocation":"3942:1:27","nodeType":"VariableDeclaration","scope":10986,"src":"3921:22:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":10978,"nodeType":"UserDefinedTypeName","pathNode":{"id":10977,"name":"ERC20Storage","nameLocations":["3921:12:27"],"nodeType":"IdentifierPath","referencedDeclaration":10875,"src":"3921:12:27"},"referencedDeclaration":10875,"src":"3921:12:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":10982,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10980,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10886,"src":"3946:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$10875_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":10981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3946:18:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3921:43:27"},{"expression":{"expression":{"id":10983,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10979,"src":"3981:1:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":10984,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3983:12:27","memberName":"_totalSupply","nodeType":"MemberAccess","referencedDeclaration":10870,"src":"3981:14:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10976,"id":10985,"nodeType":"Return","src":"3974:21:27"}]},"baseFunctions":[12597],"documentation":{"id":10972,"nodeType":"StructuredDocumentation","src":"3823:22:27","text":"@inheritdoc IERC20"},"functionSelector":"18160ddd","implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"3859:11:27","parameters":{"id":10973,"nodeType":"ParameterList","parameters":[],"src":"3870:2:27"},"returnParameters":{"id":10976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10975,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10987,"src":"3902:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10974,"name":"uint256","nodeType":"ElementaryTypeName","src":"3902:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3901:9:27"},"scope":11451,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":11007,"nodeType":"FunctionDefinition","src":"4035:171:27","nodes":[],"body":{"id":11006,"nodeType":"Block","src":"4109:97:27","nodes":[],"statements":[{"assignments":[10997],"declarations":[{"constant":false,"id":10997,"mutability":"mutable","name":"$","nameLocation":"4140:1:27","nodeType":"VariableDeclaration","scope":11006,"src":"4119:22:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":10996,"nodeType":"UserDefinedTypeName","pathNode":{"id":10995,"name":"ERC20Storage","nameLocations":["4119:12:27"],"nodeType":"IdentifierPath","referencedDeclaration":10875,"src":"4119:12:27"},"referencedDeclaration":10875,"src":"4119:12:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":11000,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10998,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10886,"src":"4144:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$10875_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":10999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4144:18:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4119:43:27"},{"expression":{"baseExpression":{"expression":{"id":11001,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10997,"src":"4179:1:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":11002,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4181:9:27","memberName":"_balances","nodeType":"MemberAccess","referencedDeclaration":10862,"src":"4179:11:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11004,"indexExpression":{"id":11003,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10990,"src":"4191:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4179:20:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10994,"id":11005,"nodeType":"Return","src":"4172:27:27"}]},"baseFunctions":[12605],"documentation":{"id":10988,"nodeType":"StructuredDocumentation","src":"4008:22:27","text":"@inheritdoc IERC20"},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"4044:9:27","parameters":{"id":10991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10990,"mutability":"mutable","name":"account","nameLocation":"4062:7:27","nodeType":"VariableDeclaration","scope":11007,"src":"4054:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10989,"name":"address","nodeType":"ElementaryTypeName","src":"4054:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4053:17:27"},"returnParameters":{"id":10994,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10993,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11007,"src":"4100:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10992,"name":"uint256","nodeType":"ElementaryTypeName","src":"4100:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4099:9:27"},"scope":11451,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":11031,"nodeType":"FunctionDefinition","src":"4401:178:27","nodes":[],"body":{"id":11030,"nodeType":"Block","src":"4476:103:27","nodes":[],"statements":[{"assignments":[11018],"declarations":[{"constant":false,"id":11018,"mutability":"mutable","name":"owner","nameLocation":"4494:5:27","nodeType":"VariableDeclaration","scope":11030,"src":"4486:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11017,"name":"address","nodeType":"ElementaryTypeName","src":"4486:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":11021,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11019,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11479,"src":"4502:10:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4502:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4486:28:27"},{"expression":{"arguments":[{"id":11023,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11018,"src":"4534:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11024,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11010,"src":"4541:2:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11025,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11012,"src":"4545:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11022,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11158,"src":"4524:9:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":11026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4524:27:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11027,"nodeType":"ExpressionStatement","src":"4524:27:27"},{"expression":{"hexValue":"74727565","id":11028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4568:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":11016,"id":11029,"nodeType":"Return","src":"4561:11:27"}]},"baseFunctions":[12615],"documentation":{"id":11008,"nodeType":"StructuredDocumentation","src":"4212:184:27","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `value`."},"functionSelector":"a9059cbb","implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"4410:8:27","parameters":{"id":11013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11010,"mutability":"mutable","name":"to","nameLocation":"4427:2:27","nodeType":"VariableDeclaration","scope":11031,"src":"4419:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11009,"name":"address","nodeType":"ElementaryTypeName","src":"4419:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11012,"mutability":"mutable","name":"value","nameLocation":"4439:5:27","nodeType":"VariableDeclaration","scope":11031,"src":"4431:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11011,"name":"uint256","nodeType":"ElementaryTypeName","src":"4431:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4418:27:27"},"returnParameters":{"id":11016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11015,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11031,"src":"4470:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11014,"name":"bool","nodeType":"ElementaryTypeName","src":"4470:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4469:6:27"},"scope":11451,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":11055,"nodeType":"FunctionDefinition","src":"4612:195:27","nodes":[],"body":{"id":11054,"nodeType":"Block","src":"4701:106:27","nodes":[],"statements":[{"assignments":[11043],"declarations":[{"constant":false,"id":11043,"mutability":"mutable","name":"$","nameLocation":"4732:1:27","nodeType":"VariableDeclaration","scope":11054,"src":"4711:22:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":11042,"nodeType":"UserDefinedTypeName","pathNode":{"id":11041,"name":"ERC20Storage","nameLocations":["4711:12:27"],"nodeType":"IdentifierPath","referencedDeclaration":10875,"src":"4711:12:27"},"referencedDeclaration":10875,"src":"4711:12:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":11046,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11044,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10886,"src":"4736:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$10875_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":11045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4736:18:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4711:43:27"},{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":11047,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11043,"src":"4771:1:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":11048,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4773:11:27","memberName":"_allowances","nodeType":"MemberAccess","referencedDeclaration":10868,"src":"4771:13:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":11050,"indexExpression":{"id":11049,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11034,"src":"4785:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4771:20:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11052,"indexExpression":{"id":11051,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11036,"src":"4792:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4771:29:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11040,"id":11053,"nodeType":"Return","src":"4764:36:27"}]},"baseFunctions":[12625],"documentation":{"id":11032,"nodeType":"StructuredDocumentation","src":"4585:22:27","text":"@inheritdoc IERC20"},"functionSelector":"dd62ed3e","implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"4621:9:27","parameters":{"id":11037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11034,"mutability":"mutable","name":"owner","nameLocation":"4639:5:27","nodeType":"VariableDeclaration","scope":11055,"src":"4631:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11033,"name":"address","nodeType":"ElementaryTypeName","src":"4631:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11036,"mutability":"mutable","name":"spender","nameLocation":"4654:7:27","nodeType":"VariableDeclaration","scope":11055,"src":"4646:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11035,"name":"address","nodeType":"ElementaryTypeName","src":"4646:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4630:32:27"},"returnParameters":{"id":11040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11039,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11055,"src":"4692:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11038,"name":"uint256","nodeType":"ElementaryTypeName","src":"4692:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4691:9:27"},"scope":11451,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":11079,"nodeType":"FunctionDefinition","src":"5114:186:27","nodes":[],"body":{"id":11078,"nodeType":"Block","src":"5193:107:27","nodes":[],"statements":[{"assignments":[11066],"declarations":[{"constant":false,"id":11066,"mutability":"mutable","name":"owner","nameLocation":"5211:5:27","nodeType":"VariableDeclaration","scope":11078,"src":"5203:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11065,"name":"address","nodeType":"ElementaryTypeName","src":"5203:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":11069,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11067,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11479,"src":"5219:10:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5219:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5203:28:27"},{"expression":{"arguments":[{"id":11071,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11066,"src":"5250:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11072,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11058,"src":"5257:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11073,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11060,"src":"5266:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11070,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[11334,11402],"referencedDeclaration":11334,"src":"5241:8:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":11074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5241:31:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11075,"nodeType":"ExpressionStatement","src":"5241:31:27"},{"expression":{"hexValue":"74727565","id":11076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5289:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":11064,"id":11077,"nodeType":"Return","src":"5282:11:27"}]},"baseFunctions":[12635],"documentation":{"id":11056,"nodeType":"StructuredDocumentation","src":"4813:296:27","text":" @dev See {IERC20-approve}.\n NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"5123:7:27","parameters":{"id":11061,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11058,"mutability":"mutable","name":"spender","nameLocation":"5139:7:27","nodeType":"VariableDeclaration","scope":11079,"src":"5131:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11057,"name":"address","nodeType":"ElementaryTypeName","src":"5131:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11060,"mutability":"mutable","name":"value","nameLocation":"5156:5:27","nodeType":"VariableDeclaration","scope":11079,"src":"5148:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11059,"name":"uint256","nodeType":"ElementaryTypeName","src":"5148:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5130:32:27"},"returnParameters":{"id":11064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11063,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11079,"src":"5187:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11062,"name":"bool","nodeType":"ElementaryTypeName","src":"5187:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5186:6:27"},"scope":11451,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":11111,"nodeType":"FunctionDefinition","src":"5892:244:27","nodes":[],"body":{"id":11110,"nodeType":"Block","src":"5985:151:27","nodes":[],"statements":[{"assignments":[11092],"declarations":[{"constant":false,"id":11092,"mutability":"mutable","name":"spender","nameLocation":"6003:7:27","nodeType":"VariableDeclaration","scope":11110,"src":"5995:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11091,"name":"address","nodeType":"ElementaryTypeName","src":"5995:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":11095,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11093,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11479,"src":"6013:10:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6013:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5995:30:27"},{"expression":{"arguments":[{"id":11097,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11082,"src":"6051:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11098,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11092,"src":"6057:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11099,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11086,"src":"6066:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11096,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11450,"src":"6035:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":11100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6035:37:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11101,"nodeType":"ExpressionStatement","src":"6035:37:27"},{"expression":{"arguments":[{"id":11103,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11082,"src":"6092:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11104,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11084,"src":"6098:2:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11105,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11086,"src":"6102:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11102,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11158,"src":"6082:9:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":11106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6082:26:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11107,"nodeType":"ExpressionStatement","src":"6082:26:27"},{"expression":{"hexValue":"74727565","id":11108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6125:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":11090,"id":11109,"nodeType":"Return","src":"6118:11:27"}]},"baseFunctions":[12647],"documentation":{"id":11080,"nodeType":"StructuredDocumentation","src":"5306:581:27","text":" @dev See {IERC20-transferFrom}.\n Skips emitting an {Approval} event indicating an allowance update. This is not\n required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `value`.\n - the caller must have allowance for ``from``'s tokens of at least\n `value`."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"5901:12:27","parameters":{"id":11087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11082,"mutability":"mutable","name":"from","nameLocation":"5922:4:27","nodeType":"VariableDeclaration","scope":11111,"src":"5914:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11081,"name":"address","nodeType":"ElementaryTypeName","src":"5914:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11084,"mutability":"mutable","name":"to","nameLocation":"5936:2:27","nodeType":"VariableDeclaration","scope":11111,"src":"5928:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11083,"name":"address","nodeType":"ElementaryTypeName","src":"5928:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11086,"mutability":"mutable","name":"value","nameLocation":"5948:5:27","nodeType":"VariableDeclaration","scope":11111,"src":"5940:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11085,"name":"uint256","nodeType":"ElementaryTypeName","src":"5940:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5913:41:27"},"returnParameters":{"id":11090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11089,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11111,"src":"5979:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11088,"name":"bool","nodeType":"ElementaryTypeName","src":"5979:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5978:6:27"},"scope":11451,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":11158,"nodeType":"FunctionDefinition","src":"6509:300:27","nodes":[],"body":{"id":11157,"nodeType":"Block","src":"6578:231:27","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11121,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11114,"src":"6592:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":11124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6608:1:27","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":11123,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6600:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11122,"name":"address","nodeType":"ElementaryTypeName","src":"6600:7:27","typeDescriptions":{}}},"id":11125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6600:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6592:18:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11135,"nodeType":"IfStatement","src":"6588:86:27","trueBody":{"id":11134,"nodeType":"Block","src":"6612:62:27","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":11130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6660:1:27","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":11129,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6652:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11128,"name":"address","nodeType":"ElementaryTypeName","src":"6652:7:27","typeDescriptions":{}}},"id":11131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6652:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11127,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12072,"src":"6633:18:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":11132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6633:30:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11133,"nodeType":"RevertStatement","src":"6626:37:27"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11136,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11116,"src":"6687:2:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":11139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6701:1:27","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":11138,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6693:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11137,"name":"address","nodeType":"ElementaryTypeName","src":"6693:7:27","typeDescriptions":{}}},"id":11140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6693:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6687:16:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11150,"nodeType":"IfStatement","src":"6683:86:27","trueBody":{"id":11149,"nodeType":"Block","src":"6705:64:27","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":11145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6755:1:27","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":11144,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6747:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11143,"name":"address","nodeType":"ElementaryTypeName","src":"6747:7:27","typeDescriptions":{}}},"id":11146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6747:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11142,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12077,"src":"6726:20:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":11147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6726:32:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11148,"nodeType":"RevertStatement","src":"6719:39:27"}]}},{"expression":{"arguments":[{"id":11152,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11114,"src":"6786:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11153,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11116,"src":"6792:2:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11154,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11118,"src":"6796:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11151,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11250,"src":"6778:7:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":11155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6778:24:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11156,"nodeType":"ExpressionStatement","src":"6778:24:27"}]},"documentation":{"id":11112,"nodeType":"StructuredDocumentation","src":"6142:362:27","text":" @dev Moves a `value` amount of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n NOTE: This function is not virtual, {_update} should be overridden instead."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"6518:9:27","parameters":{"id":11119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11114,"mutability":"mutable","name":"from","nameLocation":"6536:4:27","nodeType":"VariableDeclaration","scope":11158,"src":"6528:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11113,"name":"address","nodeType":"ElementaryTypeName","src":"6528:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11116,"mutability":"mutable","name":"to","nameLocation":"6550:2:27","nodeType":"VariableDeclaration","scope":11158,"src":"6542:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11115,"name":"address","nodeType":"ElementaryTypeName","src":"6542:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11118,"mutability":"mutable","name":"value","nameLocation":"6562:5:27","nodeType":"VariableDeclaration","scope":11158,"src":"6554:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11117,"name":"uint256","nodeType":"ElementaryTypeName","src":"6554:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6527:41:27"},"returnParameters":{"id":11120,"nodeType":"ParameterList","parameters":[],"src":"6578:0:27"},"scope":11451,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":11250,"nodeType":"FunctionDefinition","src":"7124:1170:27","nodes":[],"body":{"id":11249,"nodeType":"Block","src":"7199:1095:27","nodes":[],"statements":[{"assignments":[11170],"declarations":[{"constant":false,"id":11170,"mutability":"mutable","name":"$","nameLocation":"7230:1:27","nodeType":"VariableDeclaration","scope":11249,"src":"7209:22:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":11169,"nodeType":"UserDefinedTypeName","pathNode":{"id":11168,"name":"ERC20Storage","nameLocations":["7209:12:27"],"nodeType":"IdentifierPath","referencedDeclaration":10875,"src":"7209:12:27"},"referencedDeclaration":10875,"src":"7209:12:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":11173,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11171,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10886,"src":"7234:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$10875_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":11172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7234:18:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7209:43:27"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11174,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11161,"src":"7266:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":11177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7282:1:27","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":11176,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7274:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11175,"name":"address","nodeType":"ElementaryTypeName","src":"7274:7:27","typeDescriptions":{}}},"id":11178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7274:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7266:18:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11216,"nodeType":"Block","src":"7442:366:27","statements":[{"assignments":[11188],"declarations":[{"constant":false,"id":11188,"mutability":"mutable","name":"fromBalance","nameLocation":"7464:11:27","nodeType":"VariableDeclaration","scope":11216,"src":"7456:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11187,"name":"uint256","nodeType":"ElementaryTypeName","src":"7456:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11193,"initialValue":{"baseExpression":{"expression":{"id":11189,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11170,"src":"7478:1:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":11190,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7480:9:27","memberName":"_balances","nodeType":"MemberAccess","referencedDeclaration":10862,"src":"7478:11:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11192,"indexExpression":{"id":11191,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11161,"src":"7490:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7478:17:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7456:39:27"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11194,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11188,"src":"7513:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11165,"src":"7527:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7513:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11204,"nodeType":"IfStatement","src":"7509:115:27","trueBody":{"id":11203,"nodeType":"Block","src":"7534:90:27","statements":[{"errorCall":{"arguments":[{"id":11198,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11161,"src":"7584:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11199,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11188,"src":"7590:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11200,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11165,"src":"7603:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11197,"name":"ERC20InsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12067,"src":"7559:24:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":11201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7559:50:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11202,"nodeType":"RevertStatement","src":"7552:57:27"}]}},{"id":11215,"nodeType":"UncheckedBlock","src":"7637:161:27","statements":[{"expression":{"id":11213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":11205,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11170,"src":"7744:1:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":11208,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7746:9:27","memberName":"_balances","nodeType":"MemberAccess","referencedDeclaration":10862,"src":"7744:11:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11209,"indexExpression":{"id":11207,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11161,"src":"7756:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7744:17:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11210,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11188,"src":"7764:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11211,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11165,"src":"7778:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7764:19:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7744:39:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11214,"nodeType":"ExpressionStatement","src":"7744:39:27"}]}]},"id":11217,"nodeType":"IfStatement","src":"7262:546:27","trueBody":{"id":11186,"nodeType":"Block","src":"7286:150:27","statements":[{"expression":{"id":11184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11180,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11170,"src":"7402:1:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":11182,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7404:12:27","memberName":"_totalSupply","nodeType":"MemberAccess","referencedDeclaration":10870,"src":"7402:14:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":11183,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11165,"src":"7420:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7402:23:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11185,"nodeType":"ExpressionStatement","src":"7402:23:27"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11218,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11163,"src":"7822:2:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":11221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7836:1:27","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":11220,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7828:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11219,"name":"address","nodeType":"ElementaryTypeName","src":"7828:7:27","typeDescriptions":{}}},"id":11222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7828:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7822:16:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11241,"nodeType":"Block","src":"8039:208:27","statements":[{"id":11240,"nodeType":"UncheckedBlock","src":"8053:184:27","statements":[{"expression":{"id":11238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":11232,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11170,"src":"8198:1:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":11235,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8200:9:27","memberName":"_balances","nodeType":"MemberAccess","referencedDeclaration":10862,"src":"8198:11:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11236,"indexExpression":{"id":11234,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11163,"src":"8210:2:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8198:15:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":11237,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11165,"src":"8217:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8198:24:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11239,"nodeType":"ExpressionStatement","src":"8198:24:27"}]}]},"id":11242,"nodeType":"IfStatement","src":"7818:429:27","trueBody":{"id":11231,"nodeType":"Block","src":"7840:193:27","statements":[{"id":11230,"nodeType":"UncheckedBlock","src":"7854:169:27","statements":[{"expression":{"id":11228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11224,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11170,"src":"7985:1:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":11226,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7987:12:27","memberName":"_totalSupply","nodeType":"MemberAccess","referencedDeclaration":10870,"src":"7985:14:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":11227,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11165,"src":"8003:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7985:23:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11229,"nodeType":"ExpressionStatement","src":"7985:23:27"}]}]}},{"eventCall":{"arguments":[{"id":11244,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11161,"src":"8271:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11245,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11163,"src":"8277:2:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11246,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11165,"src":"8281:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11243,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12582,"src":"8262:8:27","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":11247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8262:25:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11248,"nodeType":"EmitStatement","src":"8257:30:27"}]},"documentation":{"id":11159,"nodeType":"StructuredDocumentation","src":"6815:304:27","text":" @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n this function.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"7133:7:27","parameters":{"id":11166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11161,"mutability":"mutable","name":"from","nameLocation":"7149:4:27","nodeType":"VariableDeclaration","scope":11250,"src":"7141:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11160,"name":"address","nodeType":"ElementaryTypeName","src":"7141:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11163,"mutability":"mutable","name":"to","nameLocation":"7163:2:27","nodeType":"VariableDeclaration","scope":11250,"src":"7155:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11162,"name":"address","nodeType":"ElementaryTypeName","src":"7155:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11165,"mutability":"mutable","name":"value","nameLocation":"7175:5:27","nodeType":"VariableDeclaration","scope":11250,"src":"7167:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11164,"name":"uint256","nodeType":"ElementaryTypeName","src":"7167:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7140:41:27"},"returnParameters":{"id":11167,"nodeType":"ParameterList","parameters":[],"src":"7199:0:27"},"scope":11451,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":11283,"nodeType":"FunctionDefinition","src":"8637:208:27","nodes":[],"body":{"id":11282,"nodeType":"Block","src":"8693:152:27","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11258,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11253,"src":"8707:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":11261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8726:1:27","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":11260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8718:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11259,"name":"address","nodeType":"ElementaryTypeName","src":"8718:7:27","typeDescriptions":{}}},"id":11262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8718:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8707:21:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11272,"nodeType":"IfStatement","src":"8703:91:27","trueBody":{"id":11271,"nodeType":"Block","src":"8730:64:27","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":11267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8780:1:27","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":11266,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8772:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11265,"name":"address","nodeType":"ElementaryTypeName","src":"8772:7:27","typeDescriptions":{}}},"id":11268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8772:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11264,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12077,"src":"8751:20:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":11269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8751:32:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11270,"nodeType":"RevertStatement","src":"8744:39:27"}]}},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":11276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8819:1:27","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":11275,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8811:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11274,"name":"address","nodeType":"ElementaryTypeName","src":"8811:7:27","typeDescriptions":{}}},"id":11277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8811:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11278,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11253,"src":"8823:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11279,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11255,"src":"8832:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11273,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11250,"src":"8803:7:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":11280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8803:35:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11281,"nodeType":"ExpressionStatement","src":"8803:35:27"}]},"documentation":{"id":11251,"nodeType":"StructuredDocumentation","src":"8300:332:27","text":" @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n Relies on the `_update` mechanism\n Emits a {Transfer} event with `from` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"8646:5:27","parameters":{"id":11256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11253,"mutability":"mutable","name":"account","nameLocation":"8660:7:27","nodeType":"VariableDeclaration","scope":11283,"src":"8652:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11252,"name":"address","nodeType":"ElementaryTypeName","src":"8652:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11255,"mutability":"mutable","name":"value","nameLocation":"8677:5:27","nodeType":"VariableDeclaration","scope":11283,"src":"8669:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8669:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8651:32:27"},"returnParameters":{"id":11257,"nodeType":"ParameterList","parameters":[],"src":"8693:0:27"},"scope":11451,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":11316,"nodeType":"FunctionDefinition","src":"9163:206:27","nodes":[],"body":{"id":11315,"nodeType":"Block","src":"9219:150:27","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11291,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11286,"src":"9233:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":11294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9252:1:27","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":11293,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9244:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11292,"name":"address","nodeType":"ElementaryTypeName","src":"9244:7:27","typeDescriptions":{}}},"id":11295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9244:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9233:21:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11305,"nodeType":"IfStatement","src":"9229:89:27","trueBody":{"id":11304,"nodeType":"Block","src":"9256:62:27","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":11300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9304:1:27","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":11299,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9296:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11298,"name":"address","nodeType":"ElementaryTypeName","src":"9296:7:27","typeDescriptions":{}}},"id":11301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9296:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11297,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12072,"src":"9277:18:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":11302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9277:30:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11303,"nodeType":"RevertStatement","src":"9270:37:27"}]}},{"expression":{"arguments":[{"id":11307,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11286,"src":"9335:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":11310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9352:1:27","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":11309,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9344:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11308,"name":"address","nodeType":"ElementaryTypeName","src":"9344:7:27","typeDescriptions":{}}},"id":11311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9344:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11312,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11288,"src":"9356:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11306,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11250,"src":"9327:7:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":11313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9327:35:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11314,"nodeType":"ExpressionStatement","src":"9327:35:27"}]},"documentation":{"id":11284,"nodeType":"StructuredDocumentation","src":"8851:307:27","text":" @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n Relies on the `_update` mechanism.\n Emits a {Transfer} event with `to` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead"},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"9172:5:27","parameters":{"id":11289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11286,"mutability":"mutable","name":"account","nameLocation":"9186:7:27","nodeType":"VariableDeclaration","scope":11316,"src":"9178:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11285,"name":"address","nodeType":"ElementaryTypeName","src":"9178:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11288,"mutability":"mutable","name":"value","nameLocation":"9203:5:27","nodeType":"VariableDeclaration","scope":11316,"src":"9195:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11287,"name":"uint256","nodeType":"ElementaryTypeName","src":"9195:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9177:32:27"},"returnParameters":{"id":11290,"nodeType":"ParameterList","parameters":[],"src":"9219:0:27"},"scope":11451,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":11334,"nodeType":"FunctionDefinition","src":"9905:128:27","nodes":[],"body":{"id":11333,"nodeType":"Block","src":"9979:54:27","nodes":[],"statements":[{"expression":{"arguments":[{"id":11327,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"9998:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11328,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11321,"src":"10005:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11329,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11323,"src":"10014:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":11330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10021:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":11326,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[11334,11402],"referencedDeclaration":11402,"src":"9989:8:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":11331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9989:37:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11332,"nodeType":"ExpressionStatement","src":"9989:37:27"}]},"documentation":{"id":11317,"nodeType":"StructuredDocumentation","src":"9375:525:27","text":" @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"9914:8:27","parameters":{"id":11324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11319,"mutability":"mutable","name":"owner","nameLocation":"9931:5:27","nodeType":"VariableDeclaration","scope":11334,"src":"9923:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11318,"name":"address","nodeType":"ElementaryTypeName","src":"9923:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11321,"mutability":"mutable","name":"spender","nameLocation":"9946:7:27","nodeType":"VariableDeclaration","scope":11334,"src":"9938:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11320,"name":"address","nodeType":"ElementaryTypeName","src":"9938:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11323,"mutability":"mutable","name":"value","nameLocation":"9963:5:27","nodeType":"VariableDeclaration","scope":11334,"src":"9955:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11322,"name":"uint256","nodeType":"ElementaryTypeName","src":"9955:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9922:47:27"},"returnParameters":{"id":11325,"nodeType":"ParameterList","parameters":[],"src":"9979:0:27"},"scope":11451,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":11402,"nodeType":"FunctionDefinition","src":"10880:487:27","nodes":[],"body":{"id":11401,"nodeType":"Block","src":"10978:389:27","nodes":[],"statements":[{"assignments":[11348],"declarations":[{"constant":false,"id":11348,"mutability":"mutable","name":"$","nameLocation":"11009:1:27","nodeType":"VariableDeclaration","scope":11401,"src":"10988:22:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":11347,"nodeType":"UserDefinedTypeName","pathNode":{"id":11346,"name":"ERC20Storage","nameLocations":["10988:12:27"],"nodeType":"IdentifierPath","referencedDeclaration":10875,"src":"10988:12:27"},"referencedDeclaration":10875,"src":"10988:12:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":11351,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11349,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10886,"src":"11013:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$10875_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":11350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11013:18:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"10988:43:27"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11352,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11337,"src":"11045:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":11355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11062:1:27","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":11354,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11054:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11353,"name":"address","nodeType":"ElementaryTypeName","src":"11054:7:27","typeDescriptions":{}}},"id":11356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11054:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11045:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11366,"nodeType":"IfStatement","src":"11041:89:27","trueBody":{"id":11365,"nodeType":"Block","src":"11066:64:27","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":11361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11116:1:27","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":11360,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11108:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11359,"name":"address","nodeType":"ElementaryTypeName","src":"11108:7:27","typeDescriptions":{}}},"id":11362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11108:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11358,"name":"ERC20InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12091,"src":"11087:20:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":11363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11087:32:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11364,"nodeType":"RevertStatement","src":"11080:39:27"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11367,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11339,"src":"11143:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":11370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11162:1:27","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":11369,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11154:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11368,"name":"address","nodeType":"ElementaryTypeName","src":"11154:7:27","typeDescriptions":{}}},"id":11371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11154:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11143:21:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11381,"nodeType":"IfStatement","src":"11139:90:27","trueBody":{"id":11380,"nodeType":"Block","src":"11166:63:27","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":11376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11215:1:27","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":11375,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11207:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11374,"name":"address","nodeType":"ElementaryTypeName","src":"11207:7:27","typeDescriptions":{}}},"id":11377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11207:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11373,"name":"ERC20InvalidSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12096,"src":"11187:19:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":11378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11187:31:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11379,"nodeType":"RevertStatement","src":"11180:38:27"}]}},{"expression":{"id":11390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":11382,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11348,"src":"11238:1:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":11386,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11240:11:27","memberName":"_allowances","nodeType":"MemberAccess","referencedDeclaration":10868,"src":"11238:13:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":11387,"indexExpression":{"id":11384,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11337,"src":"11252:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11238:20:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11388,"indexExpression":{"id":11385,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11339,"src":"11259:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11238:29:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11389,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11341,"src":"11270:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11238:37:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11391,"nodeType":"ExpressionStatement","src":"11238:37:27"},{"condition":{"id":11392,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11343,"src":"11289:9:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11400,"nodeType":"IfStatement","src":"11285:76:27","trueBody":{"id":11399,"nodeType":"Block","src":"11300:61:27","statements":[{"eventCall":{"arguments":[{"id":11394,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11337,"src":"11328:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11395,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11339,"src":"11335:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11396,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11341,"src":"11344:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11393,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12591,"src":"11319:8:27","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":11397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11319:31:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11398,"nodeType":"EmitStatement","src":"11314:36:27"}]}}]},"documentation":{"id":11335,"nodeType":"StructuredDocumentation","src":"10039:836:27","text":" @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n `Approval` event during `transferFrom` operations.\n Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n true using the following override:\n ```solidity\n function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n super._approve(owner, spender, value, true);\n }\n ```\n Requirements are the same as {_approve}."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"10889:8:27","parameters":{"id":11344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11337,"mutability":"mutable","name":"owner","nameLocation":"10906:5:27","nodeType":"VariableDeclaration","scope":11402,"src":"10898:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11336,"name":"address","nodeType":"ElementaryTypeName","src":"10898:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11339,"mutability":"mutable","name":"spender","nameLocation":"10921:7:27","nodeType":"VariableDeclaration","scope":11402,"src":"10913:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11338,"name":"address","nodeType":"ElementaryTypeName","src":"10913:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11341,"mutability":"mutable","name":"value","nameLocation":"10938:5:27","nodeType":"VariableDeclaration","scope":11402,"src":"10930:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11340,"name":"uint256","nodeType":"ElementaryTypeName","src":"10930:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11343,"mutability":"mutable","name":"emitEvent","nameLocation":"10950:9:27","nodeType":"VariableDeclaration","scope":11402,"src":"10945:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11342,"name":"bool","nodeType":"ElementaryTypeName","src":"10945:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10897:63:27"},"returnParameters":{"id":11345,"nodeType":"ParameterList","parameters":[],"src":"10978:0:27"},"scope":11451,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":11450,"nodeType":"FunctionDefinition","src":"11649:476:27","nodes":[],"body":{"id":11449,"nodeType":"Block","src":"11738:387:27","nodes":[],"statements":[{"assignments":[11413],"declarations":[{"constant":false,"id":11413,"mutability":"mutable","name":"currentAllowance","nameLocation":"11756:16:27","nodeType":"VariableDeclaration","scope":11449,"src":"11748:24:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11412,"name":"uint256","nodeType":"ElementaryTypeName","src":"11748:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11418,"initialValue":{"arguments":[{"id":11415,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11405,"src":"11785:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11416,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11407,"src":"11792:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":11414,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11055,"src":"11775:9:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":11417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11775:25:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11748:52:27"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11419,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11413,"src":"11814:16:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"id":11422,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11838:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11421,"name":"uint256","nodeType":"ElementaryTypeName","src":"11838:7:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":11420,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11833:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11833:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":11424,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11847:3:27","memberName":"max","nodeType":"MemberAccess","src":"11833:17:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11814:36:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11448,"nodeType":"IfStatement","src":"11810:309:27","trueBody":{"id":11447,"nodeType":"Block","src":"11852:267:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11426,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11413,"src":"11870:16:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11427,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11409,"src":"11889:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11870:24:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11436,"nodeType":"IfStatement","src":"11866:130:27","trueBody":{"id":11435,"nodeType":"Block","src":"11896:100:27","statements":[{"errorCall":{"arguments":[{"id":11430,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11407,"src":"11948:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11431,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11413,"src":"11957:16:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11432,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11409,"src":"11975:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11429,"name":"ERC20InsufficientAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12086,"src":"11921:26:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":11433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11921:60:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11434,"nodeType":"RevertStatement","src":"11914:67:27"}]}},{"id":11446,"nodeType":"UncheckedBlock","src":"12009:100:27","statements":[{"expression":{"arguments":[{"id":11438,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11405,"src":"12046:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11439,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11407,"src":"12053:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11440,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11413,"src":"12062:16:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11441,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11409,"src":"12081:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12062:24:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":11443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12088:5:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":11437,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[11334,11402],"referencedDeclaration":11402,"src":"12037:8:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":11444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12037:57:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11445,"nodeType":"ExpressionStatement","src":"12037:57:27"}]}]}}]},"documentation":{"id":11403,"nodeType":"StructuredDocumentation","src":"11373:271:27","text":" @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n Does not update the allowance value in case of infinite allowance.\n Revert if not enough allowance is available.\n Does not emit an {Approval} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_spendAllowance","nameLocation":"11658:15:27","parameters":{"id":11410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11405,"mutability":"mutable","name":"owner","nameLocation":"11682:5:27","nodeType":"VariableDeclaration","scope":11450,"src":"11674:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11404,"name":"address","nodeType":"ElementaryTypeName","src":"11674:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11407,"mutability":"mutable","name":"spender","nameLocation":"11697:7:27","nodeType":"VariableDeclaration","scope":11450,"src":"11689:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11406,"name":"address","nodeType":"ElementaryTypeName","src":"11689:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11409,"mutability":"mutable","name":"value","nameLocation":"11714:5:27","nodeType":"VariableDeclaration","scope":11450,"src":"11706:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11408,"name":"uint256","nodeType":"ElementaryTypeName","src":"11706:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11673:47:27"},"returnParameters":{"id":11411,"nodeType":"ParameterList","parameters":[],"src":"11738:0:27"},"scope":11451,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[{"baseName":{"id":10848,"name":"Initializable","nameLocations":["1319:13:27"],"nodeType":"IdentifierPath","referencedDeclaration":10652,"src":"1319:13:27"},"id":10849,"nodeType":"InheritanceSpecifier","src":"1319:13:27"},{"baseName":{"id":10850,"name":"ContextUpgradeable","nameLocations":["1334:18:27"],"nodeType":"IdentifierPath","referencedDeclaration":11497,"src":"1334:18:27"},"id":10851,"nodeType":"InheritanceSpecifier","src":"1334:18:27"},{"baseName":{"id":10852,"name":"IERC20","nameLocations":["1354:6:27"],"nodeType":"IdentifierPath","referencedDeclaration":12648,"src":"1354:6:27"},"id":10853,"nodeType":"InheritanceSpecifier","src":"1354:6:27"},{"baseName":{"id":10854,"name":"IERC20Metadata","nameLocations":["1362:14:27"],"nodeType":"IdentifierPath","referencedDeclaration":12674,"src":"1362:14:27"},"id":10855,"nodeType":"InheritanceSpecifier","src":"1362:14:27"},{"baseName":{"id":10856,"name":"IERC20Errors","nameLocations":["1378:12:27"],"nodeType":"IdentifierPath","referencedDeclaration":12097,"src":"1378:12:27"},"id":10857,"nodeType":"InheritanceSpecifier","src":"1378:12:27"}],"canonicalName":"ERC20Upgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":10847,"nodeType":"StructuredDocumentation","src":"523:757:27","text":" @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC-20\n applications."},"fullyImplemented":true,"linearizedBaseContracts":[11451,12097,12674,12648,11497,10652],"name":"ERC20Upgradeable","nameLocation":"1299:16:27","scope":11452,"usedErrors":[10401,10404,12067,12072,12077,12086,12091,12096],"usedEvents":[10409,12582,12591]}],"license":"MIT"}},"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"id":28,"ast":{"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","id":11498,"exportedSymbols":{"ContextUpgradeable":[11497],"Initializable":[10652]},"nodeType":"SourceUnit","src":"101:1093:28","nodes":[{"id":11453,"nodeType":"PragmaDirective","src":"101:24:28","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":11455,"nodeType":"ImportDirective","src":"126:63:28","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":11498,"sourceUnit":10653,"symbolAliases":[{"foreign":{"id":11454,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10652,"src":"134:13:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":11497,"nodeType":"ContractDefinition","src":"688:505:28","nodes":[{"id":11464,"nodeType":"FunctionDefinition","src":"748:59:28","nodes":[],"body":{"id":11463,"nodeType":"Block","src":"800:7:28","nodes":[],"statements":[]},"implemented":true,"kind":"function","modifiers":[{"id":11461,"kind":"modifierInvocation","modifierName":{"id":11460,"name":"onlyInitializing","nameLocations":["783:16:28"],"nodeType":"IdentifierPath","referencedDeclaration":10547,"src":"783:16:28"},"nodeType":"ModifierInvocation","src":"783:16:28"}],"name":"__Context_init","nameLocation":"757:14:28","parameters":{"id":11459,"nodeType":"ParameterList","parameters":[],"src":"771:2:28"},"returnParameters":{"id":11462,"nodeType":"ParameterList","parameters":[],"src":"800:0:28"},"scope":11497,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":11470,"nodeType":"FunctionDefinition","src":"813:69:28","nodes":[],"body":{"id":11469,"nodeType":"Block","src":"875:7:28","nodes":[],"statements":[]},"implemented":true,"kind":"function","modifiers":[{"id":11467,"kind":"modifierInvocation","modifierName":{"id":11466,"name":"onlyInitializing","nameLocations":["858:16:28"],"nodeType":"IdentifierPath","referencedDeclaration":10547,"src":"858:16:28"},"nodeType":"ModifierInvocation","src":"858:16:28"}],"name":"__Context_init_unchained","nameLocation":"822:24:28","parameters":{"id":11465,"nodeType":"ParameterList","parameters":[],"src":"846:2:28"},"returnParameters":{"id":11468,"nodeType":"ParameterList","parameters":[],"src":"875:0:28"},"scope":11497,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":11479,"nodeType":"FunctionDefinition","src":"887:96:28","nodes":[],"body":{"id":11478,"nodeType":"Block","src":"949:34:28","nodes":[],"statements":[{"expression":{"expression":{"id":11475,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"966:3:28","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"970:6:28","memberName":"sender","nodeType":"MemberAccess","src":"966:10:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":11474,"id":11477,"nodeType":"Return","src":"959:17:28"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"896:10:28","parameters":{"id":11471,"nodeType":"ParameterList","parameters":[],"src":"906:2:28"},"returnParameters":{"id":11474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11473,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11479,"src":"940:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11472,"name":"address","nodeType":"ElementaryTypeName","src":"940:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"939:9:28"},"scope":11497,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":11488,"nodeType":"FunctionDefinition","src":"989:99:28","nodes":[],"body":{"id":11487,"nodeType":"Block","src":"1056:32:28","nodes":[],"statements":[{"expression":{"expression":{"id":11484,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1073:3:28","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1077:4:28","memberName":"data","nodeType":"MemberAccess","src":"1073:8:28","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":11483,"id":11486,"nodeType":"Return","src":"1066:15:28"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"998:8:28","parameters":{"id":11480,"nodeType":"ParameterList","parameters":[],"src":"1006:2:28"},"returnParameters":{"id":11483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11482,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11488,"src":"1040:14:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":11481,"name":"bytes","nodeType":"ElementaryTypeName","src":"1040:5:28","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1039:16:28"},"scope":11497,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":11496,"nodeType":"FunctionDefinition","src":"1094:97:28","nodes":[],"body":{"id":11495,"nodeType":"Block","src":"1166:25:28","nodes":[],"statements":[{"expression":{"hexValue":"30","id":11493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1183:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":11492,"id":11494,"nodeType":"Return","src":"1176:8:28"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"1103:20:28","parameters":{"id":11489,"nodeType":"ParameterList","parameters":[],"src":"1123:2:28"},"returnParameters":{"id":11492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11496,"src":"1157:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11490,"name":"uint256","nodeType":"ElementaryTypeName","src":"1157:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1156:9:28"},"scope":11497,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[{"baseName":{"id":11457,"name":"Initializable","nameLocations":["728:13:28"],"nodeType":"IdentifierPath","referencedDeclaration":10652,"src":"728:13:28"},"id":11458,"nodeType":"InheritanceSpecifier","src":"728:13:28"}],"canonicalName":"ContextUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":11456,"nodeType":"StructuredDocumentation","src":"191:496:28","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"linearizedBaseContracts":[11497,10652],"name":"ContextUpgradeable","nameLocation":"706:18:28","scope":11498,"usedErrors":[10401,10404],"usedEvents":[10409]}],"license":"MIT"}},"node_modules/@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol":{"id":29,"ast":{"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol","id":11658,"exportedSymbols":{"ContextUpgradeable":[11497],"Initializable":[10652],"PausableUpgradeable":[11657]},"nodeType":"SourceUnit","src":"102:3557:29","nodes":[{"id":11499,"nodeType":"PragmaDirective","src":"102:24:29","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":11501,"nodeType":"ImportDirective","src":"128:67:29","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"../utils/ContextUpgradeable.sol","nameLocation":"-1:-1:-1","scope":11658,"sourceUnit":11498,"symbolAliases":[{"foreign":{"id":11500,"name":"ContextUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11497,"src":"136:18:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":11503,"nodeType":"ImportDirective","src":"196:63:29","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":11658,"sourceUnit":10653,"symbolAliases":[{"foreign":{"id":11502,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10652,"src":"204:13:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":11657,"nodeType":"ContractDefinition","src":"701:2957:29","nodes":[{"id":11512,"nodeType":"StructDefinition","src":"853:52:29","nodes":[],"canonicalName":"PausableUpgradeable.PausableStorage","documentation":{"id":11509,"nodeType":"StructuredDocumentation","src":"782:66:29","text":"@custom:storage-location erc7201:openzeppelin.storage.Pausable"},"members":[{"constant":false,"id":11511,"mutability":"mutable","name":"_paused","nameLocation":"891:7:29","nodeType":"VariableDeclaration","scope":11512,"src":"886:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11510,"name":"bool","nodeType":"ElementaryTypeName","src":"886:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"PausableStorage","nameLocation":"860:15:29","scope":11657,"visibility":"public"},{"id":11515,"nodeType":"VariableDeclaration","src":"1023:117:29","nodes":[],"constant":true,"mutability":"constant","name":"PausableStorageLocation","nameLocation":"1048:23:29","scope":11657,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11513,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1023:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307863643565643135633665313837653737653961656538383138346332316634663231383261623538323763623362376530376662656463643633663033333030","id":11514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1074:66:29","typeDescriptions":{"typeIdentifier":"t_rational_92891662540554778686986514950364265630913525426840345632122912437671245656832_by_1","typeString":"int_const 9289...(69 digits omitted)...6832"},"value":"0xcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300"},"visibility":"private"},{"id":11523,"nodeType":"FunctionDefinition","src":"1147:162:29","nodes":[],"body":{"id":11522,"nodeType":"Block","src":"1227:82:29","nodes":[],"statements":[{"AST":{"nativeSrc":"1246:57:29","nodeType":"YulBlock","src":"1246:57:29","statements":[{"nativeSrc":"1260:33:29","nodeType":"YulAssignment","src":"1260:33:29","value":{"name":"PausableStorageLocation","nativeSrc":"1270:23:29","nodeType":"YulIdentifier","src":"1270:23:29"},"variableNames":[{"name":"$.slot","nativeSrc":"1260:6:29","nodeType":"YulIdentifier","src":"1260:6:29"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":11519,"isOffset":false,"isSlot":true,"src":"1260:6:29","suffix":"slot","valueSize":1},{"declaration":11515,"isOffset":false,"isSlot":false,"src":"1270:23:29","valueSize":1}],"id":11521,"nodeType":"InlineAssembly","src":"1237:66:29"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getPausableStorage","nameLocation":"1156:19:29","parameters":{"id":11516,"nodeType":"ParameterList","parameters":[],"src":"1175:2:29"},"returnParameters":{"id":11520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11519,"mutability":"mutable","name":"$","nameLocation":"1224:1:29","nodeType":"VariableDeclaration","scope":11523,"src":"1200:25:29","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$11512_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"},"typeName":{"id":11518,"nodeType":"UserDefinedTypeName","pathNode":{"id":11517,"name":"PausableStorage","nameLocations":["1200:15:29"],"nodeType":"IdentifierPath","referencedDeclaration":11512,"src":"1200:15:29"},"referencedDeclaration":11512,"src":"1200:15:29","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$11512_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"}},"visibility":"internal"}],"src":"1199:27:29"},"scope":11657,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":11528,"nodeType":"EventDefinition","src":"1393:30:29","nodes":[],"anonymous":false,"documentation":{"id":11524,"nodeType":"StructuredDocumentation","src":"1315:73:29","text":" @dev Emitted when the pause is triggered by `account`."},"eventSelector":"62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258","name":"Paused","nameLocation":"1399:6:29","parameters":{"id":11527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11526,"indexed":false,"mutability":"mutable","name":"account","nameLocation":"1414:7:29","nodeType":"VariableDeclaration","scope":11528,"src":"1406:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11525,"name":"address","nodeType":"ElementaryTypeName","src":"1406:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1405:17:29"}},{"id":11533,"nodeType":"EventDefinition","src":"1504:32:29","nodes":[],"anonymous":false,"documentation":{"id":11529,"nodeType":"StructuredDocumentation","src":"1429:70:29","text":" @dev Emitted when the pause is lifted by `account`."},"eventSelector":"5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa","name":"Unpaused","nameLocation":"1510:8:29","parameters":{"id":11532,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11531,"indexed":false,"mutability":"mutable","name":"account","nameLocation":"1527:7:29","nodeType":"VariableDeclaration","scope":11533,"src":"1519:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11530,"name":"address","nodeType":"ElementaryTypeName","src":"1519:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1518:17:29"}},{"id":11536,"nodeType":"ErrorDefinition","src":"1623:22:29","nodes":[],"documentation":{"id":11534,"nodeType":"StructuredDocumentation","src":"1542:76:29","text":" @dev The operation failed because the contract is paused."},"errorSelector":"d93c0665","name":"EnforcedPause","nameLocation":"1629:13:29","parameters":{"id":11535,"nodeType":"ParameterList","parameters":[],"src":"1642:2:29"}},{"id":11539,"nodeType":"ErrorDefinition","src":"1736:22:29","nodes":[],"documentation":{"id":11537,"nodeType":"StructuredDocumentation","src":"1651:80:29","text":" @dev The operation failed because the contract is not paused."},"errorSelector":"8dfc202b","name":"ExpectedPause","nameLocation":"1742:13:29","parameters":{"id":11538,"nodeType":"ParameterList","parameters":[],"src":"1755:2:29"}},{"id":11547,"nodeType":"ModifierDefinition","src":"1944:72:29","nodes":[],"body":{"id":11546,"nodeType":"Block","src":"1969:47:29","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11542,"name":"_requireNotPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11595,"src":"1979:17:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":11543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1979:19:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11544,"nodeType":"ExpressionStatement","src":"1979:19:29"},{"id":11545,"nodeType":"PlaceholderStatement","src":"2008:1:29"}]},"documentation":{"id":11540,"nodeType":"StructuredDocumentation","src":"1764:175:29","text":" @dev Modifier to make a function callable only when the contract is not paused.\n Requirements:\n - The contract must not be paused."},"name":"whenNotPaused","nameLocation":"1953:13:29","parameters":{"id":11541,"nodeType":"ParameterList","parameters":[],"src":"1966:2:29"},"virtual":false,"visibility":"internal"},{"id":11555,"nodeType":"ModifierDefinition","src":"2194:66:29","nodes":[],"body":{"id":11554,"nodeType":"Block","src":"2216:44:29","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11550,"name":"_requirePaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11608,"src":"2226:14:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":11551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2226:16:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11552,"nodeType":"ExpressionStatement","src":"2226:16:29"},{"id":11553,"nodeType":"PlaceholderStatement","src":"2252:1:29"}]},"documentation":{"id":11548,"nodeType":"StructuredDocumentation","src":"2022:167:29","text":" @dev Modifier to make a function callable only when the contract is paused.\n Requirements:\n - The contract must be paused."},"name":"whenPaused","nameLocation":"2203:10:29","parameters":{"id":11549,"nodeType":"ParameterList","parameters":[],"src":"2213:2:29"},"virtual":false,"visibility":"internal"},{"id":11561,"nodeType":"FunctionDefinition","src":"2266:60:29","nodes":[],"body":{"id":11560,"nodeType":"Block","src":"2319:7:29","nodes":[],"statements":[]},"implemented":true,"kind":"function","modifiers":[{"id":11558,"kind":"modifierInvocation","modifierName":{"id":11557,"name":"onlyInitializing","nameLocations":["2302:16:29"],"nodeType":"IdentifierPath","referencedDeclaration":10547,"src":"2302:16:29"},"nodeType":"ModifierInvocation","src":"2302:16:29"}],"name":"__Pausable_init","nameLocation":"2275:15:29","parameters":{"id":11556,"nodeType":"ParameterList","parameters":[],"src":"2290:2:29"},"returnParameters":{"id":11559,"nodeType":"ParameterList","parameters":[],"src":"2319:0:29"},"scope":11657,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":11567,"nodeType":"FunctionDefinition","src":"2332:70:29","nodes":[],"body":{"id":11566,"nodeType":"Block","src":"2395:7:29","nodes":[],"statements":[]},"implemented":true,"kind":"function","modifiers":[{"id":11564,"kind":"modifierInvocation","modifierName":{"id":11563,"name":"onlyInitializing","nameLocations":["2378:16:29"],"nodeType":"IdentifierPath","referencedDeclaration":10547,"src":"2378:16:29"},"nodeType":"ModifierInvocation","src":"2378:16:29"}],"name":"__Pausable_init_unchained","nameLocation":"2341:25:29","parameters":{"id":11562,"nodeType":"ParameterList","parameters":[],"src":"2366:2:29"},"returnParameters":{"id":11565,"nodeType":"ParameterList","parameters":[],"src":"2395:0:29"},"scope":11657,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":11583,"nodeType":"FunctionDefinition","src":"2496:145:29","nodes":[],"body":{"id":11582,"nodeType":"Block","src":"2549:92:29","nodes":[],"statements":[{"assignments":[11575],"declarations":[{"constant":false,"id":11575,"mutability":"mutable","name":"$","nameLocation":"2583:1:29","nodeType":"VariableDeclaration","scope":11582,"src":"2559:25:29","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$11512_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"},"typeName":{"id":11574,"nodeType":"UserDefinedTypeName","pathNode":{"id":11573,"name":"PausableStorage","nameLocations":["2559:15:29"],"nodeType":"IdentifierPath","referencedDeclaration":11512,"src":"2559:15:29"},"referencedDeclaration":11512,"src":"2559:15:29","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$11512_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"}},"visibility":"internal"}],"id":11578,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11576,"name":"_getPausableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11523,"src":"2587:19:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_PausableStorage_$11512_storage_ptr_$","typeString":"function () pure returns (struct PausableUpgradeable.PausableStorage storage pointer)"}},"id":11577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2587:21:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$11512_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2559:49:29"},{"expression":{"expression":{"id":11579,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11575,"src":"2625:1:29","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$11512_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"id":11580,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2627:7:29","memberName":"_paused","nodeType":"MemberAccess","referencedDeclaration":11511,"src":"2625:9:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11572,"id":11581,"nodeType":"Return","src":"2618:16:29"}]},"documentation":{"id":11568,"nodeType":"StructuredDocumentation","src":"2407:84:29","text":" @dev Returns true if the contract is paused, and false otherwise."},"functionSelector":"5c975abb","implemented":true,"kind":"function","modifiers":[],"name":"paused","nameLocation":"2505:6:29","parameters":{"id":11569,"nodeType":"ParameterList","parameters":[],"src":"2511:2:29"},"returnParameters":{"id":11572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11571,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11583,"src":"2543:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11570,"name":"bool","nodeType":"ElementaryTypeName","src":"2543:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2542:6:29"},"scope":11657,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":11595,"nodeType":"FunctionDefinition","src":"2709:128:29","nodes":[],"body":{"id":11594,"nodeType":"Block","src":"2760:77:29","nodes":[],"statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":11587,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11583,"src":"2774:6:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":11588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2774:8:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11593,"nodeType":"IfStatement","src":"2770:61:29","trueBody":{"id":11592,"nodeType":"Block","src":"2784:47:29","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":11589,"name":"EnforcedPause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11536,"src":"2805:13:29","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":11590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2805:15:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11591,"nodeType":"RevertStatement","src":"2798:22:29"}]}}]},"documentation":{"id":11584,"nodeType":"StructuredDocumentation","src":"2647:57:29","text":" @dev Throws if the contract is paused."},"implemented":true,"kind":"function","modifiers":[],"name":"_requireNotPaused","nameLocation":"2718:17:29","parameters":{"id":11585,"nodeType":"ParameterList","parameters":[],"src":"2735:2:29"},"returnParameters":{"id":11586,"nodeType":"ParameterList","parameters":[],"src":"2760:0:29"},"scope":11657,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":11608,"nodeType":"FunctionDefinition","src":"2909:126:29","nodes":[],"body":{"id":11607,"nodeType":"Block","src":"2957:78:29","nodes":[],"statements":[{"condition":{"id":11601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2971:9:29","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":11599,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11583,"src":"2972:6:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":11600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2972:8:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11606,"nodeType":"IfStatement","src":"2967:62:29","trueBody":{"id":11605,"nodeType":"Block","src":"2982:47:29","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":11602,"name":"ExpectedPause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11539,"src":"3003:13:29","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":11603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3003:15:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11604,"nodeType":"RevertStatement","src":"2996:22:29"}]}}]},"documentation":{"id":11596,"nodeType":"StructuredDocumentation","src":"2843:61:29","text":" @dev Throws if the contract is not paused."},"implemented":true,"kind":"function","modifiers":[],"name":"_requirePaused","nameLocation":"2918:14:29","parameters":{"id":11597,"nodeType":"ParameterList","parameters":[],"src":"2932:2:29"},"returnParameters":{"id":11598,"nodeType":"ParameterList","parameters":[],"src":"2957:0:29"},"scope":11657,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":11632,"nodeType":"FunctionDefinition","src":"3170:176:29","nodes":[],"body":{"id":11631,"nodeType":"Block","src":"3219:127:29","nodes":[],"statements":[{"assignments":[11616],"declarations":[{"constant":false,"id":11616,"mutability":"mutable","name":"$","nameLocation":"3253:1:29","nodeType":"VariableDeclaration","scope":11631,"src":"3229:25:29","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$11512_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"},"typeName":{"id":11615,"nodeType":"UserDefinedTypeName","pathNode":{"id":11614,"name":"PausableStorage","nameLocations":["3229:15:29"],"nodeType":"IdentifierPath","referencedDeclaration":11512,"src":"3229:15:29"},"referencedDeclaration":11512,"src":"3229:15:29","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$11512_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"}},"visibility":"internal"}],"id":11619,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11617,"name":"_getPausableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11523,"src":"3257:19:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_PausableStorage_$11512_storage_ptr_$","typeString":"function () pure returns (struct PausableUpgradeable.PausableStorage storage pointer)"}},"id":11618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3257:21:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$11512_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3229:49:29"},{"expression":{"id":11624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11620,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11616,"src":"3288:1:29","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$11512_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"id":11622,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3290:7:29","memberName":"_paused","nodeType":"MemberAccess","referencedDeclaration":11511,"src":"3288:9:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":11623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3300:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3288:16:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11625,"nodeType":"ExpressionStatement","src":"3288:16:29"},{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":11627,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11479,"src":"3326:10:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3326:12:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11626,"name":"Paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11528,"src":"3319:6:29","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":11629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3319:20:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11630,"nodeType":"EmitStatement","src":"3314:25:29"}]},"documentation":{"id":11609,"nodeType":"StructuredDocumentation","src":"3041:124:29","text":" @dev Triggers stopped state.\n Requirements:\n - The contract must not be paused."},"implemented":true,"kind":"function","modifiers":[{"id":11612,"kind":"modifierInvocation","modifierName":{"id":11611,"name":"whenNotPaused","nameLocations":["3205:13:29"],"nodeType":"IdentifierPath","referencedDeclaration":11547,"src":"3205:13:29"},"nodeType":"ModifierInvocation","src":"3205:13:29"}],"name":"_pause","nameLocation":"3179:6:29","parameters":{"id":11610,"nodeType":"ParameterList","parameters":[],"src":"3185:2:29"},"returnParameters":{"id":11613,"nodeType":"ParameterList","parameters":[],"src":"3219:0:29"},"scope":11657,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":11656,"nodeType":"FunctionDefinition","src":"3478:178:29","nodes":[],"body":{"id":11655,"nodeType":"Block","src":"3526:130:29","nodes":[],"statements":[{"assignments":[11640],"declarations":[{"constant":false,"id":11640,"mutability":"mutable","name":"$","nameLocation":"3560:1:29","nodeType":"VariableDeclaration","scope":11655,"src":"3536:25:29","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$11512_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"},"typeName":{"id":11639,"nodeType":"UserDefinedTypeName","pathNode":{"id":11638,"name":"PausableStorage","nameLocations":["3536:15:29"],"nodeType":"IdentifierPath","referencedDeclaration":11512,"src":"3536:15:29"},"referencedDeclaration":11512,"src":"3536:15:29","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$11512_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage"}},"visibility":"internal"}],"id":11643,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11641,"name":"_getPausableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11523,"src":"3564:19:29","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_PausableStorage_$11512_storage_ptr_$","typeString":"function () pure returns (struct PausableUpgradeable.PausableStorage storage pointer)"}},"id":11642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3564:21:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$11512_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3536:49:29"},{"expression":{"id":11648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11644,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11640,"src":"3595:1:29","typeDescriptions":{"typeIdentifier":"t_struct$_PausableStorage_$11512_storage_ptr","typeString":"struct PausableUpgradeable.PausableStorage storage pointer"}},"id":11646,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3597:7:29","memberName":"_paused","nodeType":"MemberAccess","referencedDeclaration":11511,"src":"3595:9:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":11647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3607:5:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3595:17:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11649,"nodeType":"ExpressionStatement","src":"3595:17:29"},{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":11651,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11479,"src":"3636:10:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3636:12:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11650,"name":"Unpaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11533,"src":"3627:8:29","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":11653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3627:22:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11654,"nodeType":"EmitStatement","src":"3622:27:29"}]},"documentation":{"id":11633,"nodeType":"StructuredDocumentation","src":"3352:121:29","text":" @dev Returns to normal state.\n Requirements:\n - The contract must be paused."},"implemented":true,"kind":"function","modifiers":[{"id":11636,"kind":"modifierInvocation","modifierName":{"id":11635,"name":"whenPaused","nameLocations":["3515:10:29"],"nodeType":"IdentifierPath","referencedDeclaration":11555,"src":"3515:10:29"},"nodeType":"ModifierInvocation","src":"3515:10:29"}],"name":"_unpause","nameLocation":"3487:8:29","parameters":{"id":11634,"nodeType":"ParameterList","parameters":[],"src":"3495:2:29"},"returnParameters":{"id":11637,"nodeType":"ParameterList","parameters":[],"src":"3526:0:29"},"scope":11657,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[{"baseName":{"id":11505,"name":"Initializable","nameLocations":["742:13:29"],"nodeType":"IdentifierPath","referencedDeclaration":10652,"src":"742:13:29"},"id":11506,"nodeType":"InheritanceSpecifier","src":"742:13:29"},{"baseName":{"id":11507,"name":"ContextUpgradeable","nameLocations":["757:18:29"],"nodeType":"IdentifierPath","referencedDeclaration":11497,"src":"757:18:29"},"id":11508,"nodeType":"InheritanceSpecifier","src":"757:18:29"}],"canonicalName":"PausableUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":11504,"nodeType":"StructuredDocumentation","src":"261:439:29","text":" @dev Contract module which allows children to implement an emergency stop\n mechanism that can be triggered by an authorized account.\n This module is used through inheritance. It will make available the\n modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n the functions of your contract. Note that they will not be pausable by\n simply including this module, only once the modifiers are put in place."},"fullyImplemented":true,"linearizedBaseContracts":[11657,11497,10652],"name":"PausableUpgradeable","nameLocation":"719:19:29","scope":11658,"usedErrors":[10401,10404,11536,11539],"usedEvents":[10409,11528,11533]}],"license":"MIT"}},"node_modules/@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol":{"id":30,"ast":{"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","id":11787,"exportedSymbols":{"Initializable":[10652],"ReentrancyGuardUpgradeable":[11786]},"nodeType":"SourceUnit","src":"109:4397:30","nodes":[{"id":11659,"nodeType":"PragmaDirective","src":"109:24:30","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":11661,"nodeType":"ImportDirective","src":"134:63:30","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":11787,"sourceUnit":10653,"symbolAliases":[{"foreign":{"id":11660,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10652,"src":"142:13:30","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":11786,"nodeType":"ContractDefinition","src":"1094:3411:30","nodes":[{"id":11667,"nodeType":"VariableDeclaration","src":"1910:40:30","nodes":[],"constant":true,"mutability":"constant","name":"NOT_ENTERED","nameLocation":"1935:11:30","scope":11786,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11665,"name":"uint256","nodeType":"ElementaryTypeName","src":"1910:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":11666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1949:1:30","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"id":11670,"nodeType":"VariableDeclaration","src":"1956:36:30","nodes":[],"constant":true,"mutability":"constant","name":"ENTERED","nameLocation":"1981:7:30","scope":11786,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11668,"name":"uint256","nodeType":"ElementaryTypeName","src":"1956:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":11669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1991:1:30","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"private"},{"id":11674,"nodeType":"StructDefinition","src":"2077:62:30","nodes":[],"canonicalName":"ReentrancyGuardUpgradeable.ReentrancyGuardStorage","documentation":{"id":11671,"nodeType":"StructuredDocumentation","src":"1999:73:30","text":"@custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard"},"members":[{"constant":false,"id":11673,"mutability":"mutable","name":"_status","nameLocation":"2125:7:30","nodeType":"VariableDeclaration","scope":11674,"src":"2117:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11672,"name":"uint256","nodeType":"ElementaryTypeName","src":"2117:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ReentrancyGuardStorage","nameLocation":"2084:22:30","scope":11786,"visibility":"public"},{"id":11677,"nodeType":"VariableDeclaration","src":"2264:124:30","nodes":[],"constant":true,"mutability":"constant","name":"ReentrancyGuardStorageLocation","nameLocation":"2289:30:30","scope":11786,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11675,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2264:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307839623737396231373432326430646639323232333031386233326234643166613436653037313732336436383137653234383664303033626563633535663030","id":11676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2322:66:30","typeDescriptions":{"typeIdentifier":"t_rational_70319816728846589445362000750570655803700195216363692647688146666176345628416_by_1","typeString":"int_const 7031...(69 digits omitted)...8416"},"value":"0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00"},"visibility":"private"},{"id":11685,"nodeType":"FunctionDefinition","src":"2395:183:30","nodes":[],"body":{"id":11684,"nodeType":"Block","src":"2489:89:30","nodes":[],"statements":[{"AST":{"nativeSrc":"2508:64:30","nodeType":"YulBlock","src":"2508:64:30","statements":[{"nativeSrc":"2522:40:30","nodeType":"YulAssignment","src":"2522:40:30","value":{"name":"ReentrancyGuardStorageLocation","nativeSrc":"2532:30:30","nodeType":"YulIdentifier","src":"2532:30:30"},"variableNames":[{"name":"$.slot","nativeSrc":"2522:6:30","nodeType":"YulIdentifier","src":"2522:6:30"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":11681,"isOffset":false,"isSlot":true,"src":"2522:6:30","suffix":"slot","valueSize":1},{"declaration":11677,"isOffset":false,"isSlot":false,"src":"2532:30:30","valueSize":1}],"id":11683,"nodeType":"InlineAssembly","src":"2499:73:30"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getReentrancyGuardStorage","nameLocation":"2404:26:30","parameters":{"id":11678,"nodeType":"ParameterList","parameters":[],"src":"2430:2:30"},"returnParameters":{"id":11682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11681,"mutability":"mutable","name":"$","nameLocation":"2486:1:30","nodeType":"VariableDeclaration","scope":11685,"src":"2455:32:30","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$11674_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":11680,"nodeType":"UserDefinedTypeName","pathNode":{"id":11679,"name":"ReentrancyGuardStorage","nameLocations":["2455:22:30"],"nodeType":"IdentifierPath","referencedDeclaration":11674,"src":"2455:22:30"},"referencedDeclaration":11674,"src":"2455:22:30","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$11674_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"src":"2454:34:30"},"scope":11786,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":11688,"nodeType":"ErrorDefinition","src":"2641:37:30","nodes":[],"documentation":{"id":11686,"nodeType":"StructuredDocumentation","src":"2584:52:30","text":" @dev Unauthorized reentrant call."},"errorSelector":"3ee5aeb5","name":"ReentrancyGuardReentrantCall","nameLocation":"2647:28:30","parameters":{"id":11687,"nodeType":"ParameterList","parameters":[],"src":"2675:2:30"}},{"id":11697,"nodeType":"FunctionDefinition","src":"2684:111:30","nodes":[],"body":{"id":11696,"nodeType":"Block","src":"2744:51:30","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11693,"name":"__ReentrancyGuard_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11715,"src":"2754:32:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":11694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2754:34:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11695,"nodeType":"ExpressionStatement","src":"2754:34:30"}]},"implemented":true,"kind":"function","modifiers":[{"id":11691,"kind":"modifierInvocation","modifierName":{"id":11690,"name":"onlyInitializing","nameLocations":["2727:16:30"],"nodeType":"IdentifierPath","referencedDeclaration":10547,"src":"2727:16:30"},"nodeType":"ModifierInvocation","src":"2727:16:30"}],"name":"__ReentrancyGuard_init","nameLocation":"2693:22:30","parameters":{"id":11689,"nodeType":"ParameterList","parameters":[],"src":"2715:2:30"},"returnParameters":{"id":11692,"nodeType":"ParameterList","parameters":[],"src":"2744:0:30"},"scope":11786,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":11715,"nodeType":"FunctionDefinition","src":"2801:183:30","nodes":[],"body":{"id":11714,"nodeType":"Block","src":"2871:113:30","nodes":[],"statements":[{"assignments":[11704],"declarations":[{"constant":false,"id":11704,"mutability":"mutable","name":"$","nameLocation":"2912:1:30","nodeType":"VariableDeclaration","scope":11714,"src":"2881:32:30","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$11674_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":11703,"nodeType":"UserDefinedTypeName","pathNode":{"id":11702,"name":"ReentrancyGuardStorage","nameLocations":["2881:22:30"],"nodeType":"IdentifierPath","referencedDeclaration":11674,"src":"2881:22:30"},"referencedDeclaration":11674,"src":"2881:22:30","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$11674_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"id":11707,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11705,"name":"_getReentrancyGuardStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11685,"src":"2916:26:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$11674_storage_ptr_$","typeString":"function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)"}},"id":11706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2916:28:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$11674_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2881:63:30"},{"expression":{"id":11712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11708,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11704,"src":"2954:1:30","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$11674_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":11710,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2956:7:30","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":11673,"src":"2954:9:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11711,"name":"NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11667,"src":"2966:11:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2954:23:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11713,"nodeType":"ExpressionStatement","src":"2954:23:30"}]},"implemented":true,"kind":"function","modifiers":[{"id":11700,"kind":"modifierInvocation","modifierName":{"id":11699,"name":"onlyInitializing","nameLocations":["2854:16:30"],"nodeType":"IdentifierPath","referencedDeclaration":10547,"src":"2854:16:30"},"nodeType":"ModifierInvocation","src":"2854:16:30"}],"name":"__ReentrancyGuard_init_unchained","nameLocation":"2810:32:30","parameters":{"id":11698,"nodeType":"ParameterList","parameters":[],"src":"2842:2:30"},"returnParameters":{"id":11701,"nodeType":"ParameterList","parameters":[],"src":"2871:0:30"},"scope":11786,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":11726,"nodeType":"ModifierDefinition","src":"3361:103:30","nodes":[],"body":{"id":11725,"nodeType":"Block","src":"3385:79:30","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11718,"name":"_nonReentrantBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11751,"src":"3395:19:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":11719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3395:21:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11720,"nodeType":"ExpressionStatement","src":"3395:21:30"},{"id":11721,"nodeType":"PlaceholderStatement","src":"3426:1:30"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11722,"name":"_nonReentrantAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11767,"src":"3437:18:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":11723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3437:20:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11724,"nodeType":"ExpressionStatement","src":"3437:20:30"}]},"documentation":{"id":11716,"nodeType":"StructuredDocumentation","src":"2990:366:30","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 making it call a\n `private` function that does the actual work."},"name":"nonReentrant","nameLocation":"3370:12:30","parameters":{"id":11717,"nodeType":"ParameterList","parameters":[],"src":"3382:2:30"},"virtual":false,"visibility":"internal"},{"id":11751,"nodeType":"FunctionDefinition","src":"3470:384:30","nodes":[],"body":{"id":11750,"nodeType":"Block","src":"3509:345:30","nodes":[],"statements":[{"assignments":[11731],"declarations":[{"constant":false,"id":11731,"mutability":"mutable","name":"$","nameLocation":"3550:1:30","nodeType":"VariableDeclaration","scope":11750,"src":"3519:32:30","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$11674_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":11730,"nodeType":"UserDefinedTypeName","pathNode":{"id":11729,"name":"ReentrancyGuardStorage","nameLocations":["3519:22:30"],"nodeType":"IdentifierPath","referencedDeclaration":11674,"src":"3519:22:30"},"referencedDeclaration":11674,"src":"3519:22:30","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$11674_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"id":11734,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11732,"name":"_getReentrancyGuardStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11685,"src":"3554:26:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$11674_storage_ptr_$","typeString":"function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)"}},"id":11733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3554:28:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$11674_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3519:63:30"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11735,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11731,"src":"3670:1:30","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$11674_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":11736,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3672:7:30","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":11673,"src":"3670:9:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":11737,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11670,"src":"3683:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3670:20:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11743,"nodeType":"IfStatement","src":"3666:88:30","trueBody":{"id":11742,"nodeType":"Block","src":"3692:62:30","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":11739,"name":"ReentrancyGuardReentrantCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11688,"src":"3713:28:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":11740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3713:30:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11741,"nodeType":"RevertStatement","src":"3706:37:30"}]}},{"expression":{"id":11748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11744,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11731,"src":"3828:1:30","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$11674_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":11746,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3830:7:30","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":11673,"src":"3828:9:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11747,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11670,"src":"3840:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3828:19:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11749,"nodeType":"ExpressionStatement","src":"3828:19:30"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantBefore","nameLocation":"3479:19:30","parameters":{"id":11727,"nodeType":"ParameterList","parameters":[],"src":"3498:2:30"},"returnParameters":{"id":11728,"nodeType":"ParameterList","parameters":[],"src":"3509:0:30"},"scope":11786,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":11767,"nodeType":"FunctionDefinition","src":"3860:283:30","nodes":[],"body":{"id":11766,"nodeType":"Block","src":"3898:245:30","nodes":[],"statements":[{"assignments":[11756],"declarations":[{"constant":false,"id":11756,"mutability":"mutable","name":"$","nameLocation":"3939:1:30","nodeType":"VariableDeclaration","scope":11766,"src":"3908:32:30","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$11674_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":11755,"nodeType":"UserDefinedTypeName","pathNode":{"id":11754,"name":"ReentrancyGuardStorage","nameLocations":["3908:22:30"],"nodeType":"IdentifierPath","referencedDeclaration":11674,"src":"3908:22:30"},"referencedDeclaration":11674,"src":"3908:22:30","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$11674_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"id":11759,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11757,"name":"_getReentrancyGuardStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11685,"src":"3943:26:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$11674_storage_ptr_$","typeString":"function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)"}},"id":11758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3943:28:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$11674_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3908:63:30"},{"expression":{"id":11764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11760,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11756,"src":"4113:1:30","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$11674_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":11762,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4115:7:30","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":11673,"src":"4113:9:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11763,"name":"NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11667,"src":"4125:11:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4113:23:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11765,"nodeType":"ExpressionStatement","src":"4113:23:30"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantAfter","nameLocation":"3869:18:30","parameters":{"id":11752,"nodeType":"ParameterList","parameters":[],"src":"3887:2:30"},"returnParameters":{"id":11753,"nodeType":"ParameterList","parameters":[],"src":"3898:0:30"},"scope":11786,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":11785,"nodeType":"FunctionDefinition","src":"4322:181:30","nodes":[],"body":{"id":11784,"nodeType":"Block","src":"4386:117:30","nodes":[],"statements":[{"assignments":[11775],"declarations":[{"constant":false,"id":11775,"mutability":"mutable","name":"$","nameLocation":"4427:1:30","nodeType":"VariableDeclaration","scope":11784,"src":"4396:32:30","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$11674_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":11774,"nodeType":"UserDefinedTypeName","pathNode":{"id":11773,"name":"ReentrancyGuardStorage","nameLocations":["4396:22:30"],"nodeType":"IdentifierPath","referencedDeclaration":11674,"src":"4396:22:30"},"referencedDeclaration":11674,"src":"4396:22:30","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$11674_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"id":11778,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11776,"name":"_getReentrancyGuardStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11685,"src":"4431:26:30","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$11674_storage_ptr_$","typeString":"function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)"}},"id":11777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4431:28:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$11674_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4396:63:30"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11779,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11775,"src":"4476:1:30","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$11674_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":11780,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4478:7:30","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":11673,"src":"4476:9:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":11781,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11670,"src":"4489:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4476:20:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11772,"id":11783,"nodeType":"Return","src":"4469:27:30"}]},"documentation":{"id":11768,"nodeType":"StructuredDocumentation","src":"4149:168:30","text":" @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n `nonReentrant` function in the call stack."},"implemented":true,"kind":"function","modifiers":[],"name":"_reentrancyGuardEntered","nameLocation":"4331:23:30","parameters":{"id":11769,"nodeType":"ParameterList","parameters":[],"src":"4354:2:30"},"returnParameters":{"id":11772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11771,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11785,"src":"4380:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11770,"name":"bool","nodeType":"ElementaryTypeName","src":"4380:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4379:6:30"},"scope":11786,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":true,"baseContracts":[{"baseName":{"id":11663,"name":"Initializable","nameLocations":["1142:13:30"],"nodeType":"IdentifierPath","referencedDeclaration":10652,"src":"1142:13:30"},"id":11664,"nodeType":"InheritanceSpecifier","src":"1142:13:30"}],"canonicalName":"ReentrancyGuardUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":11662,"nodeType":"StructuredDocumentation","src":"199:894:30","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 EIP-1153 (transient storage) is available on the chain you're deploying at,\n consider using {ReentrancyGuardTransient} instead.\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,"linearizedBaseContracts":[11786,10652],"name":"ReentrancyGuardUpgradeable","nameLocation":"1112:26:30","scope":11787,"usedErrors":[10401,10404,11688],"usedEvents":[10409]}],"license":"MIT"}}}},"solcLongVersion":"0.8.30","solcVersion":"0.8.30"}