1 tx
576.3k 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)
admin
viewfunction admin() view returns (address)
approveProxy
viewfunction approveProxy() view returns (address)
commissionRateLimit
viewfunction commissionRateLimit() view returns (uint256)
feeRateAndReceiver_UNUSED
viewfunction feeRateAndReceiver_UNUSED() view returns (uint256)
operator_UNUSED
viewfunction operator_UNUSED(address) view returns (address)
orderRemaining_UNUSED
viewfunction orderRemaining_UNUSED(bytes32) view returns (uint256)
owner
viewfunction owner() view returns (address)
priorityAddresses
viewfunction priorityAddresses(address) view returns (bool)
VERSION
viewfunction VERSION() view returns (uint256)
wNativeRelayer
viewfunction wNativeRelayer() view returns (address)
initialize
nonpayablefunction initialize()
renounceOwnership
nonpayablefunction renounceOwnership()
setPriorityAddress
nonpayablefunction setPriorityAddress(address _priorityAddress, bool valid)
setProtocolAdmin
nonpayablefunction setProtocolAdmin(address _newAdmin)
smartSwapByInvest
payablefunction smartSwapByInvest(tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData, address to) payable returns (uint256 returnAmount)
smartSwapByOrderId
payablefunction smartSwapByOrderId(uint256 orderId, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData) payable returns (uint256 returnAmount)
smartSwapByOrderIdByXBridge
payablefunction smartSwapByOrderIdByXBridge(uint256 orderId, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData) payable returns (uint256 returnAmount)
smartSwapTo
payablefunction smartSwapTo(uint256 orderId, address receiver, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData) payable returns (uint256 returnAmount)
swapWrap
payablefunction swapWrap(uint256 orderId, uint256 rawdata) payable
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes)
uniswapV3SwapTo
payablefunction uniswapV3SwapTo(uint256 receiver, uint256 amount, uint256 minReturn, uint256[] pools) payable returns (uint256 returnAmount)
uniswapV3SwapToByXBridge
payablefunction uniswapV3SwapToByXBridge(uint256 receiver, uint256 amount, uint256 minReturn, uint256[] pools) payable returns (uint256 returnAmount)
uniswapV3SwapToWithPermit
nonpayablefunction uniswapV3SwapToWithPermit(uint256 receiver, address srcToken, uint256 amount, uint256 minReturn, uint256[] pools, bytes permit) returns (uint256 returnAmount)
unxswapByOrderId
payablefunction unxswapByOrderId(uint256 srcToken, uint256 amount, uint256 minReturn, bytes32[] pools) payable returns (uint256 returnAmount)
unxswapByOrderIdByXBridge
payablefunction unxswapByOrderIdByXBridge(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)
withdrawDust
nonpayablefunction withdrawDust(address token, address to, uint256 amount)
events
AdminChanged
event AdminChanged(address newAdmin)
CommissionRecord
event CommissionRecord(uint256 commissionAmount, address referrerAddress)
Initialized
event Initialized(uint8 version)
OrderRecord
event OrderRecord(address fromToken, address toToken, address sender, uint256 fromAmount, uint256 returnAmount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PriorityAddressChanged
event PriorityAddressChanged(address priorityAddress, bool valid)
SwapOrderId
event SwapOrderId(uint256 id)
errors
SafeTransferFailed
error SafeTransferFailed()
creation bytecode
0x608060405234801561001057600080fd5b5061492a806100206000396000f3fe6080604052600436106101dc5760003560e01c80639a09b28511610102578063e99bfa9511610095578063f3e144b611610064578063f3e144b614610565578063f851a44014610585578063fa461e33146105a5578063ffa1ad74146105c557600080fd5b8063e99bfa95146104e5578063f1489b9f146104f8578063f2fde38b14610525578063f3dced3c1461054557600080fd5b8063d1b260d4116100d1578063d1b260d414610487578063d3507df51461049a578063d8837daf146104b0578063e0af3616146104c357600080fd5b80639a09b2851461041e578063b80c2f091461043e578063ca68d8f614610451578063d13a35e61461046757600080fd5b8063715018a61161017a5780638575654f116101495780638575654f1461039a578063869c6b4b146103ad5780638da5cb5b146103ed5780639871efa41461040b57600080fd5b8063715018a61461032857806373679b6b1461033d578063779e45fc146103655780638129fc1c1461038557600080fd5b80630d5f0e3b116101b65780630d5f0e3b1461027f57806327f9fa1e1461029257806341f4a959146102e05780636aa476451461030057600080fd5b806301617fab1461023357806303b87e5f1461024657806308298b5a1461026c57600080fd5b3661022e5732330361022c5760405162461bcd60e51b81526020600482015260146024820152731155120819195c1bdcda5d081c995a9958dd195960621b60448201526064015b60405180910390fd5b005b600080fd5b61022c610241366004613e47565b6105da565b610259610254366004613ee1565b610991565b6040519081526020015b60405180910390f35b61025961027a366004613fad565b610a0a565b61025961028d36600461401f565b610a4c565b34801561029e57600080fd5b506102c86102ad36600461407f565b60b4602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610263565b3480156102ec57600080fd5b5061022c6102fb36600461409c565b610a8c565b34801561030c57600080fd5b506102c873e9bbd6ec0c9ca71d3dccd1282ee9de4f811e50af81565b34801561033457600080fd5b5061022c610b49565b34801561034957600080fd5b506102c873d99cae3fac551f6b6ba7b9f19bdd316951eeee9881565b34801561037157600080fd5b5061022c6103803660046140eb565b610b5d565b34801561039157600080fd5b5061022c610c14565b6102596103a836600461401f565b610d2e565b3480156103b957600080fd5b506103dd6103c836600461407f565b60996020526000908152604090205460ff1681565b6040519015158152602001610263565b3480156103f957600080fd5b506033546001600160a01b03166102c8565b61025961041936600461401f565b610e31565b34801561042a57600080fd5b5061022c61043936600461407f565b610e68565b61025961044c366004614124565b610f0a565b34801561045d57600080fd5b5061025961012c81565b34801561047357600080fd5b506098546102c8906001600160a01b031681565b610259610495366004614124565b610f82565b3480156104a657600080fd5b5061025960b65481565b6102596104be36600461401f565b6110b2565b3480156104cf57600080fd5b506102c860008051602061489583398151915281565b6102596104f33660046141da565b6111b1565b34801561050457600080fd5b5061025961051336600461429a565b60b56020526000908152604090205481565b34801561053157600080fd5b5061022c61054036600461407f565b6113d0565b34801561055157600080fd5b506097546102c8906001600160a01b031681565b34801561057157600080fd5b506102596105803660046142f4565b611446565b34801561059157600080fd5b5060ad546102c8906001600160a01b031681565b3480156105b157600080fd5b5061022c6105c036600461437e565b611494565b3480156105d157600080fd5b50610259600181565b600160ff1b81166001600160801b0382168061062d5760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74206d757374206265203e20360741b6044820152606401610223565b81156107df5760405163052f523360e11b8152600080516020614895833981519152600482015233602482015273d99cae3fac551f6b6ba7b9f19bdd316951eeee9860448201526001600160801b038216606482015273e9bbd6ec0c9ca71d3dccd1282ee9de4f811e50af90630a5ea46690608401600060405180830381600087803b1580156106bc57600080fd5b505af11580156106d0573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b81526001600160801b038416600482015273d99cae3fac551f6b6ba7b9f19bdd316951eeee989250632e1a7d4d9150602401600060405180830381600087803b15801561072957600080fd5b505af115801561073d573d6000803e3d6000fd5b50506040516000925033915047908381818185875af1925050503d8060008114610783576040519150601f19603f3d011682016040523d82523d6000602084013e610788565b606091505b50509050806107d95760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610223565b506108bd565b806001600160801b031634146108305760405162461bcd60e51b81526020600482015260166024820152751d985b1d59481b9bdd08195c5d585b08185b5bdd5b9d60521b6044820152606401610223565b6000805160206148958339815191526001600160a01b031663d0e30db0826001600160801b03166040518263ffffffff1660e01b81526004016000604051808303818588803b15801561088257600080fd5b505af1158015610896573d6000803e3d6000fd5b50505050506108bd60008051602061489583398151915233836001600160801b031661167c565b6040518481526000805160206148d58339815191529060200160405180910390a16000805160206148b58339815191528261090c5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61091c565b6000805160206148958339815191525b836109355760008051602061489583398151915261094b565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee5b604080516001600160a01b03938416815292909116602083015233908201526001600160801b03831660608201819052608082015260a00160405180910390a150505050565b60008760800135428110156109b85760405162461bcd60e51b8152600401610223906143d0565b6109c06116ac565b6040518b81526000805160206148d58339815191529060200160405180910390a16109f0338b8b8b8b8b8b611705565b91506109fc6001606555565b509998505050505050505050565b60405160a087901c81526000906000805160206148d58339815191529060200160405180910390a1610a41878787338888886117f6565b979650505050505050565b60405160a086901c81526000906000805160206148d58339815191529060200160405180910390a1610a823387878787876118a0565b9695505050505050565b610a946118fb565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03841601610b3957600080836001600160a01b03168360405160006040518083038185875af1925050503d8060008114610b07576040519150601f19603f3d011682016040523d82523d6000602084013e610b0c565b606091505b5091509150818190610b315760405162461bcd60e51b8152600401610223919061441c565b505050505050565b610b4483838361167c565b505050565b610b516118fb565b610b5b6000611955565b565b60ad546001600160a01b0316331480610b8057506033546001600160a01b031633145b610bb15760405162461bcd60e51b81526020600482015260026024820152616e6160f01b6044820152606401610223565b6001600160a01b038216600081815260996020908152604091829020805460ff19168515159081179091558251938452908301527fede97de789011d2becb9fba8441864c3b17f4a20f7ebf0a77e93f30adc30e207910160405180910390a15050565b600054610100900460ff1615808015610c345750600054600160ff909116105b80610c4e5750303b158015610c4e575060005460ff166001145b610cb15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610223565b6000805460ff191660011790558015610cd4576000805461ff0019166101001790555b610cdc6119a7565b610ce46119d6565b8015610d2b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b50565b3360009081526099602052604081205460ff161515600114610d625760405162461bcd60e51b81526004016102239061444f565b60405160a087901c81526000805160206148d58339815191529060200160405180910390a1600080336001600160a01b031663534015b36040518163ffffffff1660e01b81526004016040805180830381865afa158015610dc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610deb9190614476565b90925090506001600160a01b038116610e165760405162461bcd60e51b8152600401610223906144a5565b610e2588888885858a8a6117f6565b98975050505050505050565b60405160a086901c81526000906000805160206148d58339815191529060200160405180910390a1610a82868686333388886117f6565b60ad546001600160a01b0316331480610e8b57506033546001600160a01b031633145b610ebc5760405162461bcd60e51b81526020600482015260026024820152616e6160f01b6044820152606401610223565b60ad80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7ce7ec0b50378fb6c0186ffb5f48325f6593fcb4ca4386f21861af3129188f5c90602001610d22565b6000876080013542811015610f315760405162461bcd60e51b8152600401610223906143d0565b610f396116ac565b6040518a81526000805160206148d58339815191529060200160405180910390a1610f6933338b8b8b8b8b611705565b9150610f756001606555565b5098975050505050505050565b6000876080013542811015610fa95760405162461bcd60e51b8152600401610223906143d0565b610fb16116ac565b3360009081526099602052604090205460ff161515600114610fe55760405162461bcd60e51b81526004016102239061444f565b6040518a81526000805160206148d58339815191529060200160405180910390a1600080336001600160a01b031663534015b36040518163ffffffff1660e01b81526004016040805180830381865afa158015611046573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106a9190614476565b90925090506001600160a01b0381166110955760405162461bcd60e51b8152600401610223906144a5565b6110a482828d8d8d8d8d611705565b93505050610f756001606555565b3360009081526099602052604081205460ff1615156001146110e65760405162461bcd60e51b81526004016102239061444f565b60405160a087901c81526000805160206148d58339815191529060200160405180910390a1600080336001600160a01b031663534015b36040518163ffffffff1660e01b81526004016040805180830381865afa15801561114b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116f9190614476565b90925090506001600160a01b03811661119a5760405162461bcd60e51b8152600401610223906144a5565b610e2582826001600160a01b0316898989896118a0565b60008860800135428110156111d85760405162461bcd60e51b8152600401610223906143d0565b6111e06116ac565b89356001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed1981016112465760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21039b7bab931b2903a37b5b2b760611b6044820152606401610223565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561128d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b191906144cd565b905060006040518060a001604052808e6000013581526020018e60200160208101906112dd919061407f565b6001600160a01b031681526020018381526020018e6060013581526020018e60800135815250905060008c8c90506001600160401b03811115611322576113226144e6565b60405190808252806020026020018201604052801561134b578160200160208202803683370190505b50905060005b8c8110156113b1578e60400135848f8f84818110611371576113716144fc565b905060200201356113829190614528565b61138c919061453f565b82828151811061139e5761139e6144fc565b6020908102919091010152600101611351565b506113c082828d8d308c611a05565b955050505050610f756001606555565b6113d86118fb565b6001600160a01b03811661143d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610223565b610d2b81611955565b60405160a089901c81526000906000805160206148d58339815191529060200160405180910390a1611479888484611d43565b611487338a898989896118a0565b9998505050505050505050565b6114d8565b3d6000803e3d6000fd5b806114b0576114b0611499565b600160005114601f3d11163d1517806114d457633c9fd93960e21b60005260046000fd5b5050565b604051601581017306ff0b40e9091053eee51fa1d482ce5d852f523360611b825260206000600484335afa61150f5761150f611499565b6020806004808501335afa61152657611526611499565b60206040600460088501335afa61153f5761153f611499565b600080600088136001811461155b576020519250879150611564565b60005192508891505b507fff1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000008452606060002083527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460208401526001600160a01b03605585201692503383146115dc57635960139160e11b60005260046000fd5b60843592507306ff0b40e9091053eee51fa1d482ce5d852f523360611b84523083146001811461164e5782601486015283603486015233605486015281607486015261164960206000608460108901600073e9bbd6ec0c9ca71d3dccd1282ee9de4f811e50af5af16114a3565b611671565b336010860152816030860152611671602060006044600c89016000885af16114a3565b505050505050505050565b61168f8363a9059cbb60e01b8484611ea9565b610b445760405163fb7f507960e01b815260040160405180910390fd5b6002606554036116fe5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610223565b6002606555565b60006001600160a01b03871661174b5760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610223565b6000611755611efd565b9050600080611769838b8b60400135611fa5565b90925090508a60006117c2611783368d90038d018d614561565b8b8b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508d92508c915087905089611a05565b905060006117d1868e8661216e565b90506117dd81836145e7565b9e9d5050505050505050505050505050565b6001606555565b60006001600160a01b03841661183c5760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610223565b6000611846611efd565b905060008061185683888c611fa5565b9150915060006118746001600160a01b038d168c8c8a8a8e896123eb565b90506000611883858a8561216e565b905061188f81836145e7565b9d9c50505050505050505050505050565b6000806118ab611efd565b90506000806118bb838a8a611fa5565b9150915060006118cf8b848b8b8b8b612c12565b50905060006118df858c8561216e565b90506118eb81836145e7565b9c9b505050505050505050505050565b6033546001600160a01b03163314610b5b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610223565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166119ce5760405162461bcd60e51b8152600401610223906145fa565b610b5b613123565b600054610100900460ff166119fd5760405162461bcd60e51b8152600401610223906145fa565b610b5b613153565b60408601516000908790611a665760405162461bcd60e51b815260206004820152602260248201527f526f7574653a2066726f6d546f6b656e416d6f756e74206d757374206265203e604482015261020360f41b6064820152608401610223565b805160208201516001600160a01b0391821691611a8491168561317a565b9250611a8f8161320e565b15611afe576000805160206148958339815191526001600160a01b031663d0e30db083604001516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611ae157600080fd5b505af1158015611af5573d6000803e3d6000fd5b50505050503094505b6000805b8951811015611b3a57898181518110611b1d57611b1d6144fc565b602002602001015182611b309190614645565b9150600101611b02565b508260400151811115611bad5760405162461bcd60e51b815260206004820152603560248201527f526f7574653a206e756d626572206f6620626174636865732073686f756c64206044820152741899480f0f48199c9bdb551bdad95b905b5bdd5b9d605a1b6064820152608401610223565b5087518614611bf05760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610223565b60005b86811015611c6157611c598686611c1686602001516001600160a01b031661320e565b8c8581518110611c2857611c286144fc565b60200260200101518c8c87818110611c4257611c426144fc565b9050602002810190611c549190614658565b613230565b600101611bf3565b50611c708260200151856133ea565b60208201518390611c8a906001600160a01b03168661317a565b611c9491906145e7565b92508160600151831015611ce35760405162461bcd60e51b8152602060048201526016602482015275135a5b881c995d1d5c9b881b9bdd081c995858da195960521b6044820152606401610223565b60208083015160408085015181516001600160a01b0380871682529093169383019390935232908201526060810191909152608081018490526000805160206148b58339815191529060a00160405180910390a150509695505050505050565b8015610b44576000606060e0839003611de4576040516001600160a01b03861690611d7d9063d505accf60e01b90879087906020016146a1565b60408051601f1981840301815290829052611d97916146c5565b6000604051808303816000865af19150503d8060008114611dd4576040519150601f19603f3d011682016040523d82523d6000602084013e611dd9565b606091505b509092509050611e53565b610100839003611e15576040516001600160a01b03861690611d7d906323f2ebc360e21b90879087906020016146a1565b60405162461bcd60e51b81526020600482015260136024820152720aee4dedcce40e0cae4dad2e840d8cadccee8d606b1b6044820152606401610223565b81611ea257611e89816040518060400160405280600f81526020016e02832b936b4ba103330b4b632b21d1608d1b8152506136b2565b60405162461bcd60e51b8152600401610223919061441c565b5050505050565b60006040518481528360048201528260248201526020600060448360008a5af19150508015611ef5573d8015611eeb57600160005114601f3d11169150611ef3565b6000863b1191505b505b949350505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260405160a081016040525060203603356001600160d01b03198116651e51057e155560d11b1482526001600160d01b03198116653ca20afc2bbb60d01b14826020015265ffffffffffff60a01b811660a01c82604001526001600160a01b0381168260600152506001600160a01b03604036033516816080015290565b600080846020015115611fca5730611fc1866080015130613815565b91509150612166565b8451611fdb57508290506000612166565b611ffc565b62461bcd60e51b600052600160e51b6020528060405250806000fd5b604085015161012c81111561203357612033605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400611fe0565b60808601516060870151826127100383870204925073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8214600181146120e7576040516084810160405263052f523360e11b8152836004820152336024820152826044820152846064820152600080608483600073e9bbd6ec0c9ca71d3dccd1282ee9de4f811e50af5af19050806120e1576120e160577c13636c61696d20746f6b656e73206661696c6564000000000000000000611fe0565b50612120565b60008060008087865af18061211e5761211e605f7c1b636f6d6d697373696f6e2077697468206574686572206572726f7200611fe0565b505b50604051915060408201604052828252806020830152507fffc60ee157a42f4d8edbd1897e6581a96d9ed04e44fb2ab53a47ce1eb8f2775b604082a15050836000915091505b935093915050565b60008360200151612181575060006123e4565b604084015161012c8111156121b8576121b8605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400611fe0565b6080850151606086015173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee82146001811461230357604051604881016040526ba9059cbba9059cbb70a0823160a01b815230600c82015260206000602460088401875afa80612238576122386058740519d95d0818985b185b98d953d98819985a5b195960421b611fe0565b6000518881101561225c5761225c604d6a029cdd588819985a5b195960961b611fe0565b888103905061271087820204975084600884015287602884015260008060446004860160008a5af19150816122b3576122b3605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00611fe0565b8960048401528781036024840152506000806044846000895af19050806122fc576122fc60607c1c7472616e7366657220746f6b656e207265636569766572206661696c611fe0565b50506123a5565b8547101561232457612324604d6a029cdd588819985a5b195960961b611fe0565b85470361271085820204955060008060008089875af18061236757612367605d7c197472616e73666572206574682072656665726572206661696c000000611fe0565b6000806000808a86038d5af19050806123a2576123a2605e7c1a7472616e7366657220657468207265636569766572206661696c0000611fe0565b50505b5060405192506040830160405283835280602084015250507fffc60ee157a42f4d8edbd1897e6581a96d9ed04e44fb2ab53a47ce1eb8f2775b604082a1505b9392505050565b600061261b565b828152600060206000600484600401865afa612427576124276054700419d95d081d1bdad95b8819985a5b195960621b611fe0565b505060005192915050565b6770a082310dfe168160c01b815260008060206000600485600401875afa61247557612475605672049d1bdad95b8c0818d85b1b0819985a5b195960521b611fe0565b600051915083836004015260206000602485855afa6124b6576124b660597c1562616c616e63654f662063616c6c206661696c656400000000000000611fe0565b60005190509250929050565b6770a08231d21220a760c01b815260008060206000600485600401875afa61247557612475605672049d1bdad95b8c4818d85b1b0819985a5b195960521b611fe0565b668b0367c240bc6b60c21b8152600060406000600484600401875afa61254d5761254d60587c1472657365727665732063616c6c206661696c65640000000000000000611fe0565b6000516020518680156125795789156125715761256a87866124c2565b8390039650505b909190612590565b8815612590576125898786612432565b8490039650505b50668b0367c240bc6b60c21b8452898502633b9aca0092909202820191020490508480156125ca57816004840152600060248401526125d8565b600060048401528160248401525b50886044830152608060648301526000608483015260008060a4846000885af1610e2557610e25605470041cddd85c0818d85b1b0819985a5b195960621b611fe0565b84602085028101858061264257612642604e6b0b656d70747920706f6f6c7360901b611fe0565b5060405182358b15600181146126ec5734156126785761267860557111696e76616c6964206d73672e76616c756560581b611fe0565b63052f523360e11b83528c60048401528760248401526001600160a01b03821660448401528b6064840152600080608485600073e9bbd6ec0c9ca71d3dccd1282ee9de4f811e50af5af16126e7576126e76056720498db185a5b481d1bdad95b8819985a5b195960521b611fe0565b6127b9565b60018c3410036127165761271660557111696e76616c6964206d73672e76616c756560581b611fe0565b670a9059cbbd0e30db60c41b835260008060048086018f6000805160206148958339815191525af1612763576127636056720499195c1bdcda5d081155120819985a5b195960521b611fe0565b6001600160a01b03821683600401528b83602401526020600060448560006000805160206148958339815191525af16127b9576127b9605874051d1c985b9cd9995c8815d155120819985a5b195960421b611fe0565b508a9450602084015b8381101561281857803561280c6001600160a01b03821663ffffffff60a01b851660a01c600160fd1b8616600160fc1b8716600160ff1b88166001600160a01b0389168d8b612505565b965091506020016127c2565b5060009350600160fe1b8116801561296657600094506128653063ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a612505565b9550672e1a7d4da9059cbb60c01b835273d99cae3fac551f6b6ba7b9f19bdd316951eeee9860088401528560288401526020600060448560040160006000805160206148958339815191525af16128d9576128d9605874051d1c985b9cd9995c8815d155120819985a5b195960421b611fe0565b85600484015260206000602485600073d99cae3fac551f6b6ba7b9f19bdd316951eeee985af161292b5761292b60577c13776974686472617720455448206661696c6564000000000000000000611fe0565b600080600080898b5af16129615761296160577c137472616e7366657220455448206661696c6564000000000000000000611fe0565b612ba4565b60009350600160ff1b82168015612a1857600160fc1b831615612a13576770a082310dfe168160c01b8452602060006004866004016001600160a01b0387165afa6129cc576129cc605672049d1bdad95b8c0818d85b1b0819985a5b195960521b611fe0565b600051955087846004015260206000602486895afa612a0d57612a0d60567c15746f6b656e302062616c616e6365206661696c656400000000000000611fe0565b60005194505b612ab4565b600160fd1b831615612ab4576770a08231d21220a760c01b8452602060006004866004016001600160a01b0387165afa612a6d57612a6d605672049d1bdad95b8c4818d85b1b0819985a5b195960521b611fe0565b600051955087846004015260206000602486895afa612aae57612aae60597c15746f6b656e312062616c616e6365206661696c656400000000000000611fe0565b60005194505b50612aec8763ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a612505565b95508460001060018114612b5557600160ff1b83168015612b2d57612b266770a082310dfe168160c01b6001600160a01b038616876123f2565b9650612b4f565b612b4c6770a08231d21220a760c01b6001600160a01b038616876123f2565b96505b50612ba2565b6770a082310dfe168160c01b845287846004015260206000602486895afa612b9a57612b9a6058740519d95d0818985b185b98d953d98819985a5b195960421b611fe0565b846000510396505b505b505088841015612bd657612bd6605a7c164d696e2072657475726e206e6f742072656163686564000000000000611fe0565b8a81528260208201523260408201528960608201528360808201526000805160206148b583398151915260a082a1505050979650505050505050565b600080613024565b6000846001600160ff1b031015612c3c57630b3f79fd60e41b60005260046000fd5b604051600160ff1b8516156001600160a01b0386168160018114612cc957630251596160e31b8452600484018681526000602082015289604082015273fffd8963efd1fc6a506488495d951d5263988d25606082015260a06080820152602060a08201528760c08201525060008060e4866000865af180612cbd5760206000fd5b5060206000803e612d25565b630251596160e31b845260048401868152600160208201528960408201526401000276a4606082015260a06080820152602060a08201528760c08201525060008060e4866000865af180612d1d5760206000fd5b5060208060003e5b505050506000519050600160ff1b811015612d4b576322323ba760e21b60005260046000fd5b19600101949350505050565b600181341003612d7257631841b4e160e01b60005260046000fd5b600080600080846000805160206148958339815191525af1806114d4576114d460577c1357455448206465706f736974206661696c6564000000000000000000611fe0565b60405160048101672e1a7d4da9059cbb60c01b825273d99cae3fac551f6b6ba7b9f19bdd316951eeee98600482015283602482015260008060448360006000805160206148958339815191525af1905080612e3457612e3460587c147472616e736665722077657468206661696c65640000000000000000611fe0565b836004830152600080602484600073d99cae3fac551f6b6ba7b9f19bdd316951eeee985af1905080612e8857612e8860587c1477697468647261772077657468206661696c65640000000000000000611fe0565b60008060008087875af1905080612eb957612eb9605571045cd95b9908195d1a195c8819985a5b1959605a1b611fe0565b50505050565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b8152600080600483865afa905080612f0e57612f0e6055710459d95d081d1bdad95b8c0819985a5b1959605a1b611fe0565b5060206000803e505060005190565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b81526000806004808401865afa905080612f0e57612f0e6054710459d95d081d1bdad95b8c4819985a5b1959605a1b611fe0565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8085612fba578235600160ff1b81161560018114612fab57612fa482612f1d565b9350612fb7565b612fb482612ebf565b93505b50505b86612ff0578335600160ff1b81161560018114612fe157612fda82612ebf565b9250612fed565b612fea82612f1d565b92505b50505b604051826000528160205232604052856080526000805160206148b583398151915260a06000a16040525095945050505050565b83601f19602085028201018480613046576333f3e07b60e11b60005260046000fd5b5060003411801561305e5761305a89612d57565b309a505b88606052825b82811015613086576130798a82358e30612c1a565b309c509950602001613064565b506000600160fd1b8335161180600181146130a65780156130c4576130d4565b6130b38b85358f30612c1a565b96506130bf878d612db7565b6130d4565b6130d18b85358f8f612c1a565b96505b508886101561310557613105605a7c164d696e2072657475726e206e6f742072656163686564000000000000611fe0565b6131128183888688612f6e565b945050505050965096945050505050565b600054610100900460ff1661314a5760405162461bcd60e51b8152600401610223906145fa565b610b5b33611955565b600054610100900460ff166117ef5760405162461bcd60e51b8152600401610223906145fa565b60006131858361320e565b1561319b57506001600160a01b03811631613208565b6040516370a0823160e01b81526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa1580156131e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061320591906144cd565b90505b92915050565b6001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1490565b600061326a83836000818110613248576132486144fc565b905060200281019061325a91906146e1565b608001356001600160a01b031690565b905060008083815b818110156133dd5780156132b057613295878783818110613248576132486144fc565b94506132aa6001600160a01b0386163061317a565b9750309a505b306132bc6001846145e7565b821480156132c8575089155b156132d45750896133a1565b6132df6001846145e7565b8210801561332a575087876132f5846001614645565b818110613304576133046144fc565b905060200281019061331691906146e1565b613324906020810190614658565b90506001145b1561339c57878761333c846001614645565b81811061334b5761334b6144fc565b905060200281019061335d91906146e1565b61336b906020810190614658565b600081811061337c5761337c6144fc565b9050602002016020810190613391919061407f565b9050600194506133a1565b600094505b6133d18c828b8b8b878181106133b9576133b96144fc565b90506020028101906133cb91906146e1565b8861389a565b50839250600101613272565b5050505050505050505050565b6133fc826001600160a01b031661320e565b15613624576040516370a0823160e01b8152306004820152600090600080516020614895833981519152906370a0823190602401602060405180830381865afa15801561344d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061347191906144cd565b9050801561356a5760405163a9059cbb60e01b815273d99cae3fac551f6b6ba7b9f19bdd316951eeee986004820152602481018290526000805160206148958339815191529063a9059cbb906044016020604051808303816000875af11580156134df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061350391906146f7565b50604051632e1a7d4d60e01b81526004810182905273d99cae3fac551f6b6ba7b9f19bdd316951eeee9890632e1a7d4d90602401600060405180830381600087803b15801561355157600080fd5b505af1158015613565573d6000803e3d6000fd5b505050505b6001600160a01b0382163014610b4457478015612eb9576000836001600160a01b03168260405160006040518083038185875af1925050503d80600081146135ce576040519150601f19603f3d011682016040523d82523d6000602084013e6135d3565b606091505b5050905080611ea25760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610223565b6001600160a01b03811630146114d4576040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa15801561367b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061369f91906144cd565b90508015610b4457610b4483838361167c565b606060048351106137e35760208301516001600160e01b0319811662461bcd60e51b1480156136e357506044845110155b1561378357602484810151808601820180519192909190613705908490614645565b61370f9190614645565b865110156137575760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b2103932bb32b93a103932b0b9b7b760591b6044820152606401610223565b848160405160200161376a929190614714565b6040516020818303038152906040529350505050613208565b6001600160e01b03198116634e487b7160e01b1480156137a4575083516024145b156137e1576024840151836137b882613b8e565b6040516020016137c9929190614763565b60405160208183030381529060405292505050613208565b505b816137ed84613bb6565b6040516020016137fe929190614798565b604051602081830303815290604052905092915050565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee83146001811461388f57604051602481016040526370a0823160e01b815283600482015260206000602483885afa905080613884576138846058740519d95d0818985b185b98d953d98819985a5b195960421b611fe0565b506000519150613893565b4791505b5092915050565b60808201356001600160a01b03166000806138b58580614658565b9050905060005b818110156116715760006138d36040880188614658565b838181106138e3576138e36144fc565b60200291909101359150506001600160a01b038116600160ff1b821661ffff60a084901c166139128188614645565b965061391f6001876145e7565b8503613986576127108711156139865760405162461bcd60e51b815260206004820152602660248201527f746f74616c5765696768742063616e206e6f7420657863656564203130303030604482015265081b1a5b5a5d60d21b6064820152608401610223565b886139f557600081612710146139b2576127106139a3838e614528565b6139ad919061453f565b6139b4565b8b5b90506139f38e6139c760208e018e614658565b898181106139d7576139d76144fc565b90506020020160208101906139ec919061407f565b8b84613d9d565b505b8115613abf57613a058a80614658565b86818110613a1557613a156144fc565b9050602002016020810190613a2a919061407f565b6001600160a01b0316636f7929f28d85613a4760608f018f614658565b8a818110613a5757613a576144fc565b9050602002810190613a6991906147e9565b6040518563ffffffff1660e01b8152600401613a88949392919061482f565b600060405180830381600087803b158015613aa257600080fd5b505af1158015613ab6573d6000803e3d6000fd5b50505050613b7f565b613ac98a80614658565b86818110613ad957613ad96144fc565b9050602002016020810190613aee919061407f565b6001600160a01b03166330e6ae318d85613b0b60608f018f614658565b8a818110613b1b57613b1b6144fc565b9050602002810190613b2d91906147e9565b6040518563ffffffff1660e01b8152600401613b4c949392919061482f565b600060405180830381600087803b158015613b6657600080fd5b505af1158015613b7a573d6000803e3d6000fd5b505050505b846001019450505050506138bc565b606061320882604051602001613ba691815260200190565b6040516020818303038152906040525b80516060906f181899199a1a9b1b9c1cb0b131b232b360811b90600090613bde906002614528565b613be9906002614645565b6001600160401b03811115613c0057613c006144e6565b6040519080825280601f01601f191660200182016040528015613c2a576020820181803683370190505b509050600360fc1b81600081518110613c4557613c456144fc565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613c7457613c746144fc565b60200101906001600160f81b031916908160001a90535060005b8451811015613d9557826004868381518110613cac57613cac6144fc565b01602001516001600160f81b031916901c60f81c60108110613cd057613cd06144fc565b1a60f81b82613ce0836002614528565b613ceb906002614645565b81518110613cfb57613cfb6144fc565b60200101906001600160f81b031916908160001a90535082858281518110613d2557613d256144fc565b60209101015160f81c600f1660108110613d4157613d416144fc565b1a60f81b82613d51836002614528565b613d5c906003614645565b81518110613d6c57613d6c6144fc565b60200101906001600160f81b031916908160001a90535080613d8d8161487b565b915050613c8e565b509392505050565b306001600160a01b03851603613dbd57613db882848361167c565b612eb9565b60405163052f523360e11b81526001600160a01b0380841660048301528086166024830152841660448201526064810182905273e9bbd6ec0c9ca71d3dccd1282ee9de4f811e50af90630a5ea46690608401600060405180830381600087803b158015613e2957600080fd5b505af1158015613e3d573d6000803e3d6000fd5b5050505050505050565b60008060408385031215613e5a57600080fd5b50508035926020909101359150565b6001600160a01b0381168114610d2b57600080fd5b600060a08284031215613e9057600080fd5b50919050565b60008083601f840112613ea857600080fd5b5081356001600160401b03811115613ebf57600080fd5b6020830191508360208260051b8501011115613eda57600080fd5b9250929050565b60008060008060008060008060006101408a8c031215613f0057600080fd5b8935985060208a0135613f1281613e69565b9750613f218b60408c01613e7e565b965060e08a01356001600160401b0380821115613f3d57600080fd5b613f498d838e01613e96565b90985096506101008c0135915080821115613f6357600080fd5b613f6f8d838e01613e96565b90965094506101208c0135915080821115613f8957600080fd5b50613f968c828d01613e96565b915080935050809150509295985092959850929598565b60008060008060008060a08789031215613fc657600080fd5b8635955060208701359450604087013593506060870135613fe681613e69565b925060808701356001600160401b0381111561400157600080fd5b61400d89828a01613e96565b979a9699509497509295939492505050565b60008060008060006080868803121561403757600080fd5b85359450602086013593506040860135925060608601356001600160401b0381111561406257600080fd5b61406e88828901613e96565b969995985093965092949392505050565b60006020828403121561409157600080fd5b81356123e481613e69565b6000806000606084860312156140b157600080fd5b83356140bc81613e69565b925060208401356140cc81613e69565b929592945050506040919091013590565b8015158114610d2b57600080fd5b600080604083850312156140fe57600080fd5b823561410981613e69565b91506020830135614119816140dd565b809150509250929050565b600080600080600080600080610120898b03121561414157600080fd5b883597506141528a60208b01613e7e565b965060c08901356001600160401b038082111561416e57600080fd5b61417a8c838d01613e96565b909850965060e08b013591508082111561419357600080fd5b61419f8c838d01613e96565b90965094506101008b01359150808211156141b957600080fd5b506141c68b828c01613e96565b999c989b5096995094979396929594505050565b600080600080600080600080610120898b0312156141f757600080fd5b6142018a8a613e7e565b975060a08901356001600160401b038082111561421d57600080fd5b6142298c838d01613e96565b909950975060c08b013591508082111561424257600080fd5b61424e8c838d01613e96565b909750955060e08b013591508082111561426757600080fd5b506142748b828c01613e96565b90945092505061010089013561428981613e69565b809150509295985092959890939650565b6000602082840312156142ac57600080fd5b5035919050565b60008083601f8401126142c557600080fd5b5081356001600160401b038111156142dc57600080fd5b602083019150836020828501011115613eda57600080fd5b60008060008060008060008060c0898b03121561431057600080fd5b88359750602089013561432281613e69565b9650604089013595506060890135945060808901356001600160401b038082111561434c57600080fd5b6143588c838d01613e96565b909650945060a08b013591508082111561437157600080fd5b506141c68b828c016142b3565b6000806000806060858703121561439457600080fd5b843593506020850135925060408501356001600160401b038111156143b857600080fd5b6143c4878288016142b3565b95989497509550505050565b6020808252600e908201526d149bdd5d194e88195e1c1a5c995960921b604082015260600190565b60005b838110156144135781810151838201526020016143fb565b50506000910152565b602081526000825180602084015261443b8160408501602087016143f8565b601f01601f19169190910160400192915050565b6020808252600d908201526c6f6e6c79207072696f7269747960981b604082015260600190565b6000806040838503121561448957600080fd5b825161449481613e69565b602084015190925061411981613e69565b6020808252600e908201526d6e6f74206164647265737328302960901b604082015260600190565b6000602082840312156144df57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761320857613208614512565b60008261455c57634e487b7160e01b600052601260045260246000fd5b500490565b600060a0828403121561457357600080fd5b60405160a081018181106001600160401b03821117156145a357634e487b7160e01b600052604160045260246000fd5b6040528235815260208301356145b881613e69565b806020830152506040830135604082015260608301356060820152608083013560808201528091505092915050565b8181038181111561320857613208614512565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b8082018082111561320857613208614512565b6000808335601e1984360301811261466f57600080fd5b8301803591506001600160401b0382111561468957600080fd5b6020019150600581901b3603821315613eda57600080fd5b6001600160e01b031984168152818360048301376000910160040190815292915050565b600082516146d78184602087016143f8565b9190910192915050565b60008235609e198336030181126146d757600080fd5b60006020828403121561470957600080fd5b81516123e4816140dd565b600083516147268184602088016143f8565b6508ae4e4dee4560d31b90830190815283516147498160068401602088016143f8565b602960f81b60069290910191820152600701949350505050565b600083516147758184602088016143f8565b650a0c2dcd2c6560d31b90830190815283516147498160068401602088016143f8565b600083516147aa8184602088016143f8565b670aadcd6dcdeeedc560c31b90830190815283516147cf8160088401602088016143f8565b602960f81b60089290910191820152600901949350505050565b6000808335601e1984360301811261480057600080fd5b8301803591506001600160401b0382111561481a57600080fd5b602001915036819003821315613eda57600080fd5b6001600160a01b0385811682528416602082015260606040820181905281018290526000828460808401376000608084840101526080601f19601f850116830101905095945050505050565b60006001820161488d5761488d614512565b506001019056fe00000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab11bb43f2da90e35f7b0cf38521ca95a49e68eb42fac49924930a5bd73cdf7576c7724394874fdd8ad13292ec739b441f85c6559f10dc4141b8d4c0fa4cbf55bdba26469706673582212206a61d305012e1a61ccceedbafd468049f63af94f7cdcb4f2eb652571693f392b64736f6c63430008110033