dsa-governance/deployments/mainnet_1/PayloadIGP8.json
2024-03-03 00:10:34 -05:00

1 line
64 KiB
JSON

{"metadata":"{\"defaultCompiler\":{\"version\":\"0.7.3\"},\"sources\":{\"contracts/payloads/IGP8/PayloadIGP8.sol\":{\"content\":\"pragma solidity ^0.7.0;\\npragma experimental ABIEncoderV2;\\n\\ninterface IGovernorBravo {\\n function _acceptAdmin() external;\\n\\n function _setVotingDelay(uint newVotingDelay) external;\\n\\n function _setVotingPeriod(uint newVotingPeriod) external;\\n\\n function _acceptAdminOnTimelock() external;\\n\\n function _setImplementation(address implementation_) external;\\n\\n function propose(\\n address[] memory targets,\\n uint[] memory values,\\n string[] memory signatures,\\n bytes[] memory calldatas,\\n string memory description\\n ) external returns (uint);\\n\\n function admin() external view returns (address);\\n\\n function pendingAdmin() external view returns (address);\\n\\n function timelock() external view returns (address);\\n\\n function votingDelay() external view returns (uint256);\\n\\n function votingPeriod() external view returns (uint256);\\n}\\n\\ninterface ITimelock {\\n function acceptAdmin() external;\\n\\n function setDelay(uint delay_) external;\\n\\n function setPendingAdmin(address pendingAdmin_) external;\\n\\n function queueTransaction(\\n address target,\\n uint value,\\n string memory signature,\\n bytes memory data,\\n uint eta\\n ) external returns (bytes32);\\n\\n function executeTransaction(\\n address target,\\n uint value,\\n string memory signature,\\n bytes memory data,\\n uint eta\\n ) external payable returns (bytes memory);\\n\\n function pendingAdmin() external view returns (address);\\n\\n function admin() external view returns (address);\\n\\n function delay() external view returns (uint256);\\n}\\n\\ninterface IInstaIndex {\\n function changeMaster(address _newMaster) external;\\n\\n function updateMaster() external;\\n\\n function master() external view returns (address);\\n}\\n\\ninterface ILite {\\n function setAdmin(address newAdmin) external;\\n\\n function getAdmin() external view returns (address);\\n\\n function removeImplementation(address implementation_) external;\\n\\n function addImplementation(\\n address implementation_,\\n bytes4[] calldata sigs_\\n ) external;\\n\\n function setDummyImplementation(address newDummyImplementation_) external;\\n\\n function updateMaxRiskRatio(\\n uint8[] memory protocolId_,\\n uint256[] memory newRiskRatio_\\n ) external;\\n\\n function updateAggrMaxVaultRatio(uint256 newAggrMaxVaultRatio_) external;\\n}\\n\\ninterface IDSAV2 {\\n function cast(\\n string[] memory _targetNames,\\n bytes[] memory _datas,\\n address _origin\\n ) external payable returns (bytes32);\\n\\n function isAuth(address user) external view returns (bool);\\n}\\n\\ncontract PayloadIGP8 {\\n uint256 public constant PROPOSAL_ID = 8;\\n\\n address public constant PROPOSER =\\n 0xA45f7bD6A5Ff45D31aaCE6bCD3d426D9328cea01;\\n\\n IGovernorBravo public constant GOVERNOR =\\n IGovernorBravo(0x0204Cd037B2ec03605CFdFe482D8e257C765fA1B);\\n ITimelock public immutable TIMELOCK =\\n ITimelock(0x2386DC45AdDed673317eF068992F19421B481F4c);\\n\\n address public immutable ADDRESS_THIS;\\n\\n ILite public constant LITE =\\n ILite(0xA0D3707c569ff8C87FA923d3823eC5D81c98Be78);\\n\\n address internal constant OLD_USER_MODULE =\\n 0xFF93C10FB34f7069071D0679c45ed77A98f37f21;\\n address internal constant OLD_ADMIN_MODULE =\\n 0x06feaa505193e987B12f161F1dB73b1D4d604001;\\n address internal constant OLD_LEVERAGE_MODULE =\\n 0xA18519a6bb1282954e933DA0A775924E4CcE6019;\\n address internal constant OLD_REBALANCER_MODULE =\\n 0xc6639CE123d779fE6eA545B70CbDc1dCA421740d;\\n address internal constant OLD_REFINANCE_MODULE =\\n 0x390936658cB9B73ca75c6c02D5EF88b958D38241;\\n address internal constant OLD_DSA_MODULE =\\n 0xE38d5938d6D75ceF2c3Fc63Dc4AB32cD103E10df;\\n address internal constant OLD_WITHDRAWALS_MODULE =\\n 0xbd45DfF3320b0d832C61fb41489fdd3a1b960067;\\n\\n address internal constant NEW_VIEW_MODULE =\\n 0x645b137ACa041B85c057a4A396086789cFD99041;\\n address internal constant NEW_USER_MODULE =\\n 0x7ee8b5C11b578DD1E8c02D641508A305281Bd173;\\n address internal constant NEW_ADMIN_MODULE =\\n 0xA7dC9540f00358a7ca46780de2FdEBD7F673C127;\\n address internal constant NEW_LEVERAGE_MODULE =\\n 0x5b94f032799CC36fFd3E8CA9BCeA2bA5af40d43E;\\n address internal constant NEW_REBALANCER_MODULE =\\n 0x871176C000603665Ce1133C0aAC783B79257E9C6;\\n address internal constant NEW_REFINANCE_MODULE =\\n 0x4e05681632e1401a89335EDaB3E36612Ae8E1D1E;\\n address internal constant NEW_DSA_MODULE =\\n 0xC30b9D5b582C00C6Bf2b7b274AaA7Cc06f1420bD;\\n address internal constant NEW_WITHDRAWALS_MODULE =\\n 0x6A64A3E0af38279ac7455c85b2C683f5621cE2e7;\\n\\n address internal constant NEW_DUMMY_IMPLEMENTATION =\\n 0x3AC94ba5465BF3429fE237468EaBa5aa20072d61;\\n\\n constructor() {\\n ADDRESS_THIS = address(this);\\n }\\n\\n function propose(string memory description) external {\\n require(msg.sender == PROPOSER, \\\"msg.sender-not-proposer\\\");\\n\\n uint256 totalActions = 1;\\n address[] memory targets = new address[](totalActions);\\n uint256[] memory values = new uint256[](totalActions);\\n string[] memory signatures = new string[](totalActions);\\n bytes[] memory calldatas = new bytes[](totalActions);\\n\\n // Action 1: call executePayload on timelock contract to execute payload related to lite\\n targets[0] = address(TIMELOCK);\\n values[0] = 0;\\n signatures[0] = \\\"executePayload(address,string,bytes)\\\";\\n calldatas[0] = abi.encode(ADDRESS_THIS, \\\"execute()\\\", abi.encode());\\n\\n uint256 proposedId = GOVERNOR.propose(\\n targets,\\n values,\\n signatures,\\n calldatas,\\n description\\n );\\n\\n require(proposedId == PROPOSAL_ID, \\\"PROPOSAL_IS_NOT_SAME\\\");\\n }\\n\\n function execute() external {\\n // Action 1: remove Implementations\\n action1();\\n\\n // Action 2: add implementations\\n action2();\\n\\n // Action 3: set dummy implementations\\n action3();\\n\\n // Action 4: Change ratios\\n action4();\\n }\\n\\n function verifyProposal() external view {}\\n\\n /***********************************|\\n | Proposal Payload Actions |\\n |__________________________________*/\\n\\n /// @notice Action 1: Remove all old implementations\\n function action1() internal {\\n LITE.removeImplementation(OLD_USER_MODULE);\\n LITE.removeImplementation(OLD_ADMIN_MODULE);\\n LITE.removeImplementation(OLD_LEVERAGE_MODULE);\\n LITE.removeImplementation(OLD_REBALANCER_MODULE);\\n LITE.removeImplementation(OLD_REFINANCE_MODULE);\\n LITE.removeImplementation(OLD_DSA_MODULE);\\n LITE.removeImplementation(OLD_WITHDRAWALS_MODULE);\\n }\\n\\n /// @notice Action 2: Add new implementations\\n function action2() internal {\\n LITE.addImplementation(NEW_USER_MODULE, userSigs());\\n LITE.addImplementation(NEW_VIEW_MODULE, viewSigs());\\n LITE.addImplementation(NEW_ADMIN_MODULE, adminSigs());\\n LITE.addImplementation(NEW_LEVERAGE_MODULE, leverageSigs());\\n LITE.addImplementation(NEW_REBALANCER_MODULE, rebalancerSigs());\\n LITE.addImplementation(NEW_REFINANCE_MODULE, refinanceSigs());\\n LITE.addImplementation(NEW_DSA_MODULE, dsaSigs());\\n LITE.addImplementation(NEW_WITHDRAWALS_MODULE, withdrawalsSigs());\\n }\\n\\n /// @notice Action 3: Change dummy implementation.\\n function action3() internal {\\n LITE.setDummyImplementation(NEW_DUMMY_IMPLEMENTATION);\\n }\\n\\n /// @notice Action 4: Change ratios\\n function action4() internal {\\n // Update max aggr ratio from 78.5 to 83.5\\n LITE.updateAggrMaxVaultRatio(83.5 * 1e4); // 83.5% or 83.5 * 1e4\\n\\n // Update max risk ratio of different protocols\\n {\\n uint8[] memory protocolIds_ = new uint8[](4);\\n uint256[] memory newRiskRatios_ = new uint256[](4);\\n\\n // Spark Risk Ratio from 88% to 89%. Protocol Id: 7\\n protocolIds_[0] = 7;\\n newRiskRatios_[0] = 89 * 1e4;\\n\\n // Aave V3 Risk Ratio from 88% to 91%. Protocol Id: 2\\n protocolIds_[1] = 2;\\n newRiskRatios_[1] = 91 * 1e4;\\n\\n // Morpho Aave v3 Risk Ratio from 88% to 89%. Protocol Id: 6\\n protocolIds_[2] = 6;\\n newRiskRatios_[2] = 89 * 1e4;\\n\\n // Fluid Risk Ratio from 88% to 91%. Protocol Id: 8\\n protocolIds_[3] = 8;\\n newRiskRatios_[3] = 91 * 1e4;\\n\\n LITE.updateMaxRiskRatio(protocolIds_, newRiskRatios_);\\n }\\n }\\n\\n /***********************************|\\n | Function Signatures |\\n |__________________________________*/\\n function userSigs() public pure returns (bytes4[] memory sigs_) {\\n sigs_ = new bytes4[](28);\\n sigs_[0] = bytes4(keccak256(\\\"allowance(address,address)\\\"));\\n sigs_[1] = bytes4(keccak256(\\\"approve(address,uint256)\\\"));\\n sigs_[2] = bytes4(keccak256(\\\"balanceOf(address)\\\"));\\n sigs_[3] = bytes4(keccak256(\\\"decreaseAllowance(address,uint256)\\\"));\\n sigs_[4] = bytes4(keccak256(\\\"increaseAllowance(address,uint256)\\\"));\\n sigs_[5] = bytes4(keccak256(\\\"name()\\\"));\\n sigs_[6] = bytes4(keccak256(\\\"symbol()\\\"));\\n sigs_[7] = bytes4(keccak256(\\\"totalSupply()\\\"));\\n sigs_[8] = bytes4(keccak256(\\\"transfer(address,uint256)\\\"));\\n sigs_[9] = bytes4(keccak256(\\\"transferFrom(address,address,uint256)\\\"));\\n sigs_[10] = bytes4(keccak256(\\\"asset()\\\"));\\n sigs_[11] = bytes4(keccak256(\\\"convertToAssets(uint256)\\\"));\\n sigs_[12] = bytes4(keccak256(\\\"convertToShares(uint256)\\\"));\\n sigs_[13] = bytes4(keccak256(\\\"decimals()\\\"));\\n sigs_[14] = bytes4(keccak256(\\\"maxDeposit(address)\\\"));\\n sigs_[15] = bytes4(keccak256(\\\"maxMint(address)\\\"));\\n sigs_[16] = bytes4(keccak256(\\\"maxRedeem(address)\\\"));\\n sigs_[17] = bytes4(keccak256(\\\"maxWithdraw(address)\\\"));\\n sigs_[18] = bytes4(keccak256(\\\"previewDeposit(uint256)\\\"));\\n sigs_[19] = bytes4(keccak256(\\\"previewMint(uint256)\\\"));\\n sigs_[20] = bytes4(keccak256(\\\"previewRedeem(uint256)\\\"));\\n sigs_[21] = bytes4(keccak256(\\\"previewWithdraw(uint256)\\\"));\\n sigs_[22] = bytes4(keccak256(\\\"deposit(uint256,address)\\\"));\\n sigs_[23] = bytes4(\\n keccak256(\\\"importPosition(uint256,uint256,uint256,address)\\\")\\n );\\n sigs_[24] = bytes4(keccak256(\\\"mint(uint256,address)\\\"));\\n sigs_[25] = bytes4(keccak256(\\\"redeem(uint256,address,address)\\\"));\\n sigs_[26] = bytes4(keccak256(\\\"totalAssets()\\\"));\\n sigs_[27] = bytes4(keccak256(\\\"withdraw(uint256,address,address)\\\"));\\n }\\n\\n function viewSigs() public pure returns (bytes4[] memory sigs_) {\\n sigs_ = new bytes4[](28);\\n\\n sigs_[0] = bytes4(keccak256(\\\"getRatioAaveV2()\\\"));\\n sigs_[1] = bytes4(keccak256(\\\"getRatioAaveV3(uint256)\\\"));\\n sigs_[2] = bytes4(keccak256(\\\"getRatioCompoundV3(uint256)\\\"));\\n sigs_[3] = bytes4(keccak256(\\\"getRatioEuler(uint256)\\\"));\\n sigs_[4] = bytes4(keccak256(\\\"getRatioMorphoAaveV2()\\\"));\\n sigs_[5] = bytes4(keccak256(\\\"getRatioMorphoAaveV3(uint256)\\\"));\\n sigs_[6] = bytes4(keccak256(\\\"getRatioSpark(uint256)\\\"));\\n sigs_[7] = bytes4(keccak256(\\\"getRatioFluid(uint256)\\\"));\\n sigs_[8] = bytes4(keccak256(\\\"getProtocolRatio(uint8)\\\"));\\n sigs_[9] = bytes4(keccak256(\\\"getNetAssets()\\\"));\\n sigs_[10] = bytes4(keccak256(\\\"getWithdrawFee(uint256)\\\"));\\n sigs_[11] = bytes4(keccak256(\\\"vaultDSA()\\\"));\\n sigs_[12] = bytes4(keccak256(\\\"leverageMaxUnitAmountLimit()\\\"));\\n sigs_[13] = bytes4(keccak256(\\\"secondaryAuth()\\\"));\\n sigs_[14] = bytes4(keccak256(\\\"exchangePrice()\\\"));\\n sigs_[15] = bytes4(keccak256(\\\"revenueExchangePrice()\\\"));\\n sigs_[16] = bytes4(keccak256(\\\"isRebalancer(address)\\\"));\\n sigs_[17] = bytes4(keccak256(\\\"maxRiskRatio(uint8)\\\"));\\n sigs_[18] = bytes4(keccak256(\\\"aggrMaxVaultRatio()\\\"));\\n sigs_[19] = bytes4(keccak256(\\\"withdrawFeeAbsoluteMin()\\\"));\\n sigs_[20] = bytes4(keccak256(\\\"withdrawalFeePercentage()\\\"));\\n sigs_[21] = bytes4(keccak256(\\\"revenueFeePercentage()\\\"));\\n sigs_[22] = bytes4(keccak256(\\\"revenue()\\\"));\\n sigs_[23] = bytes4(keccak256(\\\"treasury()\\\"));\\n sigs_[24] = bytes4(keccak256(\\\"borrowBalanceMorphoAaveV3(address)\\\"));\\n sigs_[25] = bytes4(keccak256(\\\"collateralBalanceMorphoAaveV3(address)\\\"));\\n sigs_[26] = bytes4(keccak256(\\\"queuedWithdrawStEth()\\\"));\\n sigs_[27] = bytes4(keccak256(\\\"readFromStorage(bytes32)\\\"));\\n }\\n\\n function adminSigs() public pure returns (bytes4[] memory sigs_) {\\n sigs_ = new bytes4[](10);\\n sigs_[0] = bytes4(keccak256(\\\"changeVaultStatus(uint8)\\\"));\\n sigs_[1] = bytes4(keccak256(\\\"reduceAggrMaxVaultRatio(uint256)\\\"));\\n sigs_[2] = bytes4(keccak256(\\\"reduceMaxRiskRatio(uint8[],uint256[])\\\"));\\n sigs_[3] = bytes4(keccak256(\\\"updateAggrMaxVaultRatio(uint256)\\\"));\\n sigs_[4] = bytes4(keccak256(\\\"updateFees(uint256,uint256,uint256)\\\"));\\n sigs_[5] = bytes4(\\n keccak256(\\\"updateLeverageMaxUnitAmountLimit(uint256)\\\")\\n );\\n sigs_[6] = bytes4(keccak256(\\\"updateMaxRiskRatio(uint8[],uint256[])\\\"));\\n sigs_[7] = bytes4(keccak256(\\\"updateRebalancer(address,bool)\\\"));\\n sigs_[8] = bytes4(keccak256(\\\"updateSecondaryAuth(address)\\\"));\\n sigs_[9] = bytes4(keccak256(\\\"updateTreasury(address)\\\"));\\n }\\n\\n function leverageSigs() public pure returns (bytes4[] memory sigs_) {\\n sigs_ = new bytes4[](1);\\n sigs_[0] = bytes4(\\n keccak256(\\n \\\"leverage(uint8,uint256,uint256,uint256,address[],uint256[],uint256,uint256,bytes)\\\"\\n )\\n );\\n }\\n\\n function rebalancerSigs() public pure returns (bytes4[] memory sigs_) {\\n sigs_ = new bytes4[](6);\\n sigs_[0] = bytes4(keccak256(\\\"collectRevenue(uint256)\\\"));\\n sigs_[1] = bytes4(keccak256(\\\"fillVaultAvailability(uint8,uint256)\\\"));\\n sigs_[2] = bytes4(keccak256(\\\"sweepEthToSteth()\\\"));\\n sigs_[3] = bytes4(keccak256(\\\"sweepWethToSteth()\\\"));\\n sigs_[4] = bytes4(keccak256(\\\"updateExchangePrice()\\\"));\\n sigs_[5] = bytes4(keccak256(\\\"vaultToProtocolDeposit(uint8,uint256)\\\"));\\n }\\n\\n function refinanceSigs() public pure returns (bytes4[] memory sigs_) {\\n sigs_ = new bytes4[](1);\\n sigs_[0] = bytes4(\\n keccak256(\\\"refinance(uint8,uint8,uint256,uint256,uint256,uint256)\\\")\\n );\\n }\\n\\n function dsaSigs() public pure returns (bytes4[] memory sigs_) {\\n sigs_ = new bytes4[](2);\\n sigs_[0] = bytes4(keccak256(\\\"addDSAAuth(address)\\\"));\\n sigs_[1] = bytes4(keccak256(\\\"spell(address,bytes,uint256,uint256)\\\"));\\n }\\n\\n function withdrawalsSigs() public pure returns (bytes4[] memory sigs_) {\\n sigs_ = new bytes4[](4);\\n // new functions\\n sigs_[0] = bytes4(\\n keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\")\\n );\\n sigs_[1] = bytes4(keccak256(\\\"queueEthWithdrawal(uint256,uint8)\\\"));\\n sigs_[2] = bytes4(keccak256(\\\"paybackDebt(uint8)\\\"));\\n sigs_[3] = bytes4(keccak256(\\\"claimEthWithdrawal(uint256,uint8)\\\"));\\n }\\n}\\n\",\"versionPragma\":\"^0.7.0\"}}}","address":"0x2cc68Ecd808e6E2D90Bdad4b115d831b4a31Df81","bytecode":"0x60c06040527f2386dc45added673317ef068992f19421b481f4c00000000000000000000000060805234801561003457600080fd5b5030606081811b60a052608051901c90612cdf61006b6000398061109152806112a6525080610e795280610fe25250612cdf6000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80636dc0ae22116100a2578063bffa7f0f11610071578063bffa7f0f146101ad578063c5ee3377146101b5578063cc025f7c146101bd578063cfbaccd6146101c5578063fed33c5a146101cd5761010b565b80636dc0ae22146101825780637aadef8b1461018a578063aa98df3914610192578063af542f0a146101a55761010b565b806358f46af8116100de57806358f46af814610160578063614619541461016857806361df4e601461017257806366760d7d1461017a5761010b565b80630680f417146101105780630bc9136e1461012e5780634c1da300146101435780635358875214610158575b600080fd5b6101186101d5565b6040516101259190612a63565b60405180910390f35b6101366101e7565b6040516101259190612bf7565b61014b6101ec565b6040516101259190612b83565b61014b610acb565b61014b610c0c565b610170610c5c565b005b61014b610c7e565b610170610c7c565b610118610e5f565b610118610e77565b6101706101a0366004612859565b610e9b565b61014b61119e565b61011861123c565b61014b611254565b6101186112a4565b61014b6112c8565b61014b6115eb565b600080516020612c6683398151915281565b600881565b60408051601c8082526103a0820190925260609160208201610380803683370190505090507fdd62ed3e90e97b3d417db9c0c7522647811bafca5afc6694f143588d255fdfb48160008151811061023f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f095ea7b334ae44009aa867bfb386f5c3b4b443ac6f0ee573fa91c4608fbadfba8160018151811061028f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f70a08231b98ef4ca268c9cc3f6b4590e4bfec28280db06bb5d45e689f2a360be816002815181106102df57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fa457c2d77307f80ff2f3ac810ec99eb18ae2cffee13b29c90c9324546e374be58160038151811061032f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f39509351d3325647dde3fdd3c8b249adfe89ef4f16d76d83768e6df7a5cd81d68160048151811061037f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f06fdde0383f15d582d1a74511486c9ddf862a882fb7904b3d9fe9b8b8e58a796816005815181106103cf57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f95d89b41e2f5f391a79ec54e9d87c79d6e777c63e32c28da95b4e9e4a79250ec8160068151811061041f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f18160ddd7f15c72528c2f94fd8dfe3c8d5aa26e2c50c7d81f4bc7bee8d4b79328160078151811061046f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fa9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b816008815181106104bf57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f23b872dd7302113369cda2901243429419bec145408fa8b352b3dd92b66c680b8160098151811061050f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f38d52e0f1dbe7a70d1f1bbce52487d111fd5a226368cd8ae0e1fc641c029913981600a8151811061055f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f07a2d13addb87fe4b871c7a7ed785ea40eb373aa4328e5835df32153f89e2be781600b815181106105af57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fc6e6f5920ab9d3ed18e775f95f68b651e74148ef95e22e169f51deec917a735781600c815181106105ff57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f313ce567add4d438edf58b94ff345d7d38c45b17dfc0f947988d7819dca364f981600d8151811061064f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f402d267d68336aa646ef8ec29881846fe65b505496b0e3c0d66c3c71ebca0b9d81600e8151811061069f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fc63d75b6db33f8f33f081cb1034d0189537c4967e609cbdbd35a6ac96a38dbce81600f815181106106ef57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fd905777e6188a52d95537f77f9293d7c55ab6da19483be4a797af4b2329d60788160108151811061073f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fce96cb771ee0ee5438eec17718897557e7db15d685a5c83b309cbd37b191b8c48160118151811061078f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fef8b30f73f706809e695608f776076874a713cf88edd86595a08e925f20c217f816012815181106107df57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fb3d7f6b9638bbc33e68026f247be37f99ef5e7a0a876c11b709f75b175ec170d8160138151811061082f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f4cdad506b0d2802827e85739d7f82f09a428af7a9aa4806240ca073483c7fa7b8160148151811061087f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f0a28a477d2fbe6a0242a8363413ce82b248f4001016791c1a6be68e82529ff3e816015815181106108cf57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f6e553f653991036c188afcef45e14f9ecb45269ff9c675358bbb3a2eeb78e03b8160168151811061091f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fe464e06120c3cb0857ac8765e08803a824be390d7efd05bc6914954a4206946a8160178151811061096f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f94bf804d99f2e506274f8f54327419cf422bd9efa05b9d7afe19d8049dcab16d816018815181106109bf57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fba087652ef750b77b3f3b86ecd8aac56de04fbc0d6751abdd0992cabce37905481601981518110610a0f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f01e1d114555339877359e7bf87ceaa25576f6f649af8416cb9480f56ce6774f081601a81518110610a5f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fb460af94a08911df9ce375fb2a190ee15b3a9dfdda8ede7986fb72478f04266181601b81518110610aaf57fe5b6001600160e01b03199092166020928302919091019091015290565b60408051600480825260a08201909252606091602082016080803683370190505090507f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f81600081518110610b1c57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507ff19586264e0fa505b806602be6623c2b4a5a2cd16fc3ffdced241f4dcfe4ea9e81600181518110610b6c57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f05e3b28207a8c944c4170e2b0569d4dbc2e9d800973f9b87a4250eb41de54b1a81600281518110610bbc57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f9b47a13a1e03c1e6a9d98f69e668da9fe74c9fcaf9adf62f6f218562444f79b681600381518110610aaf57fe5b604080516001808252818301909252606091602080830190803683370190505090507febd0c4efaea65976276e08b8962803ed77938c05cbefda5e053c6646c44a503381600081518110610aaf57fe5b610c64611eae565b610c6c6121f1565b610c746125fe565b610c7c612643565b565b60408051600680825260e082019092526060916020820160c0803683370190505090507fbadfd3a7bec1525c4d28025f5d7de98e4d2478c131186eb79d41a6eb4a40735981600081518110610ccf57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f3352040e9d7f58aa41cd3d67df357866ff5fe86d9fcdfbf8fbbbe0d6f37d3a9f81600181518110610d1f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f097c996b8bec464e013ce6ef1887671e26e5f98a5d766867732f4dbaa7d87b9381600281518110610d6f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f206a7df65b905917b9c6e9c60eeb9e70813181f086bc3d6572f4a7357e05d3f481600381518110610dbf57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f3bfaa7e3f5bd314b0ce73b32f67cd7775ec6764d7388029cb5ab04677ba5a4ad81600481518110610e0f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f706fd5aee5e823d5a31889773fe36a19cae3b83a7caf39012896a15d84aa920481600581518110610aaf57fe5b730204cd037b2ec03605cfdfe482d8e257c765fa1b81565b7f000000000000000000000000000000000000000000000000000000000000000081565b3373a45f7bd6a5ff45d31aace6bcd3d426d9328cea0114610ed75760405162461bcd60e51b8152600401610ece90612c00565b60405180910390fd5b604080516001808252818301909252606090826020808301908036833701905050905060608267ffffffffffffffff81118015610f1357600080fd5b50604051908082528060200260200182016040528015610f3d578160200160208202803683370190505b50905060608367ffffffffffffffff81118015610f5957600080fd5b50604051908082528060200260200182016040528015610f8d57816020015b6060815260200190600190039081610f785790505b50905060608467ffffffffffffffff81118015610fa957600080fd5b50604051908082528060200260200182016040528015610fdd57816020015b6060815260200190600190039081610fc85790505b5090507f00000000000000000000000000000000000000000000000000000000000000008460008151811061100e57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060008360008151811061103d57fe5b602002602001018181525050604051806060016040528060248152602001612c86602491398260008151811061106f57fe5b602090810291909101810191909152604080516000815291820181526110b8917f0000000000000000000000000000000000000000000000000000000000000000918101612aa3565b604051602081830303815290604052816000815181106110d457fe5b6020908102919091010152604051636d4ab48d60e11b8152600090730204cd037b2ec03605cfdfe482d8e257c765fa1b9063da95691a906111219088908890889088908e90600401612ae4565b602060405180830381600087803b15801561113b57600080fd5b505af115801561114f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117391906128ee565b9050600881146111955760405162461bcd60e51b8152600401610ece90612c37565b50505050505050565b60408051600280825260608083018452926020830190803683370190505090507f590ee3468a5dcea35e49010d53d81da48877beb0388090790c2d25525a20f58c816000815181106111ec57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f15ff627d9b94fff1b3f5549c6a6a8dfd8845cad242f21370f6b8cfe4ad51138881600181518110610aaf57fe5b73a45f7bd6a5ff45d31aace6bcd3d426d9328cea0181565b604080516001808252818301909252606091602080830190803683370190505090507f1c7697e5a86430ab636204bfc9d6ec9be638b36571707538832303ccbc687be281600081518110610aaf57fe5b7f000000000000000000000000000000000000000000000000000000000000000081565b60408051600a808252610160820190925260609160208201610140803683370190505090507f9febd9c07f3707d899509111a2efd8290abaf445f54988cd1b878fc6d77a66738160008151811061131b57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f1d1583b411fc6aa10102e27f9851f6d444f630ee36ac707bf12b61f8b0668c678160018151811061136b57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f032e9afcda97f34b95ef12524e1829b96e2239eb8ddfcaf8f2729c027905776f816002815181106113bb57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f7dc7b239ccebd9865b8024053ff540c43ecda6b71f01717e0dc15472a96ede698160038151811061140b57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f22429085b075d08703ec913b1a03b6414be7df5c95bc715d3b2f800ba49bccd58160048151811061145b57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f300dd069d57a72c51e8c45fcdfff70ba290c6d84103b3d33da08818a9573b5e2816005815181106114ab57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f3d639d98be931fae7414ca28285a58e59d8e30067db09c3fc1d39a559c0709c1816006815181106114fb57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f0de308366aef51c362dcaa9a7a807d4fc35012403a9b2539ea45edd9fc6a14528160078151811061154b57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f291c8e7ee30a9adf44f6504ba9ab3711d3b56a233250ef9468e118610d0796558160088151811061159b57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f7f51bb1f11ad657a6f45162b0e92ffc0979a29385541f3dcf787a885b74645e981600981518110610aaf57fe5b60408051601c8082526103a0820190925260609160208201610380803683370190505090507ff97ecbba7decede488b70cc73fae561da33e7e28d564d822acccc49d0e5354768160008151811061163e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f27bfca066ae8dc5d68a64941b872c745e618ab68cbb98bb88fba13e05e8ede1d8160018151811061168e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fa6474400951d5dd295bcf02eedfd251138159721daee00629af064a2521c6089816002815181106116de57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507ff58ab65bb2d344c9399a63e23de39fb869f8c0e81d66cb5e410be12d75e260f28160038151811061172e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fc2c2e2d0eed86401885dddc943dee07725d02cd7a0c23f0e164cc53fd47bf5408160048151811061177e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f40b1fd85fbdf7a576b1a1a55d1a5c6a2c7801a1273bf97ac323704bce49a118f816005815181106117ce57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fbbc6f37e20e785c1c209d5509c8cf0c776df283485eea15b2a1144aaf6de703b8160068151811061181e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507ff34aa3caf4a8f27dd0833a10c682dcf624bc1d9e6344b1823345ce8e89dd6f3e8160078151811061186e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f3f6246f58c71b836e68e3a6f5cfe0c603113a0fb3709a380c0745c18811596c9816008815181106118be57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f08bb5fb02598b6e3390dc80934ef897583474d6b64559e24d69feb43a214f9788160098151811061190e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f29c23e4a0e5bb3743de14222ef6f57297a1274c0c422bfaf355c29669b827ad781600a8151811061195e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fef5c2d99b16d0b71bbe9ec69061d5c2b8f1be74c4dac1dda59b9a844f2f117ca81600b815181106119ae57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507faa483acafee86e7ff55fd4794d9f0a1062bd79380bbd956610ac68a7240ac7af81600c815181106119fe57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f32056f9d076df2d66076ef48aa9d6e9a27c442780ae8bee62ff0c1504380522881600d81518110611a4e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f9e65741e9316d280a1339dcac56c49fcbe06bef300254aa652f923ed841e820e81600e81518110611a9e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f98e1862c62cdd13125fb6adcea743cc8be22fccbca6b0ea745701fdbe3cda67281600f81518110611aee57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f467c9effb4de841a4d80e6b13cea1f0f1370b19dd5e4b41800634efa0463c37e81601081518110611b3e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fc0e48831c91f2181a8bab0f569466850b829c664c95bbfc0256a16c91629299a81601181518110611b8e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f7b63f4be985f98591a1da2bb171e48f1524590ba8229ae0a132c57e5549626c381601281518110611bde57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507ff104d7d4b53fe5d8d7794d45bc2c5d12d9b3c4d44ece932b3db4940f0889805f81601381518110611c2e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f78922c8f82520c5b21f3cdf881cdb8ab8dbe60c59fa7da98e6b20fd69a2a255181601481518110611c7e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f3c057964cd211cda155fad752b53587c7d0cb9b46fb28b4fcf023a3001e2db6881601581518110611cce57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f3e9491a2f0a060026591054f30b971fa5a8bf3d6664c92b212b357957ead4cca81601681518110611d1e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f61d027b30ea0954414618cb8201bc912d75d6474f7f913dfdc4b5172d13bee5b81601781518110611d6e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f4c06ef30d51f609e9f1d1c779fc2b632d1673454eb28ca2fb3896dc6d61f67d881601881518110611dbe57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f7dc3e8324dea3259e637c1b274d55bd3449c553774a385836e183fb792a9fce981601981518110611e0e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f2203c6cc4d732448b10b6b674606f32eecb237d773e09049bda66a853505c6f081601a81518110611e5e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fb5c736e4b75365911fe27b3300139e6dc4188bed4564c8c6be46f70877b40aeb81601b81518110610aaf57fe5b60405163110bad1960e11b8152600080516020612c66833981519152906322175a3290611ef39073ff93c10fb34f7069071d0679c45ed77a98f37f2190600401612a63565b600060405180830381600087803b158015611f0d57600080fd5b505af1158015611f21573d6000803e3d6000fd5b505060405163110bad1960e11b8152600080516020612c6683398151915292506322175a329150611f6a907306feaa505193e987b12f161f1db73b1d4d60400190600401612a63565b600060405180830381600087803b158015611f8457600080fd5b505af1158015611f98573d6000803e3d6000fd5b505060405163110bad1960e11b8152600080516020612c6683398151915292506322175a329150611fe19073a18519a6bb1282954e933da0a775924e4cce601990600401612a63565b600060405180830381600087803b158015611ffb57600080fd5b505af115801561200f573d6000803e3d6000fd5b505060405163110bad1960e11b8152600080516020612c6683398151915292506322175a3291506120589073c6639ce123d779fe6ea545b70cbdc1dca421740d90600401612a63565b600060405180830381600087803b15801561207257600080fd5b505af1158015612086573d6000803e3d6000fd5b505060405163110bad1960e11b8152600080516020612c6683398151915292506322175a3291506120cf9073390936658cb9b73ca75c6c02d5ef88b958d3824190600401612a63565b600060405180830381600087803b1580156120e957600080fd5b505af11580156120fd573d6000803e3d6000fd5b505060405163110bad1960e11b8152600080516020612c6683398151915292506322175a3291506121469073e38d5938d6d75cef2c3fc63dc4ab32cd103e10df90600401612a63565b600060405180830381600087803b15801561216057600080fd5b505af1158015612174573d6000803e3d6000fd5b505060405163110bad1960e11b8152600080516020612c6683398151915292506322175a3291506121bd9073bd45dff3320b0d832c61fb41489fdd3a1b96006790600401612a63565b600060405180830381600087803b1580156121d757600080fd5b505af11580156121eb573d6000803e3d6000fd5b50505050565b600080516020612c6683398151915263f0c01b42737ee8b5c11b578dd1e8c02d641508a305281bd1736122226101ec565b6040518363ffffffff1660e01b815260040161223f929190612a77565b600060405180830381600087803b15801561225957600080fd5b505af115801561226d573d6000803e3d6000fd5b50505050600080516020612c668339815191526001600160a01b031663f0c01b4273645b137aca041b85c057a4a396086789cfd990416122ab6115eb565b6040518363ffffffff1660e01b81526004016122c8929190612a77565b600060405180830381600087803b1580156122e257600080fd5b505af11580156122f6573d6000803e3d6000fd5b50505050600080516020612c668339815191526001600160a01b031663f0c01b4273a7dc9540f00358a7ca46780de2fdebd7f673c1276123346112c8565b6040518363ffffffff1660e01b8152600401612351929190612a77565b600060405180830381600087803b15801561236b57600080fd5b505af115801561237f573d6000803e3d6000fd5b50505050600080516020612c668339815191526001600160a01b031663f0c01b42735b94f032799cc36ffd3e8ca9bcea2ba5af40d43e6123bd610c0c565b6040518363ffffffff1660e01b81526004016123da929190612a77565b600060405180830381600087803b1580156123f457600080fd5b505af1158015612408573d6000803e3d6000fd5b50505050600080516020612c668339815191526001600160a01b031663f0c01b4273871176c000603665ce1133c0aac783b79257e9c6612446610c7e565b6040518363ffffffff1660e01b8152600401612463929190612a77565b600060405180830381600087803b15801561247d57600080fd5b505af1158015612491573d6000803e3d6000fd5b50505050600080516020612c668339815191526001600160a01b031663f0c01b42734e05681632e1401a89335edab3e36612ae8e1d1e6124cf611254565b6040518363ffffffff1660e01b81526004016124ec929190612a77565b600060405180830381600087803b15801561250657600080fd5b505af115801561251a573d6000803e3d6000fd5b50505050600080516020612c668339815191526001600160a01b031663f0c01b4273c30b9d5b582c00c6bf2b7b274aaa7cc06f1420bd61255861119e565b6040518363ffffffff1660e01b8152600401612575929190612a77565b600060405180830381600087803b15801561258f57600080fd5b505af11580156125a3573d6000803e3d6000fd5b50505050600080516020612c668339815191526001600160a01b031663f0c01b42736a64a3e0af38279ac7455c85b2c683f5621ce2e76125e1610acb565b6040518363ffffffff1660e01b81526004016121bd929190612a77565b60405163c39aa07d60e01b8152600080516020612c668339815191529063c39aa07d906121bd90733ac94ba5465bf3429fe237468eaba5aa20072d6190600401612a63565b604051637dc7b23960e01b8152600080516020612c6683398151915290637dc7b2399061267790620cbdb890600401612bf7565b600060405180830381600087803b15801561269157600080fd5b505af11580156126a5573d6000803e3d6000fd5b505060408051600480825260a0820190925260609350915060208201608080368337505060408051600480825260a0820190925292935060609291506020820160808036833701905050905060078260008151811061270057fe5b602002602001019060ff16908160ff1681525050620d94908160008151811061272557fe5b60200260200101818152505060028260018151811061274057fe5b602002602001019060ff16908160ff1681525050620de2b08160018151811061276557fe5b60200260200101818152505060068260028151811061278057fe5b602002602001019060ff16908160ff1681525050620d9490816002815181106127a557fe5b6020026020010181815250506008826003815181106127c057fe5b602002602001019060ff16908160ff1681525050620de2b0816003815181106127e557fe5b60209081029190910101526040516307ac73b360e31b8152600080516020612c6683398151915290633d639d98906128239085908590600401612b9d565b600060405180830381600087803b15801561283d57600080fd5b505af1158015612851573d6000803e3d6000fd5b505050505050565b6000602080838503121561286b578182fd5b823567ffffffffffffffff80821115612882578384fd5b818501915085601f830112612895578384fd5b8135818111156128a157fe5b604051601f8201601f19168101850183811182821017156128be57fe5b60405281815283820185018810156128d4578586fd5b818585018683013790810190930193909352509392505050565b6000602082840312156128ff578081fd5b5051919050565b6000815180845260208085019450808401835b8381101561293f5781516001600160e01b03191687529582019590820190600101612919565b509495945050505050565b60008282518085526020808601955080818302840101818601855b8481101561299357601f19868403018952612981838351612a18565b98840198925090830190600101612965565b5090979650505050505050565b60008282518085526020808601955080818302840101818601855b8481101561299357601f198684030189526129d7838351612a18565b988401989250908301906001016129bb565b6000815180845260208085019450808401835b8381101561293f578151875295820195908201906001016129fc565b60008151808452815b81811015612a3d57602081850181015186830182015201612a21565b81811115612a4e5782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0383168152604060208201819052600090612a9b90830184612906565b949350505050565b600060018060a01b038416825260606020830152600960608301526865786563757465282960b81b608083015260a06040830152612a9b60a0830184612a18565b60a0808252865190820181905260009060209060c0840190828a01845b82811015612b265781516001600160a01b031684529284019290840190600101612b01565b50505083810382850152612b3a81896129e9565b9150508281036040840152612b4f81876129a0565b90508281036060840152612b63818661294a565b90508281036080840152612b778185612a18565b98975050505050505050565b600060208252612b966020830184612906565b9392505050565b604080825283519082018190526000906020906060840190828701845b82811015612bd957815160ff1684529284019290840190600101612bba565b50505083810382850152612bed81866129e9565b9695505050505050565b90815260200190565b60208082526017908201527f6d73672e73656e6465722d6e6f742d70726f706f736572000000000000000000604082015260600190565b60208082526014908201527350524f504f53414c5f49535f4e4f545f53414d4560601b60408201526060019056fe000000000000000000000000a0d3707c569ff8c87fa923d3823ec5d81c98be78657865637574655061796c6f616428616464726573732c737472696e672c627974657329a264697066735822122067f83f0afa71efea507844a6645d4d969fd8d050c545c7fbeb00f62a92ff10be64736f6c63430007030033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061010b5760003560e01c80636dc0ae22116100a2578063bffa7f0f11610071578063bffa7f0f146101ad578063c5ee3377146101b5578063cc025f7c146101bd578063cfbaccd6146101c5578063fed33c5a146101cd5761010b565b80636dc0ae22146101825780637aadef8b1461018a578063aa98df3914610192578063af542f0a146101a55761010b565b806358f46af8116100de57806358f46af814610160578063614619541461016857806361df4e601461017257806366760d7d1461017a5761010b565b80630680f417146101105780630bc9136e1461012e5780634c1da300146101435780635358875214610158575b600080fd5b6101186101d5565b6040516101259190612a63565b60405180910390f35b6101366101e7565b6040516101259190612bf7565b61014b6101ec565b6040516101259190612b83565b61014b610acb565b61014b610c0c565b610170610c5c565b005b61014b610c7e565b610170610c7c565b610118610e5f565b610118610e77565b6101706101a0366004612859565b610e9b565b61014b61119e565b61011861123c565b61014b611254565b6101186112a4565b61014b6112c8565b61014b6115eb565b600080516020612c6683398151915281565b600881565b60408051601c8082526103a0820190925260609160208201610380803683370190505090507fdd62ed3e90e97b3d417db9c0c7522647811bafca5afc6694f143588d255fdfb48160008151811061023f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f095ea7b334ae44009aa867bfb386f5c3b4b443ac6f0ee573fa91c4608fbadfba8160018151811061028f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f70a08231b98ef4ca268c9cc3f6b4590e4bfec28280db06bb5d45e689f2a360be816002815181106102df57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fa457c2d77307f80ff2f3ac810ec99eb18ae2cffee13b29c90c9324546e374be58160038151811061032f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f39509351d3325647dde3fdd3c8b249adfe89ef4f16d76d83768e6df7a5cd81d68160048151811061037f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f06fdde0383f15d582d1a74511486c9ddf862a882fb7904b3d9fe9b8b8e58a796816005815181106103cf57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f95d89b41e2f5f391a79ec54e9d87c79d6e777c63e32c28da95b4e9e4a79250ec8160068151811061041f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f18160ddd7f15c72528c2f94fd8dfe3c8d5aa26e2c50c7d81f4bc7bee8d4b79328160078151811061046f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fa9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b816008815181106104bf57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f23b872dd7302113369cda2901243429419bec145408fa8b352b3dd92b66c680b8160098151811061050f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f38d52e0f1dbe7a70d1f1bbce52487d111fd5a226368cd8ae0e1fc641c029913981600a8151811061055f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f07a2d13addb87fe4b871c7a7ed785ea40eb373aa4328e5835df32153f89e2be781600b815181106105af57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fc6e6f5920ab9d3ed18e775f95f68b651e74148ef95e22e169f51deec917a735781600c815181106105ff57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f313ce567add4d438edf58b94ff345d7d38c45b17dfc0f947988d7819dca364f981600d8151811061064f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f402d267d68336aa646ef8ec29881846fe65b505496b0e3c0d66c3c71ebca0b9d81600e8151811061069f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fc63d75b6db33f8f33f081cb1034d0189537c4967e609cbdbd35a6ac96a38dbce81600f815181106106ef57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fd905777e6188a52d95537f77f9293d7c55ab6da19483be4a797af4b2329d60788160108151811061073f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fce96cb771ee0ee5438eec17718897557e7db15d685a5c83b309cbd37b191b8c48160118151811061078f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fef8b30f73f706809e695608f776076874a713cf88edd86595a08e925f20c217f816012815181106107df57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fb3d7f6b9638bbc33e68026f247be37f99ef5e7a0a876c11b709f75b175ec170d8160138151811061082f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f4cdad506b0d2802827e85739d7f82f09a428af7a9aa4806240ca073483c7fa7b8160148151811061087f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f0a28a477d2fbe6a0242a8363413ce82b248f4001016791c1a6be68e82529ff3e816015815181106108cf57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f6e553f653991036c188afcef45e14f9ecb45269ff9c675358bbb3a2eeb78e03b8160168151811061091f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fe464e06120c3cb0857ac8765e08803a824be390d7efd05bc6914954a4206946a8160178151811061096f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f94bf804d99f2e506274f8f54327419cf422bd9efa05b9d7afe19d8049dcab16d816018815181106109bf57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fba087652ef750b77b3f3b86ecd8aac56de04fbc0d6751abdd0992cabce37905481601981518110610a0f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f01e1d114555339877359e7bf87ceaa25576f6f649af8416cb9480f56ce6774f081601a81518110610a5f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fb460af94a08911df9ce375fb2a190ee15b3a9dfdda8ede7986fb72478f04266181601b81518110610aaf57fe5b6001600160e01b03199092166020928302919091019091015290565b60408051600480825260a08201909252606091602082016080803683370190505090507f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f81600081518110610b1c57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507ff19586264e0fa505b806602be6623c2b4a5a2cd16fc3ffdced241f4dcfe4ea9e81600181518110610b6c57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f05e3b28207a8c944c4170e2b0569d4dbc2e9d800973f9b87a4250eb41de54b1a81600281518110610bbc57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f9b47a13a1e03c1e6a9d98f69e668da9fe74c9fcaf9adf62f6f218562444f79b681600381518110610aaf57fe5b604080516001808252818301909252606091602080830190803683370190505090507febd0c4efaea65976276e08b8962803ed77938c05cbefda5e053c6646c44a503381600081518110610aaf57fe5b610c64611eae565b610c6c6121f1565b610c746125fe565b610c7c612643565b565b60408051600680825260e082019092526060916020820160c0803683370190505090507fbadfd3a7bec1525c4d28025f5d7de98e4d2478c131186eb79d41a6eb4a40735981600081518110610ccf57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f3352040e9d7f58aa41cd3d67df357866ff5fe86d9fcdfbf8fbbbe0d6f37d3a9f81600181518110610d1f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f097c996b8bec464e013ce6ef1887671e26e5f98a5d766867732f4dbaa7d87b9381600281518110610d6f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f206a7df65b905917b9c6e9c60eeb9e70813181f086bc3d6572f4a7357e05d3f481600381518110610dbf57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f3bfaa7e3f5bd314b0ce73b32f67cd7775ec6764d7388029cb5ab04677ba5a4ad81600481518110610e0f57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f706fd5aee5e823d5a31889773fe36a19cae3b83a7caf39012896a15d84aa920481600581518110610aaf57fe5b730204cd037b2ec03605cfdfe482d8e257c765fa1b81565b7f000000000000000000000000000000000000000000000000000000000000000081565b3373a45f7bd6a5ff45d31aace6bcd3d426d9328cea0114610ed75760405162461bcd60e51b8152600401610ece90612c00565b60405180910390fd5b604080516001808252818301909252606090826020808301908036833701905050905060608267ffffffffffffffff81118015610f1357600080fd5b50604051908082528060200260200182016040528015610f3d578160200160208202803683370190505b50905060608367ffffffffffffffff81118015610f5957600080fd5b50604051908082528060200260200182016040528015610f8d57816020015b6060815260200190600190039081610f785790505b50905060608467ffffffffffffffff81118015610fa957600080fd5b50604051908082528060200260200182016040528015610fdd57816020015b6060815260200190600190039081610fc85790505b5090507f00000000000000000000000000000000000000000000000000000000000000008460008151811061100e57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060008360008151811061103d57fe5b602002602001018181525050604051806060016040528060248152602001612c86602491398260008151811061106f57fe5b602090810291909101810191909152604080516000815291820181526110b8917f0000000000000000000000000000000000000000000000000000000000000000918101612aa3565b604051602081830303815290604052816000815181106110d457fe5b6020908102919091010152604051636d4ab48d60e11b8152600090730204cd037b2ec03605cfdfe482d8e257c765fa1b9063da95691a906111219088908890889088908e90600401612ae4565b602060405180830381600087803b15801561113b57600080fd5b505af115801561114f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117391906128ee565b9050600881146111955760405162461bcd60e51b8152600401610ece90612c37565b50505050505050565b60408051600280825260608083018452926020830190803683370190505090507f590ee3468a5dcea35e49010d53d81da48877beb0388090790c2d25525a20f58c816000815181106111ec57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f15ff627d9b94fff1b3f5549c6a6a8dfd8845cad242f21370f6b8cfe4ad51138881600181518110610aaf57fe5b73a45f7bd6a5ff45d31aace6bcd3d426d9328cea0181565b604080516001808252818301909252606091602080830190803683370190505090507f1c7697e5a86430ab636204bfc9d6ec9be638b36571707538832303ccbc687be281600081518110610aaf57fe5b7f000000000000000000000000000000000000000000000000000000000000000081565b60408051600a808252610160820190925260609160208201610140803683370190505090507f9febd9c07f3707d899509111a2efd8290abaf445f54988cd1b878fc6d77a66738160008151811061131b57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f1d1583b411fc6aa10102e27f9851f6d444f630ee36ac707bf12b61f8b0668c678160018151811061136b57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f032e9afcda97f34b95ef12524e1829b96e2239eb8ddfcaf8f2729c027905776f816002815181106113bb57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f7dc7b239ccebd9865b8024053ff540c43ecda6b71f01717e0dc15472a96ede698160038151811061140b57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f22429085b075d08703ec913b1a03b6414be7df5c95bc715d3b2f800ba49bccd58160048151811061145b57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f300dd069d57a72c51e8c45fcdfff70ba290c6d84103b3d33da08818a9573b5e2816005815181106114ab57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f3d639d98be931fae7414ca28285a58e59d8e30067db09c3fc1d39a559c0709c1816006815181106114fb57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f0de308366aef51c362dcaa9a7a807d4fc35012403a9b2539ea45edd9fc6a14528160078151811061154b57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f291c8e7ee30a9adf44f6504ba9ab3711d3b56a233250ef9468e118610d0796558160088151811061159b57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f7f51bb1f11ad657a6f45162b0e92ffc0979a29385541f3dcf787a885b74645e981600981518110610aaf57fe5b60408051601c8082526103a0820190925260609160208201610380803683370190505090507ff97ecbba7decede488b70cc73fae561da33e7e28d564d822acccc49d0e5354768160008151811061163e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f27bfca066ae8dc5d68a64941b872c745e618ab68cbb98bb88fba13e05e8ede1d8160018151811061168e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fa6474400951d5dd295bcf02eedfd251138159721daee00629af064a2521c6089816002815181106116de57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507ff58ab65bb2d344c9399a63e23de39fb869f8c0e81d66cb5e410be12d75e260f28160038151811061172e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fc2c2e2d0eed86401885dddc943dee07725d02cd7a0c23f0e164cc53fd47bf5408160048151811061177e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f40b1fd85fbdf7a576b1a1a55d1a5c6a2c7801a1273bf97ac323704bce49a118f816005815181106117ce57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fbbc6f37e20e785c1c209d5509c8cf0c776df283485eea15b2a1144aaf6de703b8160068151811061181e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507ff34aa3caf4a8f27dd0833a10c682dcf624bc1d9e6344b1823345ce8e89dd6f3e8160078151811061186e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f3f6246f58c71b836e68e3a6f5cfe0c603113a0fb3709a380c0745c18811596c9816008815181106118be57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f08bb5fb02598b6e3390dc80934ef897583474d6b64559e24d69feb43a214f9788160098151811061190e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f29c23e4a0e5bb3743de14222ef6f57297a1274c0c422bfaf355c29669b827ad781600a8151811061195e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fef5c2d99b16d0b71bbe9ec69061d5c2b8f1be74c4dac1dda59b9a844f2f117ca81600b815181106119ae57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507faa483acafee86e7ff55fd4794d9f0a1062bd79380bbd956610ac68a7240ac7af81600c815181106119fe57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f32056f9d076df2d66076ef48aa9d6e9a27c442780ae8bee62ff0c1504380522881600d81518110611a4e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f9e65741e9316d280a1339dcac56c49fcbe06bef300254aa652f923ed841e820e81600e81518110611a9e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f98e1862c62cdd13125fb6adcea743cc8be22fccbca6b0ea745701fdbe3cda67281600f81518110611aee57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f467c9effb4de841a4d80e6b13cea1f0f1370b19dd5e4b41800634efa0463c37e81601081518110611b3e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fc0e48831c91f2181a8bab0f569466850b829c664c95bbfc0256a16c91629299a81601181518110611b8e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f7b63f4be985f98591a1da2bb171e48f1524590ba8229ae0a132c57e5549626c381601281518110611bde57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507ff104d7d4b53fe5d8d7794d45bc2c5d12d9b3c4d44ece932b3db4940f0889805f81601381518110611c2e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f78922c8f82520c5b21f3cdf881cdb8ab8dbe60c59fa7da98e6b20fd69a2a255181601481518110611c7e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f3c057964cd211cda155fad752b53587c7d0cb9b46fb28b4fcf023a3001e2db6881601581518110611cce57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f3e9491a2f0a060026591054f30b971fa5a8bf3d6664c92b212b357957ead4cca81601681518110611d1e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f61d027b30ea0954414618cb8201bc912d75d6474f7f913dfdc4b5172d13bee5b81601781518110611d6e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f4c06ef30d51f609e9f1d1c779fc2b632d1673454eb28ca2fb3896dc6d61f67d881601881518110611dbe57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f7dc3e8324dea3259e637c1b274d55bd3449c553774a385836e183fb792a9fce981601981518110611e0e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507f2203c6cc4d732448b10b6b674606f32eecb237d773e09049bda66a853505c6f081601a81518110611e5e57fe5b60200260200101906001600160e01b03191690816001600160e01b031916815250507fb5c736e4b75365911fe27b3300139e6dc4188bed4564c8c6be46f70877b40aeb81601b81518110610aaf57fe5b60405163110bad1960e11b8152600080516020612c66833981519152906322175a3290611ef39073ff93c10fb34f7069071d0679c45ed77a98f37f2190600401612a63565b600060405180830381600087803b158015611f0d57600080fd5b505af1158015611f21573d6000803e3d6000fd5b505060405163110bad1960e11b8152600080516020612c6683398151915292506322175a329150611f6a907306feaa505193e987b12f161f1db73b1d4d60400190600401612a63565b600060405180830381600087803b158015611f8457600080fd5b505af1158015611f98573d6000803e3d6000fd5b505060405163110bad1960e11b8152600080516020612c6683398151915292506322175a329150611fe19073a18519a6bb1282954e933da0a775924e4cce601990600401612a63565b600060405180830381600087803b158015611ffb57600080fd5b505af115801561200f573d6000803e3d6000fd5b505060405163110bad1960e11b8152600080516020612c6683398151915292506322175a3291506120589073c6639ce123d779fe6ea545b70cbdc1dca421740d90600401612a63565b600060405180830381600087803b15801561207257600080fd5b505af1158015612086573d6000803e3d6000fd5b505060405163110bad1960e11b8152600080516020612c6683398151915292506322175a3291506120cf9073390936658cb9b73ca75c6c02d5ef88b958d3824190600401612a63565b600060405180830381600087803b1580156120e957600080fd5b505af11580156120fd573d6000803e3d6000fd5b505060405163110bad1960e11b8152600080516020612c6683398151915292506322175a3291506121469073e38d5938d6d75cef2c3fc63dc4ab32cd103e10df90600401612a63565b600060405180830381600087803b15801561216057600080fd5b505af1158015612174573d6000803e3d6000fd5b505060405163110bad1960e11b8152600080516020612c6683398151915292506322175a3291506121bd9073bd45dff3320b0d832c61fb41489fdd3a1b96006790600401612a63565b600060405180830381600087803b1580156121d757600080fd5b505af11580156121eb573d6000803e3d6000fd5b50505050565b600080516020612c6683398151915263f0c01b42737ee8b5c11b578dd1e8c02d641508a305281bd1736122226101ec565b6040518363ffffffff1660e01b815260040161223f929190612a77565b600060405180830381600087803b15801561225957600080fd5b505af115801561226d573d6000803e3d6000fd5b50505050600080516020612c668339815191526001600160a01b031663f0c01b4273645b137aca041b85c057a4a396086789cfd990416122ab6115eb565b6040518363ffffffff1660e01b81526004016122c8929190612a77565b600060405180830381600087803b1580156122e257600080fd5b505af11580156122f6573d6000803e3d6000fd5b50505050600080516020612c668339815191526001600160a01b031663f0c01b4273a7dc9540f00358a7ca46780de2fdebd7f673c1276123346112c8565b6040518363ffffffff1660e01b8152600401612351929190612a77565b600060405180830381600087803b15801561236b57600080fd5b505af115801561237f573d6000803e3d6000fd5b50505050600080516020612c668339815191526001600160a01b031663f0c01b42735b94f032799cc36ffd3e8ca9bcea2ba5af40d43e6123bd610c0c565b6040518363ffffffff1660e01b81526004016123da929190612a77565b600060405180830381600087803b1580156123f457600080fd5b505af1158015612408573d6000803e3d6000fd5b50505050600080516020612c668339815191526001600160a01b031663f0c01b4273871176c000603665ce1133c0aac783b79257e9c6612446610c7e565b6040518363ffffffff1660e01b8152600401612463929190612a77565b600060405180830381600087803b15801561247d57600080fd5b505af1158015612491573d6000803e3d6000fd5b50505050600080516020612c668339815191526001600160a01b031663f0c01b42734e05681632e1401a89335edab3e36612ae8e1d1e6124cf611254565b6040518363ffffffff1660e01b81526004016124ec929190612a77565b600060405180830381600087803b15801561250657600080fd5b505af115801561251a573d6000803e3d6000fd5b50505050600080516020612c668339815191526001600160a01b031663f0c01b4273c30b9d5b582c00c6bf2b7b274aaa7cc06f1420bd61255861119e565b6040518363ffffffff1660e01b8152600401612575929190612a77565b600060405180830381600087803b15801561258f57600080fd5b505af11580156125a3573d6000803e3d6000fd5b50505050600080516020612c668339815191526001600160a01b031663f0c01b42736a64a3e0af38279ac7455c85b2c683f5621ce2e76125e1610acb565b6040518363ffffffff1660e01b81526004016121bd929190612a77565b60405163c39aa07d60e01b8152600080516020612c668339815191529063c39aa07d906121bd90733ac94ba5465bf3429fe237468eaba5aa20072d6190600401612a63565b604051637dc7b23960e01b8152600080516020612c6683398151915290637dc7b2399061267790620cbdb890600401612bf7565b600060405180830381600087803b15801561269157600080fd5b505af11580156126a5573d6000803e3d6000fd5b505060408051600480825260a0820190925260609350915060208201608080368337505060408051600480825260a0820190925292935060609291506020820160808036833701905050905060078260008151811061270057fe5b602002602001019060ff16908160ff1681525050620d94908160008151811061272557fe5b60200260200101818152505060028260018151811061274057fe5b602002602001019060ff16908160ff1681525050620de2b08160018151811061276557fe5b60200260200101818152505060068260028151811061278057fe5b602002602001019060ff16908160ff1681525050620d9490816002815181106127a557fe5b6020026020010181815250506008826003815181106127c057fe5b602002602001019060ff16908160ff1681525050620de2b0816003815181106127e557fe5b60209081029190910101526040516307ac73b360e31b8152600080516020612c6683398151915290633d639d98906128239085908590600401612b9d565b600060405180830381600087803b15801561283d57600080fd5b505af1158015612851573d6000803e3d6000fd5b505050505050565b6000602080838503121561286b578182fd5b823567ffffffffffffffff80821115612882578384fd5b818501915085601f830112612895578384fd5b8135818111156128a157fe5b604051601f8201601f19168101850183811182821017156128be57fe5b60405281815283820185018810156128d4578586fd5b818585018683013790810190930193909352509392505050565b6000602082840312156128ff578081fd5b5051919050565b6000815180845260208085019450808401835b8381101561293f5781516001600160e01b03191687529582019590820190600101612919565b509495945050505050565b60008282518085526020808601955080818302840101818601855b8481101561299357601f19868403018952612981838351612a18565b98840198925090830190600101612965565b5090979650505050505050565b60008282518085526020808601955080818302840101818601855b8481101561299357601f198684030189526129d7838351612a18565b988401989250908301906001016129bb565b6000815180845260208085019450808401835b8381101561293f578151875295820195908201906001016129fc565b60008151808452815b81811015612a3d57602081850181015186830182015201612a21565b81811115612a4e5782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0383168152604060208201819052600090612a9b90830184612906565b949350505050565b600060018060a01b038416825260606020830152600960608301526865786563757465282960b81b608083015260a06040830152612a9b60a0830184612a18565b60a0808252865190820181905260009060209060c0840190828a01845b82811015612b265781516001600160a01b031684529284019290840190600101612b01565b50505083810382850152612b3a81896129e9565b9150508281036040840152612b4f81876129a0565b90508281036060840152612b63818661294a565b90508281036080840152612b778185612a18565b98975050505050505050565b600060208252612b966020830184612906565b9392505050565b604080825283519082018190526000906020906060840190828701845b82811015612bd957815160ff1684529284019290840190600101612bba565b50505083810382850152612bed81866129e9565b9695505050505050565b90815260200190565b60208082526017908201527f6d73672e73656e6465722d6e6f742d70726f706f736572000000000000000000604082015260600190565b60208082526014908201527350524f504f53414c5f49535f4e4f545f53414d4560601b60408201526060019056fe000000000000000000000000a0d3707c569ff8c87fa923d3823ec5d81c98be78657865637574655061796c6f616428616464726573732c737472696e672c627974657329a264697066735822122067f83f0afa71efea507844a6645d4d969fd8d050c545c7fbeb00f62a92ff10be64736f6c63430007030033","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ADDRESS_THIS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GOVERNOR","outputs":[{"internalType":"contract IGovernorBravo","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LITE","outputs":[{"internalType":"contract ILite","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROPOSAL_ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROPOSER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TIMELOCK","outputs":[{"internalType":"contract ITimelock","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"adminSigs","outputs":[{"internalType":"bytes4[]","name":"sigs_","type":"bytes4[]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dsaSigs","outputs":[{"internalType":"bytes4[]","name":"sigs_","type":"bytes4[]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"leverageSigs","outputs":[{"internalType":"bytes4[]","name":"sigs_","type":"bytes4[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rebalancerSigs","outputs":[{"internalType":"bytes4[]","name":"sigs_","type":"bytes4[]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"refinanceSigs","outputs":[{"internalType":"bytes4[]","name":"sigs_","type":"bytes4[]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"userSigs","outputs":[{"internalType":"bytes4[]","name":"sigs_","type":"bytes4[]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"verifyProposal","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewSigs","outputs":[{"internalType":"bytes4[]","name":"sigs_","type":"bytes4[]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"withdrawalsSigs","outputs":[{"internalType":"bytes4[]","name":"sigs_","type":"bytes4[]"}],"stateMutability":"pure","type":"function"}]}