1 tx
26 calls
constructor
constructor()
functions
checkContractBalance
viewfunction checkContractBalance(address token) view returns (uint256)
checkTokenHasFees
viewfunction checkTokenHasFees(address token) view returns (bool)
diagnosePersonalVaultCheck
viewfunction diagnosePersonalVaultCheck(uint256 vaultId) view returns (address coreAddress, bool exists, address vaultOwner)
getProposalDetails
viewfunction getProposalDetails(uint256 proposalId) view returns (uint256 vaultId, address creator, uint8 proposalType, address sourceToken, address targetToken, uint256 amount, uint256 minAmountOut, uint8 status, bool hasFees, uint256 createdAt, uint256 executedAt)
getProposalRetrievalDetails
viewfunction getProposalRetrievalDetails(uint256 proposalId) view returns (bool tokensRetrieved, uint256 amountReceived)
owner
viewfunction owner() view returns (address)
tokenHasFees
viewfunction tokenHasFees(address) view returns (bool)
totalProposals
viewfunction totalProposals() view returns (uint256)
tradeProposals
viewfunction tradeProposals(uint256) view returns (uint256 vaultId, address creator, uint8 proposalType, address sourceToken, address targetToken, uint256 amount, uint256 minAmountOut, uint8 status, bool exists, bool tokensRetrieved, uint256 amountReceived, bool hasFees, uint256 createdAt, uint256 executedAt)
uniswapRouterAddress
viewfunction uniswapRouterAddress() view returns (address)
vaultecCoreAddress
viewfunction vaultecCoreAddress() view returns (address)
cancelProposal
nonpayablefunction cancelProposal(uint256 proposalId)
createTradeProposal
nonpayablefunction createTradeProposal(uint256 vaultId, uint8 proposalType, address sourceToken, address targetToken, uint256 amount, uint256 minAmountOut, bool hasFees)
editProposal
nonpayablefunction editProposal(uint256 proposalId, uint256 newAmount, uint256 newMinAmountOut, bool newHasFees)
emergencyRetrieveETH
nonpayablefunction emergencyRetrieveETH(uint256 vaultId)
emergencyRetrieveTokens
nonpayablefunction emergencyRetrieveTokens(address token, uint256 vaultId)
executeProposal
nonpayablefunction executeProposal(uint256 proposalId)
retrieveTokens
nonpayablefunction retrieveTokens(uint256 proposalId)
setTokenFeeStatus
nonpayablefunction setTokenFeeStatus(address token, bool hasFees)
setUniswapRouterAddress
nonpayablefunction setUniswapRouterAddress(address _uniswapRouterAddress)
setVaultecCoreAddress
nonpayablefunction setVaultecCoreAddress(address _vaultecCoreAddress)
events
CoreAddressUpdated
event CoreAddressUpdated(address indexed newAddress)
DebugLog
event DebugLog(string message, uint256 value)
ProposalCancelled
event ProposalCancelled(uint256 indexed proposalId, uint256 indexed vaultId, address indexed creator, uint256 timestamp)
ProposalCreated
event ProposalCreated(uint256 indexed proposalId, uint256 indexed vaultId, address indexed creator, uint8 proposalType, address sourceToken, address targetToken, uint256 amount, uint256 minAmountOut, bool hasFees, uint256 timestamp)
ProposalEdited
event ProposalEdited(uint256 indexed proposalId, uint256 indexed vaultId, address indexed creator, uint256 newAmount, uint256 newMinAmountOut, bool newHasFees, uint256 timestamp)
ProposalExecuted
event ProposalExecuted(uint256 indexed proposalId, uint256 indexed vaultId, uint256 amountOut, uint256 timestamp)
RouterAddressUpdated
event RouterAddressUpdated(address indexed newAddress)
SwapExecuted
event SwapExecuted(address sourceToken, address targetToken, uint256 amountIn, uint256 amountOut, uint256 timestamp)
TokenFeeStatusSet
event TokenFeeStatusSet(address indexed token, bool hasFees)
TokensRetrieved
event TokensRetrieved(uint256 indexed proposalId, address indexed token, uint256 amount, uint256 timestamp)
errors
No errors.
creation bytecode
0x6080604052348015600e575f5ffd5b505f80546001600160a01b031916331790556151e88061002d5f395ff3fe608060405260043610610120575f3560e01c806369d24b4d116100a4578063c1dd59fb1161006b578063c1dd59fb1461038b578063cc764a6e14610446578063db15d18514610465578063e0a8f6f514610484578063f75dbb07146104a3578063fbdd4dd3146104c257005b806369d24b4d146102de57806375b134f9146102fd5780638da5cb5b1461031c578063a73b2c011461033a578063a78d80fc1461036857005b80633b4d01a7116100e85780633b4d01a7146101da57806344915a40146102105780635a9756cd1461025757806364d3fcbd14610276578063698f61791461029557005b8063091d60641461012257806309f29d1b146101415780630d61b5191461016057806320ca3c7f1461017f578063343c4dc7146101bb575b005b34801561012d575f5ffd5b5061012061013c36600461486e565b6104f8565b34801561014c575f5ffd5b5061012061015b36600461486e565b6106ba565b34801561016b575f5ffd5b5061012061017a36600461486e565b610cb8565b34801561018a575f5ffd5b5060025461019e906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101c6575f5ffd5b506101206101d53660046148a9565b611c79565b3480156101e5575f5ffd5b506101f96101f436600461486e565b61227f565b6040516101b29b9a9998979695949392919061495a565b34801561021b575f5ffd5b5061024761022a3660046149d5565b6001600160a01b03165f9081526005602052604090205460ff1690565b60405190151581526020016101b2565b348015610262575f5ffd5b506101206102713660046149f0565b612395565b348015610281575f5ffd5b50610120610290366004614a1a565b6126a5565b3480156102a0575f5ffd5b506102b46102af36600461486e565b612908565b604080516001600160a01b03948516815292151560208401529216918101919091526060016101b2565b3480156102e9575f5ffd5b506101206102f8366004614a58565b612a13565b348015610308575f5ffd5b506101206103173660046149d5565b612af0565b348015610327575f5ffd5b505f5461019e906001600160a01b031681565b348015610345575f5ffd5b506102476103543660046149d5565b60056020525f908152604090205460ff1681565b348015610373575f5ffd5b5061037d60045481565b6040519081526020016101b2565b348015610396575f5ffd5b5061042c6103a536600461486e565b600360208190525f918252604090912080546001820154600283015493830154600484015460058501546006860154600787015460088801546009890154600a9099015497996001600160a01b038089169a60ff600160a01b909a048a169a928216999890911697858116956101008104821695620100009091048216949093911691908e565b6040516101b29e9d9c9b9a99989796959493929190614a8f565b348015610451575f5ffd5b5060015461019e906001600160a01b031681565b348015610470575f5ffd5b5061012061047f3660046149d5565b612b62565b34801561048f575f5ffd5b5061012061049e36600461486e565b612bd4565b3480156104ae575f5ffd5b5061037d6104bd3660046149d5565b612d6e565b3480156104cd575f5ffd5b506104e16104dc36600461486e565b612df0565b6040805192151583526020830191909152016101b2565b5f546001600160a01b0316331461052a5760405162461bcd60e51b815260040161052190614b29565b60405180910390fd5b600154604051637a8808bf60e01b8152600481018390526001600160a01b0390911690637a8808bf90602401602060405180830381865afa158015610571573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105959190614b6a565b6105b15760405162461bcd60e51b815260040161052190614b85565b47806105f45760405162461bcd60e51b81526020600482015260126024820152714e6f2045544820746f20726574726965766560701b6044820152606401610521565b60015460405163d48535f960e01b81526001600160a01b039091169063d48535f990839061062a9086905f908490600401614bbc565b5f604051808303818588803b158015610641575f5ffd5b505af1158015610653573d5f5f3e3d5ffd5b50505050505f5160206151935f395f51905f52816040516106ae919060408082526017908201527f456d657267656e637920455448207265747269657665640000000000000000006060820152602081019190915260800190565b60405180910390a15050565b5f818152600360205260409020600601548190610100900460ff166106f15760405162461bcd60e51b815260040161052190614bdb565b5f8281526003602052604090206001600682015460ff16600381111561071957610719614922565b146107665760405162461bcd60e51b815260206004820152601960248201527f50726f706f73616c206d757374206265206578656375746564000000000000006044820152606401610521565b600681015462010000900460ff16156107c15760405162461bcd60e51b815260206004820152601860248201527f546f6b656e7320616c72656164792072657472696576656400000000000000006044820152606401610521565b60018101546001600160a01b03163314806107db57503330145b61084d5760405162461bcd60e51b815260206004820152603860248201527f4f6e6c792070726f706f73616c2063726561746f72206f7220636f6e7472616360448201527f742063616e2063616c6c20746869732066756e6374696f6e00000000000000006064820152608401610521565b5f6001820154600160a01b900460ff16600281111561086e5761086e614922565b1480610899575060026001820154600160a01b900460ff16600281111561089757610897614922565b145b6108e55760405162461bcd60e51b815260206004820152601d60248201527f4e6f74206170706c696361626c6520666f7220455448206f75747075740000006044820152606401610521565b5f8160070154116109385760405162461bcd60e51b815260206004820152601c60248201527f4e6f20616d6f756e742072656365697665642066726f6d2073776170000000006044820152606401610521565b600381015460078201546040516370a0823160e01b81523060048201526001600160a01b03909216915f9083906370a0823190602401602060405180830381865afa158015610989573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ad9190614c12565b9050818110156109ff5760405162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e7420746f6b656e2062616c616e63650000000000006044820152606401610521565b60408051818152601e818301527f52657472696576696e6720746f6b656e7320666f722070726f706f73616c000060608201526020810188905290515f5160206151935f395f51905f529181900360800190a1604080518181526012818301527120b6b7bab73a103a37903a3930b739b332b960711b60608201526020810184905290515f5160206151935f395f51905f529181900360800190a160068401805462ff000019166201000017905560015460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490525f9185169063a9059cbb906044016020604051808303815f875af1158015610afe573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b229190614b6a565b905080610b415760405162461bcd60e51b815260040161052190614c29565b604080518181526021818301527f546f6b656e73207472616e7366657272656420746f205661756c746563436f726060820152606560f81b60808201526020810185905290515f5160206151935f395f51905f529181900360a00190a1600154855460405163d48535f960e01b81526001600160a01b039092169163d48535f991610bd29188908890600401614bbc565b5f604051808303815f87803b158015610be9575f5ffd5b505af1158015610bfb573d5f5f3e3d5ffd5b5050604080518681524260208201526001600160a01b03881693508a92507fad88a7c6541d54188be7140e0b031f3236b2923220dc4fe5944171a95a82db5e910160405180910390a360408051818152602f818301527f546f6b656e73207375636365737366756c6c792072657472696576656420616e60608201526e19081d985d5b1d081d5c19185d1959608a1b60808201526020810185905290515f5160206151935f395f51905f529181900360a00190a150505050505050565b5f818152600360205260409020600601548190610100900460ff16610cef5760405162461bcd60e51b815260040161052190614bdb565b5f8281526003602052604090206001015482906001600160a01b03163314610d295760405162461bcd60e51b815260040161052190614c6d565b5f83815260036020526040812090600682015460ff166003811115610d5057610d50614922565b14610d6d5760405162461bcd60e51b815260040161052190614cb9565b6001548154604051637a8808bf60e01b81526001600160a01b0390921691637a8808bf91610da19160040190815260200190565b602060405180830381865afa158015610dbc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610de09190614b6a565b610dfc5760405162461bcd60e51b815260040161052190614b85565b60068101805460ff1916600117905542600a8201556004810154604080518181526017818301527f5472616e7366657272696e672066726f6d207661756c7400000000000000000060608201526020810192909252515f5160206151935f395f51905f52916080908290030190a16001548154600283015460048085015460405163f4acf5d160e01b81525f956001600160a01b039081169563f4acf5d195610eaa95919492169201614bbc565b6020604051808303815f875af1158015610ec6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eea9190614b6a565b905080610f395760405162461bcd60e51b815260206004820152601a60248201527f5472616e736665722066726f6d207661756c74206661696c65640000000000006044820152606401610521565b6040805181815260138183015272151c985b9cd9995c881cdd58d8d95cdcd99d5b606a1b60608201526001602082015290515f5160206151935f395f51905f529181900360800190a15f806001840154600160a01b900460ff166002811115610fa457610fa4614922565b03611336575f5160206151935f395f51905f52836004015460405161100391906040808252601b908201527f457865637574696e672045544820746f20546f6b656e207377617000000000006060820152602081019190915260800190565b60405180910390a182600401544710156110695760405162461bcd60e51b815260206004820152602160248201527f496e73756666696369656e74204554482062616c616e636520666f72207377616044820152600760fc1b6064820152608401610521565b600883015460ff1680611097575060038301546001600160a01b03165f9081526005602052604090205460ff165b156110c6576003830154600484015460058501546110bf926001600160a01b03169190612e51565b90506110ec565b6003830154600484015460058501546110e9926001600160a01b0316919061334d565b90505b604080518181526018818301527f5377617020636f6d706c657465642c207265636569766564000000000000000060608201526020810183905290515f5160206151935f395f51905f529181900360800190a160038301546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015611187573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ab9190614c12565b9050818110156111fd5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2062616c616e636520636865636b206661696c65640000000000006044820152606401610521565b6040805181815260168183015275151bdad95b8818985b185b98d9481d995c9a599a595960521b60608201526020810183905290515f5160206151935f395f51905f529181900360800190a16002840154600385015460048601546040517f28c738dbec11a1bed94ba127a3712d54bcd39cf4ae95b6ebd671aaf10fd0287b93611299936001600160a01b039182169391169187904290614ce9565b60405180910390a183546040805184815242602082015289917fd31188695e1c2a2d02b755e14fa986aca41d391c337437b9159eaed8347e7f1c910160405180910390a3600784018290556040516309f29d1b60e01b81526004810188905230906309f29d1b906024015f604051808303815f87803b15801561131a575f5ffd5b505af115801561132c573d5f5f3e3d5ffd5b5050505050611c71565b600180840154600160a01b900460ff16600281111561135757611357614922565b036117ad575f5160206151935f395f51905f5283600401546040516113b691906040808252601b908201527f457865637574696e6720546f6b656e20746f20455448207377617000000000006060820152602081019190915260800190565b60405180910390a160028301546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015611406573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061142a9190614c12565b9050836004015481101561148c5760405162461bcd60e51b815260206004820152602360248201527f496e73756666696369656e7420746f6b656e2062616c616e636520666f72207360448201526207761760ec1b6064820152608401610521565b6040805181815260168183015275151bdad95b8818985b185b98d9481d995c9a599a595960521b60608201526020810183905290515f5160206151935f395f51905f529181900360800190a1600884015460ff1680611506575060028401546001600160a01b03165f9081526005602052604090205460ff165b156115355760028401546004850154600586015461152e926001600160a01b0316919061378f565b915061155b565b600284015460048501546005860154611558926001600160a01b03169190613b24565b91505b60408051818152601c818301527f5377617020636f6d706c657465642c207265636569766564204554480000000060608201526020810184905290515f5160206151935f395f51905f529181900360800190a1814710156115fe5760405162461bcd60e51b815260206004820152601860248201527f4554482062616c616e636520636865636b206661696c656400000000000000006044820152606401610521565b60408051818152601481830152731155120818985b185b98d9481d995c9a599a595960621b606082015247602082015290515f5160206151935f395f51905f529181900360800190a1600154845460405163d48535f960e01b81526001600160a01b039092169163d48535f991859161167e91905f908490600401614bbc565b5f604051808303818588803b158015611695575f5ffd5b505af11580156116a7573d5f5f3e3d5ffd5b50505050505f5160206151935f395f51905f52826040516116f8919060408082526013908201527215985d5b1d1958d0dbdc99481d5c19185d1959606a1b6060820152602081019190915260800190565b60405180910390a16002840154600385015460048601546040517f28c738dbec11a1bed94ba127a3712d54bcd39cf4ae95b6ebd671aaf10fd0287b93611750936001600160a01b039182169391169187904290614ce9565b60405180910390a183546040805184815242602082015289917fd31188695e1c2a2d02b755e14fa986aca41d391c337437b9159eaed8347e7f1c910160405180910390a35060068301805462ff0000191662010000179055611c71565b60026001840154600160a01b900460ff1660028111156117cf576117cf614922565b03611c71575f5160206151935f395f51905f52836004015460405161182e91906040808252601d908201527f457865637574696e6720546f6b656e20746f20546f6b656e20737761700000006060820152602081019190915260800190565b60405180910390a160028301546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa15801561187e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118a29190614c12565b9050836004015481101561190b5760405162461bcd60e51b815260206004820152602a60248201527f496e73756666696369656e7420736f7572636520746f6b656e2062616c616e6360448201526906520666f7220737761760b41b6064820152608401610521565b60408051818152601d818301527f536f7572636520746f6b656e2062616c616e636520766572696669656400000060608201526020810183905290515f5160206151935f395f51905f529181900360800190a1600884015460ff168061198c575060028401546001600160a01b03165f9081526005602052604090205460ff165b806119b2575060038401546001600160a01b03165f9081526005602052604090205460ff165b156119ea5760028401546003850154600486015460058701546119e3936001600160a01b0390811693169190613ee2565b9150611a19565b6002840154600385015460048601546005870154611a16936001600160a01b039081169316919061439b565b91505b60408051818152601f818301527f5377617020636f6d706c657465642c20726563656976656420746f6b656e730060608201526020810184905290515f5160206151935f395f51905f529181900360800190a160038401546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015611ab4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ad89190614c12565b905082811015611b345760405162461bcd60e51b815260206004820152602160248201527f54617267657420746f6b656e2062616c616e636520636865636b206661696c656044820152601960fa1b6064820152608401610521565b60408051818152601d818301527f54617267657420746f6b656e2062616c616e636520766572696669656400000060608201526020810183905290515f5160206151935f395f51905f529181900360800190a16002850154600386015460048701546040517f28c738dbec11a1bed94ba127a3712d54bcd39cf4ae95b6ebd671aaf10fd0287b93611bd7936001600160a01b039182169391169188904290614ce9565b60405180910390a18454604080518581524260208201528a917fd31188695e1c2a2d02b755e14fa986aca41d391c337437b9159eaed8347e7f1c910160405180910390a3600785018390556040516309f29d1b60e01b81526004810189905230906309f29d1b906024015f604051808303815f87803b158015611c58575f5ffd5b505af1158015611c6a573d5f5f3e3d5ffd5b5050505050505b505050505050565b60015460405163ccf98cb960e01b81526004810189905288915f916001600160a01b039091169063ccf98cb990602401602060405180830381865afa158015611cc4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ce89190614d1a565b90506001600160a01b0381163314611d525760405162461bcd60e51b815260206004820152602760248201527f4f6e6c79207661756c74206f776e65722063616e2063616c6c207468697320666044820152663ab731ba34b7b760c91b6064820152608401610521565b5f8511611da15760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610521565b600154604051637a8808bf60e01b8152600481018b90526001600160a01b0390911690637a8808bf90602401602060405180830381865afa158015611de8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e0c9190614b6a565b611e285760405162461bcd60e51b815260040161052190614b85565b5f886002811115611e3b57611e3b614922565b03611ef2576001600160a01b03871615611e975760405162461bcd60e51b815260206004820152601860248201527f536f7572636520746f6b656e206d7573742062652045544800000000000000006044820152606401610521565b6001600160a01b038616611eed5760405162461bcd60e51b815260206004820152601a60248201527f54617267657420746f6b656e2063616e6e6f74206265204554480000000000006044820152606401610521565b6120f2565b6001886002811115611f0657611f06614922565b03611fb8576001600160a01b038716611f615760405162461bcd60e51b815260206004820152601a60248201527f536f7572636520746f6b656e2063616e6e6f74206265204554480000000000006044820152606401610521565b6001600160a01b03861615611eed5760405162461bcd60e51b815260206004820152601860248201527f54617267657420746f6b656e206d7573742062652045544800000000000000006044820152606401610521565b6002886002811115611fcc57611fcc614922565b036120f2576001600160a01b0387166120275760405162461bcd60e51b815260206004820152601a60248201527f536f7572636520746f6b656e2063616e6e6f74206265204554480000000000006044820152606401610521565b6001600160a01b03861661207d5760405162461bcd60e51b815260206004820152601a60248201527f54617267657420746f6b656e2063616e6e6f74206265204554480000000000006044820152606401610521565b856001600160a01b0316876001600160a01b0316036120f25760405162461bcd60e51b815260206004820152602b60248201527f536f7572636520616e642074617267657420746f6b656e732063616e6e6f742060448201526a6265207468652073616d6560a81b6064820152608401610521565b6004545f8181526003602052604090208a8155600181018054336001600160a01b03198216811783558c92916001600160a81b03191660ff60a01b1990911617600160a01b83600281111561214957612149614922565b02179055506002810180546001600160a01b038b81166001600160a01b03199283168117909355600384018054918c1691909216179055600482018890556005820187905560068201805462ffffff191661010017905560088201805487151560ff199091161790554260098301555f600a830155158015906121ca575084155b156121ff576001600160a01b0389165f9081526005602052604090205460088201805460ff191660ff90921615159190911790555b60048054905f61220e83614d49565b9190505550336001600160a01b03168b837ffa74de09696706f350db38911d49c2c0922ffe347a8348d2c7557a01e62199f08d8d8d8d8d896008015f9054906101000a900460ff164260405161226a9796959493929190614d61565b60405180910390a45050505050505050505050565b5f5f5f5f5f5f5f5f5f5f5f8b60035f8281526020019081526020015f2060060160019054906101000a900460ff166122c95760405162461bcd60e51b815260040161052190614bdb565b5f60035f8f81526020019081526020015f209050805f0154816001015f9054906101000a90046001600160a01b03168260010160149054906101000a900460ff16836002015f9054906101000a90046001600160a01b0316846003015f9054906101000a90046001600160a01b031685600401548660050154876006015f9054906101000a900460ff16886008015f9054906101000a900460ff1689600901548a600a01549c509c509c509c509c509c509c509c509c509c509c50505091939597999b90929496989a50565b5f546001600160a01b031633146123be5760405162461bcd60e51b815260040161052190614b29565b6001600160a01b0382166124145760405162461bcd60e51b815260206004820181905260248201527f55736520656d657267656e6379526574726965766545544820666f72204554486044820152606401610521565b600154604051637a8808bf60e01b8152600481018390526001600160a01b0390911690637a8808bf90602401602060405180830381865afa15801561245b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061247f9190614b6a565b61249b5760405162461bcd60e51b815260040161052190614b85565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa1580156124df573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125039190614c12565b90505f811161254c5760405162461bcd60e51b81526020600482015260156024820152744e6f20746f6b656e7320746f20726574726965766560581b6044820152606401610521565b60015460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390525f9185169063a9059cbb906044016020604051808303815f875af115801561259d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125c19190614b6a565b9050806125e05760405162461bcd60e51b815260040161052190614c29565b60015460405163d48535f960e01b81526001600160a01b039091169063d48535f99061261490869088908790600401614bbc565b5f604051808303815f87803b15801561262b575f5ffd5b505af115801561263d573d5f5f3e3d5ffd5b505050505f5160206151935f395f51905f528260405161269791906040808252601a908201527f456d657267656e637920746f6b656e73207265747269657665640000000000006060820152602081019190915260800190565b60405180910390a150505050565b5f848152600360205260409020600601548490610100900460ff166126dc5760405162461bcd60e51b815260040161052190614bdb565b5f8581526003602052604090206001015485906001600160a01b031633146127165760405162461bcd60e51b815260040161052190614c6d565b5f86815260036020526040812090600682015460ff16600381111561273d5761273d614922565b1461275a5760405162461bcd60e51b815260040161052190614cb9565b5f86116127a95760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610521565b6001548154604051637a8808bf60e01b81526001600160a01b0390921691637a8808bf916127dd9160040190815260200190565b602060405180830381865afa1580156127f8573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061281c9190614b6a565b6128385760405162461bcd60e51b815260040161052190614b85565b600481018690556005810185905560088101805460ff191685151517905560028101546001600160a01b031615801590612870575083155b156128a95760028101546001600160a01b03165f9081526005602052604090205460088201805460ff191660ff90921615159190911790555b80546008820154604080518981526020810189905260ff909216151582820152426060830152513392918a917fe5e49af2f86e72f9ad6988bf90065b2389de3b9d6edc318c40eddad5d2d5a0409181900360800190a450505050505050565b6001546001600160a01b03165f808261292557505f905080612a0c565b600154604051637a8808bf60e01b8152600481018690526001600160a01b0390911690637a8808bf90602401602060405180830381865afa92505050801561298a575060408051601f3d908101601f1916820190925261298791810190614b6a565b60015b612996575f9150612999565b91505b60015460405163ccf98cb960e01b8152600481018690526001600160a01b039091169063ccf98cb990602401602060405180830381865afa9250505080156129fe575060408051601f3d908101601f191682019092526129fb91810190614d1a565b60015b612a0957505f612a0c565b90505b9193909250565b5f546001600160a01b03163314612a3c5760405162461bcd60e51b815260040161052190614b29565b6001600160a01b038216612a925760405162461bcd60e51b815260206004820152601d60248201527f43616e6e6f7420736574206665652073746174757320666f72204554480000006044820152606401610521565b6001600160a01b0382165f81815260056020908152604091829020805460ff191685151590811790915591519182527fd8925adb78e2d109e93f72f18cb27f0a4d511ffa6c909e77d19259d74f7998b5910160405180910390a25050565b5f546001600160a01b03163314612b195760405162461bcd60e51b815260040161052190614b29565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbca3f1aa8de84a3358f79c18643a1fd10e6f51209329ff16f756ccf1ae079540905f90a250565b5f546001600160a01b03163314612b8b5760405162461bcd60e51b815260040161052190614b29565b600280546001600160a01b0319166001600160a01b0383169081179091556040517fafec26814d7c5e0716cdb68343bdf123509d8bae8a1a877de1c3869411985c55905f90a250565b5f818152600360205260409020600601548190610100900460ff16612c0b5760405162461bcd60e51b815260040161052190614bdb565b5f8281526003602052604090206001015482906001600160a01b03163314612c455760405162461bcd60e51b815260040161052190614c6d565b5f83815260036020526040812090600682015460ff166003811115612c6c57612c6c614922565b14612c895760405162461bcd60e51b815260040161052190614cb9565b6001548154604051637a8808bf60e01b81526001600160a01b0390921691637a8808bf91612cbd9160040190815260200190565b602060405180830381865afa158015612cd8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cfc9190614b6a565b612d185760405162461bcd60e51b815260040161052190614b85565b60068101805460ff1916600317905542600a82018190558154604051918252339186907f06be4ead4ea97756d43d812225ff18ee2121165dadd175c7b98c33177075b6a49060200160405180910390a450505050565b5f6001600160a01b038216612d84575047919050565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015612dc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dea9190614c12565b92915050565b5f8181526003602052604081206006015481908390610100900460ff16612e295760405162461bcd60e51b815260040161052190614bdb565b5050505f90815260036020526040902060068101546007909101546201000090910460ff1691565b60028054604080518381526060810182525f936001600160a01b03909316928492602083019080368337019050509050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ebd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ee19190614d1a565b815f81518110612ef357612ef3614dc1565b60200260200101906001600160a01b031690816001600160a01b0316815250508581600181518110612f2757612f27614dc1565b6001600160a01b0392831660209182029290920101526040516370a0823160e01b81523060048201525f918816906370a0823190602401602060405180830381865afa158015612f79573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f9d9190614c12565b90505f5160206151935f395f51905f5281604051612fff919060408082526021908201527f496e697469616c20746f6b656e2062616c616e636520287769746820666565736060820152602960f81b6080820152602081019190915260a00190565b60405180910390a16040805181815260138183015272045544820616d6f756e7420666f72207377617606c1b60608201526020810188905290515f5160206151935f395f51905f529181900360800190a16001600160a01b03831663b6f9de958787853061306f42610708614dd5565b6040518663ffffffff1660e01b815260040161308e9493929190614e2b565b5f604051808303818588803b1580156130a5575f5ffd5b505af1935050505080156130b7575060015b6131fc576130c3614e5f565b806308c379a00361317a57506130d7614ea5565b806130e2575061317c565b604080518181526021918101919091527f5377617020776974682066656573206661696c6564207769746820726561736f6060820152603760f91b60808201525f60208201525f5160206151935f395f51905f529060a0015b60405180910390a1806040516020016131549190614f29565b60408051601f198184030181529082905262461bcd60e51b825261052191600401614f58565b505b604080518181526028918101919091527f5377617020776974682066656573206661696c6564207769746820756e6b6e6f6060820152673bb71032b93937b960c11b60808201525f60208201525f5160206151935f395f51905f529060a0015b60405180910390a160405162461bcd60e51b815260040161052190614f8d565b6040516370a0823160e01b81523060048201525f906001600160a01b038916906370a0823190602401602060405180830381865afa158015613240573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132649190614c12565b90505f6132718383614fc9565b90505f5160206151935f395f51905f52826040516132bf919060408082526013908201527246696e616c20746f6b656e2062616c616e636560681b6060820152602081019190915260800190565b60405180910390a160408051818152601b818301527f416d6f756e74207265636569766564202877697468206665657329000000000060608201526020810183905290515f5160206151935f395f51905f529181900360800190a18681101561333a5760405162461bcd60e51b815260040161052190614fdc565b94506133469350505050565b9392505050565b60028054604080518381526060810182525f936001600160a01b03909316928492602083019080368337019050509050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133b9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133dd9190614d1a565b815f815181106133ef576133ef614dc1565b60200260200101906001600160a01b031690816001600160a01b031681525050858160018151811061342357613423614dc1565b6001600160a01b0392831660209182029290920101526040516370a0823160e01b81523060048201525f918816906370a0823190602401602060405180830381865afa158015613475573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134999190614c12565b90505f5160206151935f395f51905f52816040516134e99190604080825260159082015274496e697469616c20746f6b656e2062616c616e636560581b6060820152602081019190915260800190565b60405180910390a16040805181815260138183015272045544820616d6f756e7420666f72207377617606c1b60608201526020810188905290515f5160206151935f395f51905f529181900360800190a16001600160a01b038316637ff36ab58787853061355942610708614dd5565b6040518663ffffffff1660e01b81526004016135789493929190614e2b565b5f6040518083038185885af1935050505080156135b657506040513d5f823e601f3d908101601f191682016040526135b39190810190615013565b60015b613652576135c2614e5f565b806308c379a00361363457506135d6614ea5565b806135e15750613636565b604080518181526017918101919091527f53776170206661696c6564207769746820726561736f6e00000000000000000060608201525f60208201525f5160206151935f395f51905f529060800161313b565b505b5f5160206151935f395f51905f525f6040516131dc91906150bf565b6040516370a0823160e01b81523060048201525f906001600160a01b038a16906370a0823190602401602060405180830381865afa158015613696573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136ba9190614c12565b90505f6136c78483614fc9565b90505f5160206151935f395f51905f5282604051613715919060408082526013908201527246696e616c20746f6b656e2062616c616e636560681b6060820152602081019190915260800190565b60405180910390a160408051818152600f818301526e105b5bdd5b9d081c9958d95a5d9959608a1b60608201526020810183905290515f5160206151935f395f51905f529181900360800190a1878110156137825760405162461bcd60e51b815260040161052190614fdc565b9550613346945050505050565b60028054604080518381526060810182525f936001600160a01b0390931692849260208301908036833701905050905085815f815181106137d2576137d2614dc1565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561382e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138529190614d1a565b8160018151811061386557613865614dc1565b6001600160a01b039290921660209283029190910182015260408051818152601f818301527f496e697469616c204554482062616c616e63652028776974682066656573290060608201524792810183905290515f5160206151935f395f51905f529181900360800190a160408051818152601581830152740546f6b656e20616d6f756e7420666f72207377617605c1b60608201526020810188905290515f5160206151935f395f51905f529181900360800190a160025460405163095ea7b360e01b81526001600160a01b039182166004820152602481018890529088169063095ea7b3906044016020604051808303815f875af115801561396b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061398f9190614b6a565b505f5160206151935f395f51905f52866040516139ac9190615109565b60405180910390a16001600160a01b03831663791ac947878785306139d342610708614dd5565b6040518663ffffffff1660e01b81526004016139f3959493929190615157565b5f604051808303815f87803b158015613a0a575f5ffd5b505af1925050508015613a1b575060015b613a27576130c3614e5f565b475f613a338383614fc9565b90505f5160206151935f395f51905f5282604051613a7f919060408082526011908201527046696e616c204554482062616c616e636560781b6060820152602081019190915260800190565b60405180910390a1604080518181526018818301527f455448207265636569766564202877697468206665657329000000000000000060608201526020810183905290515f5160206151935f395f51905f529181900360800190a18681101561333a5760405162461bcd60e51b8152602060048201526017602482015276125b9cdd59999a58da595b9d08115512081bdd5d1c1d5d604a1b6044820152606401610521565b60028054604080518381526060810182525f936001600160a01b0390931692849260208301908036833701905050905085815f81518110613b6757613b67614dc1565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bc3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613be79190614d1a565b81600181518110613bfa57613bfa614dc1565b6001600160a01b03929092166020928302919091018201526040805181815260138183015272496e697469616c204554482062616c616e636560681b60608201524792810183905290515f5160206151935f395f51905f529181900360800190a160408051818152601581830152740546f6b656e20616d6f756e7420666f72207377617605c1b60608201526020810188905290515f5160206151935f395f51905f529181900360800190a160025460405163095ea7b360e01b81526001600160a01b039182166004820152602481018890529088169063095ea7b3906044016020604051808303815f875af1158015613cf6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d1a9190614b6a565b5060408051818152601a818301527f546f6b656e7320617070726f76656420666f7220726f7574657200000000000060608201526020810188905290515f5160206151935f395f51905f529181900360800190a16001600160a01b0383166318cbafe587878530613d8d42610708614dd5565b6040518663ffffffff1660e01b8152600401613dad959493929190615157565b5f604051808303815f875af1925050508015613dea57506040513d5f823e601f3d908101601f19168201604052613de79190810190615013565b60015b613df6576135c2614e5f565b475f613e028483614fc9565b90505f5160206151935f395f51905f5282604051613e4e919060408082526011908201527046696e616c204554482062616c616e636560781b6060820152602081019190915260800190565b60405180910390a160408051818152600c818301526b115512081c9958d95a5d995960a21b60608201526020810183905290515f5160206151935f395f51905f529181900360800190a1878110156137825760405162461bcd60e51b8152602060048201526017602482015276125b9cdd59999a58da595b9d08115512081bdd5d1c1d5d604a1b6044820152606401610521565b600254604080516003808252608082019092525f926001600160a01b0316918391906020820160608036833701905050905086815f81518110613f2757613f27614dc1565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f83573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613fa79190614d1a565b81600181518110613fba57613fba614dc1565b60200260200101906001600160a01b031690816001600160a01b0316815250508581600281518110613fee57613fee614dc1565b6001600160a01b0392831660209182029290920101526040516370a0823160e01b81523060048201525f918816906370a0823190602401602060405180830381865afa158015614040573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906140649190614c12565b90505f5160206151935f395f51905f52816040516140cd919060408082526028908201527f496e697469616c2074617267657420746f6b656e2062616c616e636520287769606082015267746820666565732960c01b6080820152602081019190915260a00190565b60405180910390a160408051818152601c818301527f536f7572636520746f6b656e20616d6f756e7420666f7220737761700000000060608201526020810188905290515f5160206151935f395f51905f529181900360800190a160025460405163095ea7b360e01b81526001600160a01b039182166004820152602481018890529089169063095ea7b3906044016020604051808303815f875af1158015614178573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061419c9190614b6a565b505f5160206151935f395f51905f52866040516141b99190615109565b60405180910390a16001600160a01b038316635c11d795878785306141e042610708614dd5565b6040518663ffffffff1660e01b8152600401614200959493929190615157565b5f604051808303815f87803b158015614217575f5ffd5b505af1925050508015614228575060015b614234576130c3614e5f565b6040516370a0823160e01b81523060048201525f906001600160a01b038916906370a0823190602401602060405180830381865afa158015614278573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061429c9190614c12565b90505f6142a98383614fc9565b90505f5160206151935f395f51905f528260405161430191906040808252601a908201527f46696e616c2074617267657420746f6b656e2062616c616e63650000000000006060820152602081019190915260800190565b60405180910390a1604080518181526022818301527f54617267657420746f6b656e7320726563656976656420287769746820666565606082015261732960f01b60808201526020810183905290515f5160206151935f395f51905f529181900360a00190a1868110156143875760405162461bcd60e51b815260040161052190614fdc565b94506143939350505050565b949350505050565b600254604080516003808252608082019092525f926001600160a01b0316918391906020820160608036833701905050905086815f815181106143e0576143e0614dc1565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561443c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906144609190614d1a565b8160018151811061447357614473614dc1565b60200260200101906001600160a01b031690816001600160a01b03168152505085816002815181106144a7576144a7614dc1565b6001600160a01b0392831660209182029290920101526040516370a0823160e01b81523060048201525f918816906370a0823190602401602060405180830381865afa1580156144f9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061451d9190614c12565b90505f5160206151935f395f51905f528160405161457591906040808252601c908201527f496e697469616c2074617267657420746f6b656e2062616c616e6365000000006060820152602081019190915260800190565b60405180910390a160408051818152601c818301527f536f7572636520746f6b656e20616d6f756e7420666f7220737761700000000060608201526020810188905290515f5160206151935f395f51905f529181900360800190a160025460405163095ea7b360e01b81526001600160a01b039182166004820152602481018890529089169063095ea7b3906044016020604051808303815f875af1158015614620573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906146449190614b6a565b5060408051818152601a818301527f546f6b656e7320617070726f76656420666f7220726f7574657200000000000060608201526020810188905290515f5160206151935f395f51905f529181900360800190a16001600160a01b0383166338ed1739878785306146b742610708614dd5565b6040518663ffffffff1660e01b81526004016146d7959493929190615157565b5f604051808303815f875af192505050801561471457506040513d5f823e601f3d908101601f191682016040526147119190810190615013565b60015b614720576135c2614e5f565b6040516370a0823160e01b81523060048201525f906001600160a01b038a16906370a0823190602401602060405180830381865afa158015614764573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906147889190614c12565b90505f6147958483614fc9565b90505f5160206151935f395f51905f52826040516147ed91906040808252601a908201527f46696e616c2074617267657420746f6b656e2062616c616e63650000000000006060820152602081019190915260800190565b60405180910390a1604080518181526016818301527515185c99d95d081d1bdad95b9cc81c9958d95a5d995960521b60608201526020810183905290515f5160206151935f395f51905f529181900360800190a1878110156148615760405162461bcd60e51b815260040161052190614fdc565b9550614393945050505050565b5f6020828403121561487e575f5ffd5b5035919050565b6001600160a01b0381168114614899575f5ffd5b50565b8015158114614899575f5ffd5b5f5f5f5f5f5f5f60e0888a0312156148bf575f5ffd5b873596506020880135600381106148d4575f5ffd5b955060408801356148e481614885565b945060608801356148f481614885565b93506080880135925060a0880135915060c08801356149128161489c565b8091505092959891949750929550565b634e487b7160e01b5f52602160045260245ffd5b6003811061494657614946614922565b9052565b6004811061494657614946614922565b8b81526001600160a01b038b166020820152610160810161497e604083018c614936565b6001600160a01b038a811660608401528916608083015260a0820188905260c082018790526149b060e083018761494a565b9315156101008201526101208101929092526101409091015298975050505050505050565b5f602082840312156149e5575f5ffd5b813561334681614885565b5f5f60408385031215614a01575f5ffd5b8235614a0c81614885565b946020939093013593505050565b5f5f5f5f60808587031215614a2d575f5ffd5b8435935060208501359250604085013591506060850135614a4d8161489c565b939692955090935050565b5f5f60408385031215614a69575f5ffd5b8235614a7481614885565b91506020830135614a848161489c565b809150509250929050565b8e81526001600160a01b038e1660208201526101c08101614ab3604083018f614936565b6001600160a01b038d811660608401528c1660808301528a60a08301528960c0830152614ae360e083018a61494a565b87151561010083015286151561012083015285610140830152614b0b61016083018615159052565b6101808201939093526101a001529c9b505050505050505050505050565b60208082526021908201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f6040820152603760f91b606082015260800190565b5f60208284031215614b7a575f5ffd5b81516133468161489c565b6020808252601d908201527f506572736f6e616c207661756c7420646f6573206e6f74206578697374000000604082015260600190565b9283526001600160a01b03919091166020830152604082015260600190565b60208082526017908201527f50726f706f73616c20646f6573206e6f74206578697374000000000000000000604082015260600190565b5f60208284031215614c22575f5ffd5b5051919050565b60208082526024908201527f546f6b656e207472616e7366657220746f205661756c746563436f72652066616040820152631a5b195960e21b606082015260800190565b6020808252602c908201527f4f6e6c792070726f706f73616c2063726561746f722063616e2063616c6c207460408201526b3434b990333ab731ba34b7b760a11b606082015260800190565b60208082526016908201527550726f706f73616c206973206e6f742061637469766560501b604082015260600190565b6001600160a01b03958616815293909416602084015260408301919091526060820152608081019190915260a00190565b5f60208284031215614d2a575f5ffd5b815161334681614885565b634e487b7160e01b5f52601160045260245ffd5b5f60018201614d5a57614d5a614d35565b5060010190565b60e08101614d6f828a614936565b6001600160a01b03978816602083015295909616604087015260608601939093526080850191909152151560a084015260c090920191909152919050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b80820180821115612dea57612dea614d35565b5f8151808452602084019350602083015f5b82811015614e215781516001600160a01b0316865260209586019590910190600101614dfa565b5093949350505050565b848152608060208201525f614e436080830186614de8565b6001600160a01b03949094166040830152506060015292915050565b5f60033d1115614e755760045f5f3e505f5160e01c5b90565b601f8201601f1916810167ffffffffffffffff81118282101715614e9e57614e9e614dad565b6040525050565b5f60443d1015614eb25790565b6040513d600319016004823e80513d602482011167ffffffffffffffff82111715614edc57505090565b808201805167ffffffffffffffff811115614ef8575050505090565b3d8401600319018282016020011115614f12575050505090565b614f2160208285010185614e78565b509392505050565b6c029bbb0b8103330b4b632b21d1609d1b81525f82518060208501600d85015e5f9201600d0191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b602081525f612dea60208301601e81527f53776170206661696c6564207769746820756e6b6e6f776e206572726f720000602082015260400190565b81810381811115612dea57612dea614d35565b6020808252601a908201527f496e73756666696369656e74206f757470757420616d6f756e74000000000000604082015260600190565b5f60208284031215615023575f5ffd5b815167ffffffffffffffff811115615039575f5ffd5b8201601f81018413615049575f5ffd5b805167ffffffffffffffff81111561506357615063614dad565b8060051b6040516150776020830182614e78565b918252602081840181019290810187841115615091575f5ffd5b6020850194505b838510156150b457845180825260209586019590935001615098565b509695505050505050565b604081525f6150fb60408301601e81527f53776170206661696c6564207769746820756e6b6e6f776e206572726f720000602082015260400190565b905082602083015292915050565b60408082526026908201527f546f6b656e7320617070726f76656420666f7220726f7574657220287769746860608201526520666565732960d01b6080820152602081019190915260a00190565b85815284602082015260a060408201525f61517560a0830186614de8565b6001600160a01b039490941660608301525060800152939250505056fef6ff2ad7fc16bda2a7d32462729431bce3ebe9b75cc7c9b35a0adfbf7e7bb9e6a264697066735822122013e72a3c3251efc4f9585d5d6fb9dbd00d61a1194863658d54d9309a19d7c66a64736f6c634300081e0033