0 txs
228 calls
constructor
No constructor.
functions
_APPROVE_PROXY
viewfunction _APPROVE_PROXY() view returns (address)
_WETH
viewfunction _WETH() view returns (address)
_WNATIVE_RELAY
viewfunction _WNATIVE_RELAY() view returns (address)
commissionRateLimit
viewfunction commissionRateLimit() view returns (uint256)
DENOMINATOR
viewfunction DENOMINATOR() view returns (uint256)
version
viewfunction version() view returns (string)
smartSwapByInvest
payablefunction smartSwapByInvest(tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData, address to) payable returns (uint256 returnAmount)
smartSwapByInvestWithRefund
payablefunction smartSwapByInvestWithRefund(tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[], address to, address refundTo) payable returns (uint256 returnAmount)
smartSwapByOrderId
payablefunction smartSwapByOrderId(uint256 orderId, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[]) payable returns (uint256 returnAmount)
smartSwapTo
payablefunction smartSwapTo(uint256 orderId, address receiver, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[]) payable returns (uint256 returnAmount)
swapWrap
payablefunction swapWrap(uint256 orderId, uint256 rawdata) payable
swapWrapToWithBaseRequest
payablefunction swapWrapToWithBaseRequest(uint256 orderId, address receiver, tuple baseRequest) payable
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes)
uniswapV3SwapTo
payablefunction uniswapV3SwapTo(uint256 receiver, uint256 amount, uint256 minReturn, uint256[] pools) payable returns (uint256 returnAmount)
uniswapV3SwapToWithBaseRequest
payablefunction uniswapV3SwapToWithBaseRequest(uint256 orderId, address receiver, tuple baseRequest, uint256[] pools) payable returns (uint256 returnAmount)
unxswapByOrderId
payablefunction unxswapByOrderId(uint256 srcToken, uint256 amount, uint256 minReturn, bytes32[] pools) payable returns (uint256 returnAmount)
unxswapTo
payablefunction unxswapTo(uint256 srcToken, uint256 amount, uint256 minReturn, address receiver, bytes32[] pools) payable returns (uint256 returnAmount)
unxswapToWithBaseRequest
payablefunction unxswapToWithBaseRequest(uint256 orderId, address receiver, tuple baseRequest, bytes32[] pools) payable returns (uint256 returnAmount)
events
CommissionFromTokenRecord
event CommissionFromTokenRecord(address fromTokenAddress, uint256 commissionAmount, address referrerAddress)
CommissionToTokenRecord
event CommissionToTokenRecord(address toTokenAddress, uint256 commissionAmount, address referrerAddress)
OrderRecord
event OrderRecord(address fromToken, address toToken, address sender, uint256 fromAmount, uint256 returnAmount)
SwapOrderId
event SwapOrderId(uint256 id)
errors
SafeTransferFailed
error SafeTransferFailed()
creation bytecode
0x608060405234801561001057600080fd5b50614f89806100206000396000f3fe60806040526004361061010d5760003560e01c8063918f867411610095578063b881547711610064578063b8815477146102e5578063ca68d8f6146102f8578063e0af361614610310578063e99bfa9514610332578063fa461e331461034557600080fd5b8063918f8674146102945780639871efa4146102ac57806398d2ac62146102bf578063b80c2f09146102d257600080fd5b806344014e98116100dc57806344014e98146101c357806354fd4d50146101d6578063591b3d08146102195780636aa476451461022c57806373679b6b1461026c57600080fd5b806301617fab1461016457806303b87e5f1461017757806308298b5a1461019d5780630d5f0e3b146101b057600080fd5b3661015f5732330361015d5760405162461bcd60e51b81526020600482015260146024820152731155120819195c1bdcda5d081c995a9958dd195960621b60448201526064015b60405180910390fd5b005b600080fd5b61015d610172366004614113565b610365565b61018a6101853660046141bd565b610391565b6040519081526020015b60405180910390f35b61018a6101ab366004614289565b610442565b61018a6101be3660046142fb565b610568565b61018a6101d136600461435b565b6105c1565b3480156101e257600080fd5b5061020c6040518060400160405280600a81526020016976312e302e352d74656560b01b81525081565b6040516101949190614400565b61018a6102273660046149f5565b6106ea565b34801561023857600080fd5b506102547367fa2b5e7ef52b422434b512a5790c43766ef6f381565b6040516001600160a01b039091168152602001610194565b34801561027857600080fd5b5061025473374d7938c26c25b06abd00f247faaac21c0f073e81565b3480156102a057600080fd5b5061018a633b9aca0081565b61018a6102ba3660046142fb565b610942565b61015d6102cd366004614ab7565b61095c565b61018a6102e0366004614af6565b610a71565b61018a6102f336600461435b565b610ace565b34801561030457600080fd5b5061018a6301c9c38081565b34801561031c57600080fd5b50610254600080516020614ed483398151915281565b61018a610340366004614bac565b610cce565b34801561035157600080fd5b5061015d610360366004614c5c565b610cde565b600160ff1b81166fffffffffffffffffffffffffffffffff821661038b84338484610f2d565b50505050565b60008760800135428110156103b85760405162461bcd60e51b815260040161015490614cdb565b6040518b8152600080516020614f348339815191529060200160405180910390a161043333808c6103ee368e90038e018e614d03565b8c8c8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061042e92508d91508e9050614d1f565b61130b565b9b9a5050505050505050505050565b60405160a087901c8152600090600080516020614f348339815191529060200160405180910390a160008061047b6000341186866113d4565b9150915060006104918a6001600160a01b031690565b9050826001600160a01b0316816001600160a01b03161480156104cb57506001600160a01b038316600080516020614ef483398151915214155b806104fe57506001600160a01b0381161580156104fe57506001600160a01b038316600080516020614ef4833981519152145b61054a5760405162461bcd60e51b815260206004820152601760248201527f756e78737761703a20746f6b656e206d69736d617463680000000000000000006044820152606401610154565b61055a83838b8b338c8c8c6116e0565b9a9950505050505050505050565b60405160a086901c8152600090600080516020614f348339815191529060200160405180910390a16000806105a16000341186866117b5565b915091506105b5338984848b8b8b8b611ab7565b98975050505050505050565b60008360800135428110156105e85760405162461bcd60e51b815260040161015490614cdb565b604051878152600080516020614f348339815191529060200160405180910390a160008061061a6000341187876117b5565b90925090506001600160a01b03821661063a88356001600160a01b031690565b6001600160a01b031614801561067057506001600160a01b0381166106656040890160208a01614d2c565b6001600160a01b0316145b6106bc5760405162461bcd60e51b815260206004820152601960248201527f756e697377617056333a20746f6b656e206d69736d61746368000000000000006044820152606401610154565b6106dd33896001600160a01b031684848b604001358c606001358c8c611ab7565b9998505050505050505050565b60008660800151428110156107115760405162461bcd60e51b815260040161015490614cdb565b87516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed1981016107775760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21039b7bab931b2903a37b5b2b760611b6044820152606401610154565b6001600160a01b0384166107c65760405162461bcd60e51b8152602060048201526016602482015275726566756e64546f206973206164647265737328302960501b6044820152606401610154565b6001600160a01b03851661080f5760405162461bcd60e51b815260206004820152601060248201526f746f206973206164647265737328302960801b6044820152606401610154565b600089604001511161085a5760405162461bcd60e51b8152602060048201526014602482015273066726f6d546f6b656e416d6f756e7420697320360641b6044820152606401610154565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156108a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c59190614d49565b905060005b895181101561092c578a60400151828b83815181106108eb576108eb614d62565b60200260200101516108fd9190614d8e565b6109079190614da5565b8a828151811061091957610919614d62565b60209081029190910101526001016108ca565b5060408a0181905261055a8a8a8a30898b611b01565b6000610952868686338787610442565b9695505050505050565b600081356001600160a01b038116600080516020614ef48339815191521480156109ab5750600080516020614ed48339815191526109a06040850160208601614d2c565b6001600160a01b0316145b156109b95760009150610a5a565b6001600160a01b038116600080516020614ed4833981519152148015610a045750600080516020614ef48339815191526109f96040850160208601614d2c565b6001600160a01b0316145b15610a125760019150610a5a565b60405162461bcd60e51b815260206004820152601c60248201527f53776170577261703a20696e76616c696420746f6b656e2070616972000000006044820152606401610154565b610a6a8585848660400135610f2d565b5050505050565b6000876080013542811015610a985760405162461bcd60e51b815260040161015490614cdb565b6040518a8152600080516020614f348339815191529060200160405180910390a161055a3380806103ee368e90038e018e614d03565b6000836080013542811015610af55760405162461bcd60e51b815260040161015490614cdb565b604051878152600080516020614f348339815191529060200160405180910390a1600080610b276000341187876113d4565b90925090506001600160a01b038735811690831681148015610b6057506001600160a01b038316600080516020614ef483398151915214155b80610b9357506001600160a01b038116158015610b9357506001600160a01b038316600080516020614ef4833981519152145b610bdf5760405162461bcd60e51b815260206004820152601b60248201527f756e78737761703a2066726f6d546f6b656e206d69736d6174636800000000006044820152606401610154565b6001600160a01b038216610bf960408a0160208b01614d2c565b6001600160a01b0316148015610c2657506001600160a01b038216600080516020614ef483398151915214155b80610c6a57506000610c3e60408a0160208b01614d2c565b6001600160a01b0316148015610c6a57506001600160a01b038216600080516020614ef4833981519152145b610cb65760405162461bcd60e51b815260206004820152601960248201527f756e78737761703a20746f546f6b656e206d69736d61746368000000000000006044820152606401610154565b61055a83838a604001358b60600135338e8d8d6116e0565b60006109528686868686876106ea565b610d7f565b3d6000803e3d6000fd5b67a9059cbb70a0823160c01b815230816008015260206000602483600401855afa610d1a57610d1a610ce3565b6000518015610d455760a435600483015260248201819052610d456020600060448582885af1610d4a565b505050565b80610d5757610d57610ce3565b600160005114601f3d11163d151780610d7b57633c9fd93960e21b60005260046000fd5b5050565b604051601581017306ff0b40e9091053eee51fa1d482ce5d852f523360611b825260206000600484335afa610db657610db6610ce3565b6020806004808501335afa610dcd57610dcd610ce3565b60206040600460088501335afa610de657610de6610ce3565b6000806000881360018114610e02576020519250879150610e0b565b60005192508891505b507fff1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000008452606060002083527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460208401526001600160a01b0360558520169250338314610e8357635960139160e11b60005260046000fd5b60843592507306ff0b40e9091053eee51fa1d482ce5d852f523360611b845230831460018114610ef557826014860152836034860152336054860152816074860152610ef06020600060846010890160007367fa2b5e7ef52b422434b512a5790c43766ef6f35af1610d4a565b610f22565b336010860152816030860152610f18602060006044600c89016000885af1610d4a565b610f228386610ced565b505050505050505050565b60008111610f725760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74206d757374206265203e20360741b6044820152606401610154565b6000610f7c611e38565b9050600083610f9957600080516020614ef4833981519152610fa9565b600080516020614ed48339815191525b9050600084610fc657600080516020614ed4833981519152610fd6565b600080516020614ef48339815191525b9050610fe3838383611f39565b600080610ff285338a89611feb565b9150915086156111b45760405163052f523360e11b8152600080516020614ed4833981519152600482015233602482015273374d7938c26c25b06abd00f247faaac21c0f073e6044820152606481018790527367fa2b5e7ef52b422434b512a5790c43766ef6f390630a5ea46690608401600060405180830381600087803b15801561107d57600080fd5b505af1158015611091573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b81526004810189905273374d7938c26c25b06abd00f247faaac21c0f073e9250632e1a7d4d9150602401600060405180830381600087803b1580156110e257600080fd5b505af11580156110f6573d6000803e3d6000fd5b505050506001600160a01b03821630146111af576000826001600160a01b03164760405160006040518083038185875af1925050503d8060008114611157576040519150601f19603f3d011682016040523d82523d6000602084013e61115c565b606091505b50509050806111ad5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610154565b505b61128e565b8451611202578534146112025760405162461bcd60e51b81526020600482015260166024820152751d985b1d59481b9bdd08195c5d585b08185b5bdd5b9d60521b6044820152606401610154565b600080516020614ed48339815191526001600160a01b031663d0e30db0876040518263ffffffff1660e01b81526004016000604051808303818588803b15801561124b57600080fd5b505af115801561125f573d6000803e3d6000fd5b505050506001600160a01b0383163014905061128e5761128e600080516020614ed48339815191528388612541565b611299858983612571565b50604051898152600080516020614f348339815191529060200160405180910390a1604080516001600160a01b03868116825285166020820152328183015260608101889052608081018890529051600080516020614f148339815191529181900360a00190a1505050505050505050565b60006001600160a01b0385166113515760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610154565b600061135b611e38565b905061137f8161137587600001516001600160a01b031690565b8760200151611f39565b600080611392838b8a8a60400151611feb565b90925090508960006113a8898989858f89611b01565b905060006113b7868c86612571565b90506113c38183614dc7565b9d9c50505050505050505050505050565b600080826114245760405162461bcd60e51b815260206004820152601c60248201527f706f6f6c73206d7573742062652067726561746572207468616e2030000000006044820152606401610154565b60006001600160a01b038585600081811061144157611441614d62565b9050602002013560001c1690506000600160ff1b8686600081811061146857611468614d62565b9050602002013560001c16600014159050806114e557816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e09190614dda565b611547565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115479190614dda565b93506001600160a01b038416600080516020614ed483398151915214801561156c5750865b1561158357600080516020614ef483398151915293505b60008686611592600182614dc7565b8181106115a1576115a1614d62565b60200291909101359150506001600160a01b038116600160ff1b821615158061162b57816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611602573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116269190614dda565b61168d565b816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611669573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168d9190614dda565b9550600160fe1b831615156001600160a01b038716600080516020614ed48339815191521480156116bb5750805b156116d257600080516020614ef483398151915296505b505050505050935093915050565b60006001600160a01b0384166117265760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610154565b6000611730611e38565b905061173d818b8b611f39565b60008061174c8389898d611feb565b909250905060006117886001600160a01b038e16600080516020614ef48339815191521461177a578d61177d565b60005b8c8c8a8a8e89612965565b90506000611797858a85612571565b90506117a38183614dc7565b9e9d5050505050505050505050505050565b600080826118055760405162461bcd60e51b815260206004820152601c60248201527f706f6f6c73206d7573742062652067726561746572207468616e2030000000006044820152606401610154565b60006001600160a01b038585600081811061182257611822614d62565b905060200201351690506000600160ff1b8686600081811061184657611846614d62565b90506020020135166000149050806118bf57816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611896573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ba9190614dda565b611921565b816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119219190614dda565b93506001600160a01b038416600080516020614ed48339815191521480156119465750865b1561195d57600080516020614ef483398151915293505b6000868661196c600182614dc7565b81811061197b5761197b614d62565b60200291909101359150506001600160a01b038116600160ff1b82161580611a0457816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ff9190614dda565b611a66565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a669190614dda565b9550600160fd1b831615156001600160a01b038716600080516020614ed48339815191521480156116bb575080156116d257600080516020614ef48339815191529650505050505050935093915050565b600080611ac2611e38565b9050611acf818989611f39565b600080611ade838d8d8b611feb565b915091506000611af28d848b8b8b8b61318c565b90506000611797858e85612571565b60408601516000908790611b625760405162461bcd60e51b815260206004820152602260248201527f526f7574653a2066726f6d546f6b656e416d6f756e74206d757374206265203e604482015261020360f41b6064820152608401610154565b805160208201516001600160a01b0391821691611b809116856136a3565b9250611b8b81613737565b15611bfa57600080516020614ed48339815191526001600160a01b031663d0e30db083604001516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611bdd57600080fd5b505af1158015611bf1573d6000803e3d6000fd5b50505050503095505b6000805b8951811015611c3657898181518110611c1957611c19614d62565b602002602001015182611c2c9190614df7565b9150600101611bfe565b508260400151811115611ca95760405162461bcd60e51b815260206004820152603560248201527f526f7574653a206e756d626572206f6620626174636865732073686f756c64206044820152741899480f0f48199c9bdb551bdad95b905b5bdd5b9d605a1b6064820152608401610154565b508651885114611ced5760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610154565b60005b8751811015611d5657611d4e878787611d1587602001516001600160a01b0316613737565b8d8681518110611d2757611d27614d62565b60200260200101518d8781518110611d4157611d41614d62565b6020026020010151613753565b600101611cf0565b50611d658260200151856138cb565b60208201518390611d7f906001600160a01b0316866136a3565b611d899190614dc7565b92508160600151831015611dd85760405162461bcd60e51b8152602060048201526016602482015275135a5b881c995d1d5c9b881b9bdd081c995858da195960521b6044820152606401610154565b60208083015160408085015181516001600160a01b038087168252909316938301939093523290820152606081019190915260808101849052600080516020614f148339815191529060a00160405180910390a150509695505050505050565b6040805161010081018252600060a080830182905260c0830191909152651111057e155560d11b36601f198101356001600160d01b03198116928314651e51057e155560d11b8414811786526522220afc2bbb60d01b8414653ca20afc2bbb60d01b8514811760208801529482901c65ffffffffffff16968601969096526001600160a01b039081166060860152603f1990910135600160ff1b8116151560e0860152908116608085015292939091176001808214908114611f075760008560a0015260008560c00152611f32565b6060360335935065ffffffffffff60a01b841660a01c8560a001526001600160a01b0384168560c001525b5050505090565b82518015611f5c5750816001600160a01b031683608001516001600160a01b0316145b80611f88575082602001518015611f885750806001600160a01b031683608001516001600160a01b0316145b80611f9f57508251158015611f9f57508260200151155b610d455760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420636f6d6d697373696f6e20696e666f0000000000000000006044820152606401610154565b6000808560200151156120105730612007876080015130613b93565b91509150612538565b855161202157508290506000612538565b61231d565b808202811582820484141784026120455763ad251c276000526004601cfd5b9290920492915050565b600082821015612067576346e72d036000526004601cfd5b500390565b62461bcd60e51b600052600160e51b6020528060405250806000fd5b60008060008085855af180610d4557610d4560607c1c20636f6d6d697373696f6e2077697468206574686572206572726f7261206c565b6040516084810160405263052f523360e11b815281600482015282602482015283604482015284606482015260008060848360007367fa2b5e7ef52b422434b512a5790c43766ef6f35af1905080610a6a57610a6a60577c13636c61696d20746f6b656e73206661696c656400000000000000000061206c565b600080604051604881016040526ba9059cbba9059cbb70a0823160a01b815230600c82015260206000602460088401875afa80612193576121936058740519d95d0818985b185b98d953d98819985a5b195960421b61206c565b6000518988016121be670de0b6b3a7640000836121b984670de0b6b3a76400008e612026565b612026565b955050808511156121f1576121f160597c15696e76616c696420616d6f756e74315363616c65640000000000000061206c565b8660088401528460288401526020600060446004860160008a5af1915081601f3d116001600051141615161561222a573d863b15171591505b8161225757612257605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c0061206c565b88156122cc57612267858261204f565b93508860048401528360248401526020600060448560008a5af1915081601f3d116001600051141615161561229f573d863b15171591505b816122cc576122cc605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c0061206c565b5050509550959350505050565b604051606081016040528181528260208201528360408201527f0d3b1268ca3dbb6d3d8a0ea35f44f8f9d58cf578d732680b71b6904fb2733e0d606082a150505050565b608086015160e087015160a08801516040890151601090920281151501600080516020614ef48339815191528414610100020191600091829182918291906301c9c380828201111561239157612391605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d69740061206c565b60608e015160c08f01519096509450818101633b9aca0003918b0282900493508a0204905084610100811461241b57610101811461243e57610110811461241b57610111811461243e578015612484576001811461249b57601081146124c957601181146124f55761241660526e0e696e76616c69642073746174757360701b61206c565b612529565b6124258386612088565b6124168584600080516020614ef48339815191526122d9565b6124488386612088565b6124618584600080516020614ef48339815191526122d9565b61246b8285612088565b6124168483600080516020614ef48339815191526122d9565b61249083868e8a6120bf565b6124168584896122d9565b6124a783868e8a6120bf565b6124b28584896122d9565b6124be82858e8a6120bf565b6124168483896122d9565b6124d583308e8a6120bf565b6124e360008085888b612139565b506124ef86828a6122d9565b50612529565b612503828401308e8a6120bf565b612510828585888b612139565b61251b87838b6122d9565b61252686828b6122d9565b50505b50505050505050836000915091505b94509492505050565b6125548363a9059cbb60e01b8484613c13565b610d455760405163fb7f507960e01b815260040160405180910390fd5b600083602001516125845750600061295e565b604084015160a08501516301c9c38081830111156125c4576125c4605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d69740061206c565b6080860151606087015160405160608101604052600080516020614ef483398151915283146001811461281b57604051604c81016040526fa9059cbba9059cbba9059cbb70a0823160801b8152306010820152602060006024600c8401885afa8061264c5761264c6058740519d95d0818985b185b98d953d98819985a5b195960421b61206c565b6000518a81101561267057612670604d6a029cdd588819985a5b195960921b61206c565b8a81039050633b9aca0089820204995085600c84015289602c8401526020600060446008860160008b5af1915081601f3d11600160005114161516156126b9573d873b15171591505b816126e6576126e6605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c0061206c565b868552896020860152856040860152600080516020614eb4833981519152606086a187156127a85760c08d0151633b9aca0089830204808c019b508160088601528060288601526020600060446004880160008d5af1935083601f3d116001600051141615161561275a573d893b15171593505b8361278757612787605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c0061206c565b88875260208701526040860152600080516020614eb4833981519152606086a15b6001600160a01b038c166004840152899003602483015260206000604484828a5af1905080601f3d11600160005114161516156127e75750843b153d17155b806128145761281460607c1c7472616e7366657220746f6b656e207265636569766572206661696c61206c565b5050612957565b8747101561283c5761283c604d6a029cdd588819985a5b195960921b61206c565b874703633b9aca008782020497506000806000808b885af18061288157612881605d7c197472616e73666572206574682072656665726572206661696c00000061206c565b858452886020850152846040850152600080516020614eb4833981519152606085a186156129135760c08c0151633b9aca0083890204998a0199600080808084865af1806128f1576128f1605d7c197472616e73666572206574682072656665726572206661696c00000061206c565b5087865260208601526040850152600080516020614eb4833981519152606085a15b6000806000808c86038f60601b60601c5af190508061295457612954605e7c1a7472616e7366657220657468207265636569766572206661696c000061206c565b50505b5050505050505b9392505050565b6000612b95565b828152600060206000600484600401865afa6129a1576129a16054700419d95d081d1bdad95b8819985a5b195960621b61206c565b505060005192915050565b6770a082310dfe168160c01b815260008060206000600485600401875afa6129ef576129ef605672049d1bdad95b8c0818d85b1b0819985a5b195960521b61206c565b600051915083836004015260206000602485855afa612a3057612a3060597c1562616c616e63654f662063616c6c206661696c65640000000000000061206c565b60005190509250929050565b6770a08231d21220a760c01b815260008060206000600485600401875afa6129ef576129ef605672049d1bdad95b8c4818d85b1b0819985a5b195960521b61206c565b668b0367c240bc6b60c21b8152600060406000600484600401875afa612ac757612ac760587c1472657365727665732063616c6c206661696c6564000000000000000061206c565b600051602051868015612af3578915612aeb57612ae48786612a3c565b8390039650505b909190612b0a565b8815612b0a57612b0387866129ac565b8490039650505b50668b0367c240bc6b60c21b8452898502633b9aca009290920282019102049050848015612b445781600484015260006024840152612b52565b600060048401528160248401525b50886044830152608060648301526000608483015260008060a4846000885af16105b5576105b5605470041cddd85c0818d85b1b0819985a5b195960621b61206c565b846020850281018580612bbc57612bbc604e6b0b656d70747920706f6f6c7360901b61206c565b5060405182358b1560018114612c66573415612bf257612bf260557111696e76616c6964206d73672e76616c756560581b61206c565b63052f523360e11b83528c60048401528760248401526001600160a01b03821660448401528b606484015260008060848560007367fa2b5e7ef52b422434b512a5790c43766ef6f35af1612c6157612c616056720498db185a5b481d1bdad95b8819985a5b195960521b61206c565b612d33565b60018c341003612c9057612c9060557111696e76616c6964206d73672e76616c756560581b61206c565b670a9059cbbd0e30db60c41b835260008060048086018f600080516020614ed48339815191525af1612cdd57612cdd6056720499195c1bdcda5d081155120819985a5b195960521b61206c565b6001600160a01b03821683600401528b8360240152602060006044856000600080516020614ed48339815191525af1612d3357612d33605874051d1c985b9cd9995c8815d155120819985a5b195960421b61206c565b508a9450602084015b83811015612d92578035612d866001600160a01b03821663ffffffff60a01b851660a01c600160fd1b8616600160fc1b8716600160ff1b88166001600160a01b0389168d8b612a7f565b96509150602001612d3c565b5060009350600160fe1b81168015612ee05760009450612ddf3063ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a612a7f565b9550672e1a7d4da9059cbb60c01b835273374d7938c26c25b06abd00f247faaac21c0f073e6008840152856028840152602060006044856004016000600080516020614ed48339815191525af1612e5357612e53605874051d1c985b9cd9995c8815d155120819985a5b195960421b61206c565b85600484015260206000602485600073374d7938c26c25b06abd00f247faaac21c0f073e5af1612ea557612ea560577c13776974686472617720455448206661696c656400000000000000000061206c565b600080600080898b5af1612edb57612edb60577c137472616e7366657220455448206661696c656400000000000000000061206c565b61311e565b60009350600160ff1b82168015612f9257600160fc1b831615612f8d576770a082310dfe168160c01b8452602060006004866004016001600160a01b0387165afa612f4657612f46605672049d1bdad95b8c0818d85b1b0819985a5b195960521b61206c565b600051955087846004015260206000602486895afa612f8757612f8760567c15746f6b656e302062616c616e6365206661696c65640000000000000061206c565b60005194505b61302e565b600160fd1b83161561302e576770a08231d21220a760c01b8452602060006004866004016001600160a01b0387165afa612fe757612fe7605672049d1bdad95b8c4818d85b1b0819985a5b195960521b61206c565b600051955087846004015260206000602486895afa6130285761302860597c15746f6b656e312062616c616e6365206661696c65640000000000000061206c565b60005194505b506130668763ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a612a7f565b955084600010600181146130cf57600160ff1b831680156130a7576130a06770a082310dfe168160c01b6001600160a01b0386168761296c565b96506130c9565b6130c66770a08231d21220a760c01b6001600160a01b0386168761296c565b96505b5061311c565b6770a082310dfe168160c01b845287846004015260206000602486895afa613114576131146058740519d95d0818985b185b98d953d98819985a5b195960421b61206c565b846000510396505b505b50508884101561315057613150605a7c164d696e2072657475726e206e6f74207265616368656400000000000061206c565b8a8152826020820152326040820152896060820152836080820152600080516020614f1483398151915260a082a1505050979650505050505050565b60006135a4565b6000856001600160ff1b0310156131b557630b3f79fd60e41b60005260046000fd5b604051600160ff1b8616156001600160a01b038716816001811461324957630251596160e31b845260048401868152600060208201528a604082015273fffd8963efd1fc6a506488495d951d5263988d25606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af18061323d5760206000fd5b5060206000803e6132ac565b630251596160e31b845260048401868152600160208201528a60408201526401000276a4606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af1806132a45760206000fd5b5060208060003e5b505050506000519050600160ff1b8110156132d2576322323ba760e21b60005260046000fd5b1960010195945050505050565b6001813410036132fa57631841b4e160e01b60005260046000fd5b60008060008084600080516020614ed48339815191525af180610d7b57610d7b60577c1357455448206465706f736974206661696c656400000000000000000061206c565b60405160048101672e1a7d4da9059cbb60c01b825273374d7938c26c25b06abd00f247faaac21c0f073e60048201528360248201526000806044836000600080516020614ed48339815191525af19050806133bc576133bc60587c147472616e736665722077657468206661696c6564000000000000000061206c565b836004830152600080602484600073374d7938c26c25b06abd00f247faaac21c0f073e5af19050806134105761341060587c1477697468647261772077657468206661696c6564000000000000000061206c565b60008060008087875af190508061038b5761038b605571045cd95b9908195d1a195c8819985a5b1959605a1b61206c565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b8152600080600483865afa905080613490576134906055710459d95d081d1bdad95b8c0819985a5b1959605a1b61206c565b5060206000803e505060005190565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b81526000806004808401865afa905080613490576134906054710459d95d081d1bdad95b8c4819985a5b1959605a1b61206c565b600080516020614ef48339815191528034613536578235600160ff1b81161560018114613527576135208261349f565b9350613533565b61353082613441565b93505b50505b8335600160fd1b16613573578335600160ff1b811615600181146135645761355d82613441565b9250613570565b61356d8261349f565b92505b50505b60405182600052816020523260405285608052600080516020614f1483398151915260a06000a16040525050505050565b82601f196020840282010183806135c6576333f3e07b60e11b60005260046000fd5b50886000341180156135df576135db896132df565b309a505b5087606052825b82811015613609576135fc898235848e30613193565b309b5098506020016135e6565b506000600160fd1b83351611806001811461362957801561364857613659565b6136378a8535858f30613193565b9550613643868c61333f565b613659565b6136568a8535858f8f613193565b95505b5050508583101561368c5761368c605a7c164d696e2072657475726e206e6f74207265616368656400000000000061206c565b6136978382846134f0565b50509695505050505050565b60006136ae83613737565b156136c457506001600160a01b03811631613731565b6040516370a0823160e01b81526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa15801561370a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061372e9190614d49565b90505b92915050565b6001600160a01b0316600080516020614ef48339815191521490565b60006137838260008151811061376b5761376b614d62565b6020026020010151608001516001600160a01b031690565b905060008060008451905060005b818110156138be5780156137cf576137b486828151811061376b5761376b614d62565b94506137c96001600160a01b038616306136a3565b9650309a505b306137db600184614dc7565b821480156137e7575088155b156137f357508861388b565b6137fe600184614dc7565b82108015613834575086613813836001614df7565b8151811061382357613823614d62565b602002602001015160200151516001145b156138865786613845836001614df7565b8151811061385557613855614d62565b60200260200101516020015160008151811061387357613873614d62565b602002602001015190506001945061388b565b600094505b6138b28c8c838b8b87815181106138a4576138a4614d62565b602002602001015189613c67565b50839250600101613791565b5050505050505050505050565b6138dd826001600160a01b0316613737565b15613b05576040516370a0823160e01b8152306004820152600090600080516020614ed4833981519152906370a0823190602401602060405180830381865afa15801561392e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139529190614d49565b90508015613a4b5760405163a9059cbb60e01b815273374d7938c26c25b06abd00f247faaac21c0f073e600482015260248101829052600080516020614ed48339815191529063a9059cbb906044016020604051808303816000875af11580156139c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139e49190614e0a565b50604051632e1a7d4d60e01b81526004810182905273374d7938c26c25b06abd00f247faaac21c0f073e90632e1a7d4d90602401600060405180830381600087803b158015613a3257600080fd5b505af1158015613a46573d6000803e3d6000fd5b505050505b6001600160a01b0382163014610d455747801561038b576000836001600160a01b03168260405160006040518083038185875af1925050503d8060008114613aaf576040519150601f19603f3d011682016040523d82523d6000602084013e613ab4565b606091505b5050905080610a6a5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610154565b6001600160a01b0381163014610d7b576040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015613b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b809190614d49565b90508015610d4557610d45838383612541565b6000600080516020614ef4833981519152831460018114613c0757604051602481016040526370a0823160e01b815283600482015260206000602483885afa905080613bfc57613bfc6058740519d95d0818985b185b98d953d98819985a5b195960421b61206c565b506000519150613c0c565b823191505b5092915050565b60006040518481528360048201528260248201526020600060448360008a5af19150508015613c5f573d8015613c5557600160005114601f3d11169150613c5d565b6000863b1191505b505b949350505050565b6000805b835151811015613e1457600084604001518281518110613c8d57613c8d614d62565b602002602001015160001b9050600080600080613cb489608001516001600160a01b031690565b6001600160a01b0386169450600160ff1b8616935061ffff60a087901c1692509050613ce08288614df7565b895151909750613cf290600190614dc7565b8603613d5957612710871115613d595760405162461bcd60e51b815260206004820152602660248201527f746f74616c5765696768742063616e206e6f7420657863656564203130303030604482015265081b1a5b5a5d60d21b6064820152608401610154565b87613db45760008261271014613d8557612710613d76848d614d8e565b613d809190614da5565b613d87565b8a5b9050613db28e8b602001518981518110613da357613da3614d62565b60200260200101518484613e1e565b505b5050613dfe8188600001518681518110613dd057613dd0614d62565b60200260200101518b858b606001518981518110613df057613df0614d62565b60200260200101518f613ebe565b5050508080613e0c90614e27565b915050613c6b565b5050505050505050565b306001600160a01b03851603613e3e57613e39828483612541565b61038b565b60405163052f523360e11b81526001600160a01b038084166004830152808616602483015284166044820152606481018290527367fa2b5e7ef52b422434b512a5790c43766ef6f390630a5ea46690608401600060405180830381600087803b158015613eaa57600080fd5b505af1158015613e14573d6000803e3d6000fd5b8515613fc357600080866001600160a01b0316636f7929f260e01b878787604051602401613eee93929190614e40565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613f3c6001600160a01b038616650f2882bf0b3360d21b614df7565b604051602001613f4d929190614e75565b60408051601f1981840301815290829052613f6791614e97565b6000604051808303816000865af19150503d8060008114613fa4576040519150601f19603f3d011682016040523d82523d6000602084013e613fa9565b606091505b509150915081613fbc57613fbc816140c3565b50506140bb565b600080866001600160a01b03166330e6ae3160e01b878787604051602401613fed93929190614e40565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261403b6001600160a01b038616650f2882bf0b3360d21b614df7565b60405160200161404c929190614e75565b60408051601f198184030181529082905261406691614e97565b6000604051808303816000865af19150503d80600081146140a3576040519150601f19603f3d011682016040523d82523d6000602084013e6140a8565b606091505b509150915081613e1457613e14816140c3565b505050505050565b8051156140d257805160208201fd5b60405162461bcd60e51b81526020600482015260136024820152721859185c1d1bdc8818d85b1b0819985a5b1959606a1b6044820152606401610154565b50565b6000806040838503121561412657600080fd5b50508035926020909101359150565b6001600160a01b038116811461411057600080fd5b803561415581614135565b919050565b600060a0828403121561416c57600080fd5b50919050565b60008083601f84011261418457600080fd5b5081356001600160401b0381111561419b57600080fd5b6020830191508360208260051b85010111156141b657600080fd5b9250929050565b60008060008060008060008060006101408a8c0312156141dc57600080fd5b8935985060208a01356141ee81614135565b97506141fd8b60408c0161415a565b965060e08a01356001600160401b038082111561421957600080fd5b6142258d838e01614172565b90985096506101008c013591508082111561423f57600080fd5b61424b8d838e01614172565b90965094506101208c013591508082111561426557600080fd5b506142728c828d01614172565b915080935050809150509295985092959850929598565b60008060008060008060a087890312156142a257600080fd5b86359550602087013594506040870135935060608701356142c281614135565b925060808701356001600160401b038111156142dd57600080fd5b6142e989828a01614172565b979a9699509497509295939492505050565b60008060008060006080868803121561431357600080fd5b85359450602086013593506040860135925060608601356001600160401b0381111561433e57600080fd5b61434a88828901614172565b969995985093965092949392505050565b6000806000806000610100868803121561437457600080fd5b85359450602086013561438681614135565b9350614395876040880161415a565b925060e08601356001600160401b0381111561433e57600080fd5b60005b838110156143cb5781810151838201526020016143b3565b50506000910152565b600081518084526143ec8160208601602086016143b0565b601f01601f19169290920160200192915050565b60208152600061295e60208301846143d4565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b038111828210171561444b5761444b614413565b60405290565b60405161014081016001600160401b038111828210171561444b5761444b614413565b604051601f8201601f191681016001600160401b038111828210171561449c5761449c614413565b604052919050565b600060a082840312156144b657600080fd5b6144be614429565b90508135815260208201356144d281614135565b8060208301525060408201356040820152606082013560608201526080820135608082015292915050565b60006001600160401b0382111561451657614516614413565b5060051b60200190565b600082601f83011261453157600080fd5b81356020614546614541836144fd565b614474565b82815260059290921b8401810191818101908684111561456557600080fd5b8286015b848110156145805780358352918301918301614569565b509695505050505050565b600082601f83011261459c57600080fd5b813560206145ac614541836144fd565b82815260059290921b840181019181810190868411156145cb57600080fd5b8286015b848110156145805780356145e281614135565b83529183019183016145cf565b600082601f83011261460057600080fd5b81356001600160401b0381111561461957614619614413565b61462c601f8201601f1916602001614474565b81815284602083860101111561464157600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261466f57600080fd5b8135602061467f614541836144fd565b82815260059290921b8401810191818101908684111561469e57600080fd5b8286015b848110156145805780356001600160401b038111156146c15760008081fd5b6146cf8986838b01016145ef565b8452509183019183016146a2565b60006146eb614541846144fd565b838152905060208101600584901b830185101561470757600080fd5b825b8460051b8401811015614877576001600160401b03808235111561472c57600080fd5b8135850187601f82011261473f57600080fd5b61474c61454182356144fd565b81358082526020808301929160051b8401018a81111561476b57600080fd5b602084015b8181101561486057858135111561478657600080fd5b8035850160a0818e03601f1901121561479e57600080fd5b6147a6614429565b87602083013511156147b757600080fd5b6147c98e60208085013585010161458b565b815287604083013511156147dc57600080fd5b6147ef8e6020604085013585010161458b565b6020820152876060830135111561480557600080fd5b6148188e60206060850135850101614520565b6040820152876080830135111561482e57600080fd5b6148418e6020608085013585010161465e565b606082015260a091909101356080820152845260209384019301614770565b505085525050602092830192919091019050614709565b50509392505050565b600082601f83011261489157600080fd5b61295e838335602085016146dd565b801515811461411057600080fd5b8035614155816148a0565b600082601f8301126148ca57600080fd5b813560206148da614541836144fd565b82815260059290921b840181019181810190868411156148f957600080fd5b8286015b848110156145805780356001600160401b038082111561491d5760008081fd5b90880190610140828b03601f19018113156149385760008081fd5b614940614451565b878401358152604061495381860161414a565b89830152606061496481870161414a565b828401526080915061497782870161414a565b818401525060a0808601358284015260c0915081860135818401525060e0808601358284015261010091508186013581840152506101206149b98187016148ae565b838301529285013592848411156149d257600091508182fd5b6149e08e8b868901016145ef565b908301525086525050509183019183016148fd565b6000806000806000806101408789031215614a0f57600080fd5b614a1988886144a4565b955060a08701356001600160401b0380821115614a3557600080fd5b614a418a838b01614520565b965060c0890135915080821115614a5757600080fd5b614a638a838b01614880565b955060e0890135915080821115614a7957600080fd5b50614a8689828a016148b9565b935050610100870135614a9881614135565b9150610120870135614aa981614135565b809150509295509295509295565b600080600060e08486031215614acc57600080fd5b833592506020840135614ade81614135565b9150614aed856040860161415a565b90509250925092565b600080600080600080600080610120898b031215614b1357600080fd5b88359750614b248a60208b0161415a565b965060c08901356001600160401b0380821115614b4057600080fd5b614b4c8c838d01614172565b909850965060e08b0135915080821115614b6557600080fd5b614b718c838d01614172565b90965094506101008b0135915080821115614b8b57600080fd5b50614b988b828c01614172565b999c989b5096995094979396929594505050565b60008060008060006101208688031215614bc557600080fd5b614bcf87876144a4565b945060a08601356001600160401b0380821115614beb57600080fd5b614bf789838a01614520565b955060c0880135915080821115614c0d57600080fd5b614c1989838a01614880565b945060e0880135915080821115614c2f57600080fd5b50614c3c888289016148b9565b925050610100860135614c4e81614135565b809150509295509295909350565b60008060008060608587031215614c7257600080fd5b843593506020850135925060408501356001600160401b0380821115614c9757600080fd5b818701915087601f830112614cab57600080fd5b813581811115614cba57600080fd5b886020828501011115614ccc57600080fd5b95989497505060200194505050565b6020808252600e908201526d149bdd5d194e88195e1c1a5c995960921b604082015260600190565b600060a08284031215614d1557600080fd5b61295e83836144a4565b600061295e3684846146dd565b600060208284031215614d3e57600080fd5b813561295e81614135565b600060208284031215614d5b57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761373157613731614d78565b600082614dc257634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561373157613731614d78565b600060208284031215614dec57600080fd5b815161295e81614135565b8082018082111561373157613731614d78565b600060208284031215614e1c57600080fd5b815161295e816148a0565b600060018201614e3957614e39614d78565b5060010190565b6001600160a01b03848116825283166020820152606060408201819052600090614e6c908301846143d4565b95945050505050565b60008351614e878184602088016143b0565b9190910191825250602001919050565b60008251614ea98184602087016143b0565b919091019291505056fef171268de859ec269c52bbfac94dcb7715e784de194342abb284bf34fd30b32d00000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab1000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1bb43f2da90e35f7b0cf38521ca95a49e68eb42fac49924930a5bd73cdf7576c7724394874fdd8ad13292ec739b441f85c6559f10dc4141b8d4c0fa4cbf55bdba26469706673582212204d6d56ab2857b26eff84ba3d9ec5473a6a7d99d788d58c5f8f60f4c192c9acdc64736f6c63430008110033