10 txs
20 calls
constructor
constructor(address _owner, address _weth, address _wooRouter, address _sgInfo)
functions
bridgeSlippage
viewfunction bridgeSlippage() view returns (uint256)
dstExternalFeeRate
viewfunction dstExternalFeeRate() view returns (uint16)
ETH_PLACEHOLDER_ADDR
viewfunction ETH_PLACEHOLDER_ADDR() view returns (address)
FEE_BASE
viewfunction FEE_BASE() view returns (uint256)
feeAddr
viewfunction feeAddr() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
quoteLayerZeroFee
viewfunction quoteLayerZeroFee(uint256 refId, address to, tuple srcInfos, tuple dstInfos, tuple dstExtSwapInfo) view returns (uint256, uint256)
sgInfo
viewfunction sgInfo() view returns (address)
srcExternalFeeRate
viewfunction srcExternalFeeRate() view returns (uint16)
weth
viewfunction weth() view returns (address)
wooCrossRouters
viewfunction wooCrossRouters(uint32) view returns (address)
wooRouter
viewfunction wooRouter() view returns (address)
claimFee
nonpayablefunction claimFee(address token)
crossSwap
payablefunction crossSwap(uint256 refId, address to, tuple srcInfos, tuple dstInfos, tuple srcExtSwapInfo, tuple dstExtSwapInfo) payable
inCaseTokenGotStuck
nonpayablefunction inCaseTokenGotStuck(address stuckToken)
lzCompose
payablefunction lzCompose(address _from, bytes32, bytes _message, address, bytes) payable
pause
nonpayablefunction pause()
renounceOwnership
nonpayablefunction renounceOwnership()
setBridgeSlippage
nonpayablefunction setBridgeSlippage(uint256 _bridgeSlippage)
setFeeAddr
nonpayablefunction setFeeAddr(address _feeAddr)
setWooCrossRouter
nonpayablefunction setWooCrossRouter(uint32 _eid, address _crossRouter)
setWooRouter
nonpayablefunction setWooRouter(address _wooRouter)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
events
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
Unpaused
event Unpaused(address account)
WooCrossSwapOnDstChain
event WooCrossSwapOnDstChain(uint256 indexed refId, address indexed sender, address indexed to, address bridgedToken, uint256 bridgedAmount, address toToken, address realToToken, uint256 minToAmount, uint256 realToAmount, uint8 swapType, uint256 fee)
WooCrossSwapOnSrcChain
event WooCrossSwapOnSrcChain(uint256 indexed refId, address indexed sender, address indexed to, address fromToken, uint256 fromAmount, address bridgeToken, uint256 minBridgeAmount, uint256 realBridgeAmount, uint8 swapType, uint256 fee)
errors
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
InvalidOptionType
error InvalidOptionType(uint16 optionType)
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
creation bytecode
0x60a06040523480156200001157600080fd5b50604051620050073803806200500783398101604081905262000034916200013f565b836001600160a01b0381166200006457604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200006f81620000d2565b506000805460ff60a01b19169055600180556001600160a01b03928316608052600280549284166001600160a01b031993841617905560038054919093169116179055506064600555600680546219001963ffffffff199091161790556200019c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200013a57600080fd5b919050565b600080600080608085870312156200015657600080fd5b620001618562000122565b9350620001716020860162000122565b9250620001816040860162000122565b9150620001916060860162000122565b905092959194509250565b608051614ded6200021a6000396000818161026e01528181612cdb01528181612d5c01528181612db201528181612e4101528181612f0101528181612f87015281816130380152818161307a01528181613109015281816132ef0152818161336b015281816134290152818161346b01526134fa0152614ded6000f3fe60806040526004361061019a5760003560e01c806383af5550116100e1578063d0a102601161008a578063ecb911de11610064578063ecb911de146104e3578063ecefc705146104fe578063f2fde38b14610515578063fdeba4e51461053557600080fd5b8063d0a1026014610490578063d6b4c897146104a3578063e1a4e72a146104c357600080fd5b80638da5cb5b116100bb5780638da5cb5b14610411578063b2855b4f1461043c578063b92921411461045c57600080fd5b806383af5550146103b05780638456cb59146103d457806388c4cb36146103e957600080fd5b80634dba39a21161014357806369d2299c1161011d57806369d2299c146103385780636ebc51e11461037b578063715018a61461039b57600080fd5b80634dba39a2146102b057806358800adf146102d05780635c975abb146102fd57600080fd5b80633f4ba83a116101745780633f4ba83a146102475780633fc8cef31461025c578063403a01e51461029057600080fd5b8063117acd17146101a65780631b445c61146101e057806339e7fddc146101f557600080fd5b366101a157005b600080fd5b3480156101b257600080fd5b506101c66101c136600461412f565b610562565b604080519283526020830191909152015b60405180910390f35b6101f36101ee3660046142a1565b610924565b005b34801561020157600080fd5b506004546102229073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d7565b34801561025357600080fd5b506101f3611379565b34801561026857600080fd5b506102227f000000000000000000000000000000000000000000000000000000000000000081565b34801561029c57600080fd5b506101f36102ab3660046143aa565b61138b565b3480156102bc57600080fd5b506101f36102cb3660046143c3565b61142a565b3480156102dc57600080fd5b506003546102229073ffffffffffffffffffffffffffffffffffffffff1681565b34801561030957600080fd5b5060005474010000000000000000000000000000000000000000900460ff1660405190151581526020016101d7565b34801561034457600080fd5b506102226103533660046143f2565b60076020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b34801561038757600080fd5b506101f36103963660046143c3565b61151c565b3480156103a757600080fd5b506101f361164e565b3480156103bc57600080fd5b506103c660055481565b6040519081526020016101d7565b3480156103e057600080fd5b506101f3611660565b3480156103f557600080fd5b5061022273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b34801561041d57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610222565b34801561044857600080fd5b506101f36104573660046143c3565b611670565b34801561046857600080fd5b5060065461047d9062010000900461ffff1681565b60405161ffff90911681526020016101d7565b6101f361049e366004614458565b6116bf565b3480156104af57600080fd5b506101f36104be3660046144f9565b611ad2565b3480156104cf57600080fd5b506101f36104de3660046143c3565b611bd7565b3480156104ef57600080fd5b5060065461047d9061ffff1681565b34801561050a57600080fd5b506103c6620186a081565b34801561052157600080fd5b506101f36105303660046143c3565b611cc8565b34801561054157600080fd5b506002546102229073ffffffffffffffffffffffffffffffffffffffff1681565b60008080878761057860408801602089016143c3565b6105886060890160408a016143c3565b8860600135886040516020016105a396959493929190614620565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905290506000610634816105e960c0890160a08a01614679565b600061062c604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b929190611d29565b9050600061064860a0880160808901614679565b6fffffffffffffffffffffffffffffffff1611156106955761069361067360a0880160808901614679565b73ffffffffffffffffffffffffffffffffffffffff8a165b839190611dac565b505b6040805160e08101909152600090806106b160208a018a6143f2565b63ffffffff168152602001610706600760008b60000160208101906106d691906143f2565b63ffffffff16815260208101919091526040016000205473ffffffffffffffffffffffffffffffffffffffff1690565b8152602001896060013581526020016107228a60600135611e30565b81526020808201859052604080830187905280518083018252600080825260609094015260035481517f42407dc40000000000000000000000000000000000000000000000000000000081529151949550929373ffffffffffffffffffffffffffffffffffffffff9093169263bb0d15fe9284926342407dc492600480830193928290030181865afa1580156107bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e091906146ab565b6107f060408d0160208e016143c3565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815263ffffffff92909216600483015273ffffffffffffffffffffffffffffffffffffffff166024820152604401602060405180830381865afa158015610865573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088991906146c8565b905060008173ffffffffffffffffffffffffffffffffffffffff16633b6f743b8460006040518363ffffffff1660e01b81526004016108c99291906147c9565b6040805180830381865afa1580156108e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610909919061481d565b8051602090910151909d909c509a5050505050505050505050565b61092c611e5f565b610934611eb4565b73ffffffffffffffffffffffffffffffffffffffff85166109b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f576f6f43726f7373436861696e526f7574657256353a2021746f00000000000060448201526064015b60405180910390fd5b835173ffffffffffffffffffffffffffffffffffffffff16610a5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f576f6f43726f7373436861696e526f7574657256353a2021737263496e666f7360448201527f2e66726f6d546f6b656e0000000000000000000000000000000000000000000060648201526084016109ad565b6000610a6c60608501604086016143c3565b73ffffffffffffffffffffffffffffffffffffffff1603610b0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f576f6f43726f7373436861696e526f7574657256353a2021647374496e666f7360448201527f2e746f546f6b656e00000000000000000000000000000000000000000000000060648201526084016109ad565b600354604080517f42407dc4000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163bb0d15fe9183916342407dc49160048083019260209291908290030181865afa158015610b87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bab91906146ab565b60208801516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815263ffffffff92909216600483015273ffffffffffffffffffffffffffffffffffffffff166024820152604401602060405180830381865afa158015610c25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4991906146c8565b73ffffffffffffffffffffffffffffffffffffffff1603610cec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f576f6f43726f7373436861696e526f7574657256353a2021737263496e666f7360448201527f2e627269646765546f6b656e000000000000000000000000000000000000000060648201526084016109ad565b8351600090819073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff111111111111111111111111111111111111111201610dc8573486604001511115610dc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f576f6f43726f7373436861696e526f7574657256353a2021737263496e666f7360448201527f2e66726f6d416d6f756e7400000000000000000000000000000000000000000060648201526084016109ad565b610ddc565b610ddc866000015133308960400151611ef7565b856020015173ffffffffffffffffffffffffffffffffffffffff16866000015173ffffffffffffffffffffffffffffffffffffffff16146110705785516002546040880151610e42929173ffffffffffffffffffffffffffffffffffffffff1690612068565b855160009073ffffffffffffffffffffffffffffffffffffffff1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14610e7e576000610e84565b86604001515b90506000610e9560208701876143c3565b73ffffffffffffffffffffffffffffffffffffffff1614610f9f5760025473ffffffffffffffffffffffffffffffffffffffff1663199b83fa82610edc60208901896143c3565b610ee960208a018a6143c3565b8b600001518c602001518d604001518e60600151308e8060200190610f0e9190614839565b6040518b63ffffffff1660e01b8152600401610f329998979695949392919061489e565b60206040518083038185885af1158015610f50573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f75919061490d565b600654909350620186a090610f8e9061ffff1685614955565b610f98919061496c565b915061106a565b600254875160208901516040808b015160608c015191517f7dc2038200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff94851660048201529284166024840152604483015260648201523060848201528a821660a4820152911690637dc2038290839060c40160206040518083038185885af1158015611042573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611067919061490d565b92505b5061110f565b8560600151866040015114611107576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f576f6f43726f7373436861696e526f7574657256353a2021737263496e666f7360448201527f2e6d696e427269646765416d6f756e740000000000000000000000000000000060648201526084016109ad565b856040015191505b8161111e8760200151306121d8565b10156111ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f576f6f43726f7373436861696e526f7574657256353a202142616c616e63655f60448201527f456e6f756768000000000000000000000000000000000000000000000000000060648201526084016109ad565b6111b681836149a7565b9150856060015182101561124c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f576f6f43726f7373436861696e526f7574657256353a2021737263496e666f7360448201527f2e6d696e427269646765416d6f756e740000000000000000000000000000000060648201526084016109ad565b61125a8888848989886122c0565b73ffffffffffffffffffffffffffffffffffffffff87163373ffffffffffffffffffffffffffffffffffffffff16897f546dc08c5438b68796e5047ad2ac863ab74300bdf49457917d47021f090c45c489600001518a604001518b602001518c6060015189600073ffffffffffffffffffffffffffffffffffffffff168d60000160208101906112ea91906143c3565b73ffffffffffffffffffffffffffffffffffffffff161461130c57600161130f565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9788168152602081019690965293909516928401929092526060830152608082015260ff90911660a082015260c0810186905260e00160405180910390a4505061137160018055565b505050505050565b611381612701565b611389612754565b565b611393612701565b612710811115611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f576f6f43726f7373436861696e526f7574657256353a20215f6272696467655360448201527f6c6970706167650000000000000000000000000000000000000000000000000060648201526084016109ad565b600555565b611432612701565b73ffffffffffffffffffffffffffffffffffffffff81166114d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f576f6f43726f7373436861696e526f7574657256353a20215f776f6f526f757460448201527f657200000000000000000000000000000000000000000000000000000000000060648201526084016109ad565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b611524611eb4565b60045473ffffffffffffffffffffffffffffffffffffffff166115a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f576f6f43726f7373436861696e526f7574657256353a2021666565416464720060448201526064016109ad565b60006115af82306121d8565b90508015611641577fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff83160161161c576004546116179073ffffffffffffffffffffffffffffffffffffffff16826127d1565b611641565b60045461164190839073ffffffffffffffffffffffffffffffffffffffff16836128ba565b5061164b60018055565b50565b611656612701565b6113896000612a23565b611668612701565b611389612a98565b611678612701565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600354604080517f42407dc4000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff16916342407dc49160048083019260209291908290030181865afa15801561172f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175391906146ab565b6003546040517f73f0c8f500000000000000000000000000000000000000000000000000000000815263ffffffff8316600482015291925073ffffffffffffffffffffffffffffffffffffffff16906373f0c8f590602401602060405180830381865afa1580156117c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ec91906146c8565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f576f6f43726f7373436861696e526f7574657256353a20494e56414c49445f4360448201527f414c4c455200000000000000000000000000000000000000000000000000000060648201526084016109ad565b60006118b28787612b07565b90506000806000806000806118c78d8d612b20565b8060200190518101906118da91906149ba565b6003546040517fbb0d15fe000000000000000000000000000000000000000000000000000000008152969c50949a509298509096509450925073ffffffffffffffffffffffffffffffffffffffff169063bb0d15fe90611967908b90889060040163ffffffff92909216825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b602060405180830381865afa158015611984573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a891906146c8565b73ffffffffffffffffffffffffffffffffffffffff168f73ffffffffffffffffffffffffffffffffffffffff1614611a62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f576f6f43726f7373436861696e526f7574657256353a20215f66726f6d5f737460448201527f617267617465000000000000000000000000000000000000000000000000000060648201526084016109ad565b7fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff851601611ab257611aad8686858a8686612b6b565b611ac1565b611ac1868685878b87876136d9565b505050505050505050505050505050565b611ada612701565b73ffffffffffffffffffffffffffffffffffffffff8116611b7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f576f6f43726f7373436861696e526f7574657256353a20215f63726f7373526f60448201527f757465720000000000000000000000000000000000000000000000000000000060648201526084016109ad565b63ffffffff91909116600090815260076020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b611bdf612701565b7fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff821601611c265761164b33476127d1565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015611c93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb7919061490d565b9050611cc48233836128ba565b5050565b611cd0612701565b73ffffffffffffffffffffffffffffffffffffffff8116611d20576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024016109ad565b61164b81612a23565b6060846003611d39826000613e4c565b61ffff1614611d8657611d4d816000613e4c565b6040517f3a51740d00000000000000000000000000000000000000000000000000000000815261ffff90911660048201526024016109ad565b6000611d93868686613ecc565b9050611da187600383613fd8565b979650505050505050565b6060836003611dbc826000613e4c565b61ffff1614611dd057611d4d816000613e4c565b60408051608086901b7fffffffffffffffffffffffffffffffff000000000000000000000000000000001660208201526030808201869052825180830390910181526050909101909152611e2686600283613fd8565b9695505050505050565b6000612710600554612710611e4591906149a7565b611e4f9084614955565b611e59919061496c565b92915050565b60005474010000000000000000000000000000000000000000900460ff1615611389576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260015403611ef0576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600155565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691611f969190614afa565b6000604051808303816000865af19150503d8060008114611fd3576040519150601f19603f3d011682016040523d82523d6000602084013e611fd8565b606091505b50915091508180156120025750805115806120025750808060200190518101906120029190614b16565b611371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f535446000000000000000000000000000000000000000000000000000000000060448201526064016109ad565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905291516000928392908716916120ff9190614afa565b6000604051808303816000865af19150503d806000811461213c576040519150601f19603f3d011682016040523d82523d6000602084013e612141565b606091505b509150915081801561216b57508051158061216b57508080602001905181019061216b9190614b16565b6121d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f534100000000000000000000000000000000000000000000000000000000000060448201526064016109ad565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146122a0576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528416906370a0823190602401602060405180830381865afa158015612277573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229b919061490d565b6122b9565b8173ffffffffffffffffffffffffffffffffffffffff16315b9392505050565b600086866122d460408601602087016143c3565b6122e460608701604088016143c3565b8660600135866040516020016122ff96959493929190614620565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905290506000612345816105e960c0870160a08801614679565b9050600061235960a0860160808701614679565b6fffffffffffffffffffffffffffffffff1611156123a2576123a061238460a0860160808701614679565b73ffffffffffffffffffffffffffffffffffffffff891661068b565b505b600354604080517f42407dc4000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163bb0d15fe9183916342407dc49160048083019260209291908290030181865afa15801561241a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243e91906146ab565b60208901516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815263ffffffff92909216600483015273ffffffffffffffffffffffffffffffffffffffff166024820152604401602060405180830381865afa1580156124b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124dc91906146c8565b602087015190915073ffffffffffffffffffffffffffffffffffffffff1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146125235761252386602001518289612068565b6040805160e081019091526000908061253f60208901896143f2565b63ffffffff168152602001612564600760008a60000160208101906106d691906143f2565b81526020018981526020016125788a611e30565b815260200184815260200185815260200160405180602001604052806000815250815250905060008273ffffffffffffffffffffffffffffffffffffffff16633b6f743b8360006040518363ffffffff1660e01b81526004016125dc9291906147c9565b6040805180830381865afa1580156125f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261c919061481d565b90508273ffffffffffffffffffffffffffffffffffffffff1663c7c7f5b373eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168a6020015173ffffffffffffffffffffffffffffffffffffffff161461268c57825161268e565b345b8484326040518563ffffffff1660e01b81526004016126af93929190614b38565b60c06040518083038185885af11580156126cd573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126f29190614b82565b50505050505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611389576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016109ad565b61275c614043565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040516128089190614afa565b60006040518083038185875af1925050503d8060008114612845576040519150601f19603f3d011682016040523d82523d6000602084013e61284a565b606091505b50509050806128b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f535445000000000000000000000000000000000000000000000000000000000060448201526064016109ad565b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916129519190614afa565b6000604051808303816000865af19150503d806000811461298e576040519150601f19603f3d011682016040523d82523d6000602084013e612993565b606091505b50915091508180156129bd5750805115806129bd5750808060200190518101906129bd9190614b16565b6121d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f535400000000000000000000000000000000000000000000000000000000000060448201526064016109ad565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612aa0611e5f565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586127a73390565b6000612b17602c600c8486614c16565b6122b991614c40565b6060612b2f82604c8186614c16565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b3373ffffffffffffffffffffffffffffffffffffffff85167fffffffffffffffffffffffff111111111111111111111111111111111111111201612cd957612bb386856127d1565b8573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16887fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee888a73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8a8c600073ffffffffffffffffffffffffffffffffffffffff168c6000015173ffffffffffffffffffffffffffffffffffffffff1614612c70576001612c73565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152602081019790975294871686860152929095166060850152608084015260a083019390935260ff90921660c0820152600060e08201529051908190036101000190a450611371565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015612d4157600080fd5b505af1158015612d55573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612ea157612dd87f000000000000000000000000000000000000000000000000000000000000000087866128ba565b8573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16887fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee888a7f00000000000000000000000000000000000000000000000000000000000000008a8c600073ffffffffffffffffffffffffffffffffffffffff168c6000015173ffffffffffffffffffffffffffffffffffffffff1614612c70576001612c73565b815173ffffffffffffffffffffffffffffffffffffffff16156132e657600654600090620186a090612edd9062010000900461ffff1687614955565b612ee7919061496c565b90506000612ef582876149a7565b600254909150612f3d907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff1683612068565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663199b83fa856000015186600001517f00000000000000000000000000000000000000000000000000000000000000008b868b8f8c602001516040518963ffffffff1660e01b8152600401612fd2989796959493929190614c7c565b6020604051808303816000875af192505050801561302b575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526130289181019061490d565b60015b6131d157600254613075907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff166000612068565b6130a07f000000000000000000000000000000000000000000000000000000000000000089886128ba565b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168a7fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8a8c7f00000000000000000000000000000000000000000000000000000000000000008c8e600073ffffffffffffffffffffffffffffffffffffffff168e6000015173ffffffffffffffffffffffffffffffffffffffff161461316957600161316c565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152602081019790975294871686860152929095166060850152608084015260a083019390935260ff90921660c0820152600060e08201529051908190036101000190a46132df565b8873ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168b7fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee868d8e8d89600073ffffffffffffffffffffffffffffffffffffffff168f6000015173ffffffffffffffffffffffffffffffffffffffff161461327a57600161327d565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152602081019790975294871686860152929095166060850152608084015260a083019390935260ff90921660c082015260e081018990529051908190036101000190a4505b50506136d0565b60025461332b907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff1686612068565b6002546040517f7dc2038200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152878116602483015260448201879052606482018690528881166084830181905260a483015290911690637dc203829060c4016020604051808303816000875af192505050801561341c575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526134199181019061490d565b60015b6135c257600254613466907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff166000612068565b6134917f000000000000000000000000000000000000000000000000000000000000000087866128ba565b8573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16887fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee888a7f00000000000000000000000000000000000000000000000000000000000000008a8c600073ffffffffffffffffffffffffffffffffffffffff168c6000015173ffffffffffffffffffffffffffffffffffffffff161461355a57600161355d565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152602081019790975294871686860152929095166060850152608084015260a083019390935260ff90921660c0820152600060e08201529051908190036101000190a46136d0565b8673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16897fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee898b8c8b89600073ffffffffffffffffffffffffffffffffffffffff168d6000015173ffffffffffffffffffffffffffffffffffffffff161461366b57600161366e565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152602081019790975294871686860152929095166060850152608084015260a083019390935260ff90921660c0820152600060e08201529051908190036101000190a4505b50505050505050565b3373ffffffffffffffffffffffffffffffffffffffff80861690871603613802576137058588866128ba565b8673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16897fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c88888b8c8a8c600073ffffffffffffffffffffffffffffffffffffffff168c6000015173ffffffffffffffffffffffffffffffffffffffff161461379a57600161379d565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152602081019790975294871686860152929095166060850152608084015260a083019390935260ff90921660c0820152600060e08201529051908190036101000190a4613e42565b815173ffffffffffffffffffffffffffffffffffffffff1615613b8857600654600090620186a09061383e9062010000900461ffff1687614955565b613848919061496c565b905061385481866149a7565b60025490955061387c90879073ffffffffffffffffffffffffffffffffffffffff1687612068565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663199b83fa84600001518560000151898b8a8a8f8b602001516040518963ffffffff1660e01b81526004016138f1989796959493929190614c7c565b6020604051808303816000875af192505050801561394a575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526139479181019061490d565b60015b613a885760025461397490879073ffffffffffffffffffffffffffffffffffffffff166000612068565b61397e8186614ce9565b945061398b8689876128ba565b8773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168a7fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c89898c8c8b8d600073ffffffffffffffffffffffffffffffffffffffff168d6000015173ffffffffffffffffffffffffffffffffffffffff1614613a20576001613a23565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152602081019790975294871686860152929095166060850152608084015260a083019390935260ff90921660c0820152600060e08201529051908190036101000190a4613b82565b8873ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168b7fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c8a8a8d8e8c89600073ffffffffffffffffffffffffffffffffffffffff168e6000015173ffffffffffffffffffffffffffffffffffffffff1614613b1d576001613b20565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152602081019790975294871686860152929095166060850152608084015260a083019390935260ff90921660c082015260e081018890529051908190036101000190a4505b50613e42565b600254613bad90869073ffffffffffffffffffffffffffffffffffffffff1686612068565b6002546040517f7dc2038200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152888116602483015260448201879052606482018690528981166084830181905260a483015290911690637dc203829060c4016020604051808303816000875af1925050508015613c7e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252613c7b9181019061490d565b60015b613d4857600254613ca890869073ffffffffffffffffffffffffffffffffffffffff166000612068565b613cb38588866128ba565b8673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16897fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c88888b8b8a8c600073ffffffffffffffffffffffffffffffffffffffff168c6000015173ffffffffffffffffffffffffffffffffffffffff161461379a57600161379d565b8773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168a7fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c89898c8d8b89600073ffffffffffffffffffffffffffffffffffffffff168d6000015173ffffffffffffffffffffffffffffffffffffffff1614613ddd576001613de0565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152602081019790975294871686860152929095166060850152608084015260a083019390935260ff90921660c0820152600060e08201529051908190036101000190a4505b5050505050505050565b6000613e59826002614ce9565b83511015613ec3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e647300000000000000000000000060448201526064016109ad565b50016002015190565b60606fffffffffffffffffffffffffffffffff821615613f62576040517fffff00000000000000000000000000000000000000000000000000000000000060f086901b1660208201527fffffffffffffffffffffffffffffffff00000000000000000000000000000000608085811b8216602284015284901b166032820152604201604051602081830303815290604052613fd0565b6040517fffff00000000000000000000000000000000000000000000000000000000000060f086901b1660208201527fffffffffffffffffffffffffffffffff00000000000000000000000000000000608085901b1660228201526032016040516020818303038152906040525b949350505050565b6060836003613fe8826000613e4c565b61ffff1614613ffc57611d4d816000613e4c565b8460016140098551614097565b614014906001614cfc565b868660405160200161402a959493929190614d1e565b6040516020818303038152906040529150509392505050565b60005474010000000000000000000000000000000000000000900460ff16611389576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061ffff8211156140df576040517f6dfcc65000000000000000000000000000000000000000000000000000000000815260106004820152602481018390526044016109ad565b5090565b73ffffffffffffffffffffffffffffffffffffffff8116811461164b57600080fd5b600060c0828403121561411757600080fd5b50919050565b60006040828403121561411757600080fd5b60008060008060008587036101a081121561414957600080fd5b86359550602087013561415b816140e3565b945060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08201121561418d57600080fd5b506040860192506141a18760c08801614105565b915061018086013567ffffffffffffffff8111156141be57600080fd5b6141ca8882890161411d565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715614229576142296141d7565b60405290565b6040805190810167ffffffffffffffff81118282101715614229576142296141d7565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614299576142996141d7565b604052919050565b6000806000806000808688036101c08112156142bc57600080fd5b8735965060208801356142ce816140e3565b955060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08201121561430057600080fd5b50614309614206565b6040880135614317816140e3565b81526060880135614327816140e3565b60208201526080880135604082015260a08801356060820152935061434f8860c08901614105565b925061018087013567ffffffffffffffff8082111561436d57600080fd5b6143798a838b0161411d565b93506101a089013591508082111561439057600080fd5b5061439d89828a0161411d565b9150509295509295509295565b6000602082840312156143bc57600080fd5b5035919050565b6000602082840312156143d557600080fd5b81356122b9816140e3565b63ffffffff8116811461164b57600080fd5b60006020828403121561440457600080fd5b81356122b9816143e0565b60008083601f84011261442157600080fd5b50813567ffffffffffffffff81111561443957600080fd5b60208301915083602082850101111561445157600080fd5b9250929050565b600080600080600080600060a0888a03121561447357600080fd5b873561447e816140e3565b965060208801359550604088013567ffffffffffffffff808211156144a257600080fd5b6144ae8b838c0161440f565b909750955060608a013591506144c3826140e3565b909350608089013590808211156144d957600080fd5b506144e68a828b0161440f565b989b979a50959850939692959293505050565b6000806040838503121561450c57600080fd5b8235614517816143e0565b91506020830135614527816140e3565b809150509250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008135614588816140e3565b73ffffffffffffffffffffffffffffffffffffffff1683526020820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126145d657600080fd5b820160208101903567ffffffffffffffff8111156145f357600080fd5b80360382131561460257600080fd5b60406020860152614617604086018284614532565b95945050505050565b868152600073ffffffffffffffffffffffffffffffffffffffff8088166020840152808716604084015280861660608401525083608083015260c060a083015261466d60c083018461457b565b98975050505050505050565b60006020828403121561468b57600080fd5b81356fffffffffffffffffffffffffffffffff811681146122b957600080fd5b6000602082840312156146bd57600080fd5b81516122b9816143e0565b6000602082840312156146da57600080fd5b81516122b9816140e3565b60005b838110156147005781810151838201526020016146e8565b50506000910152565b600081518084526147218160208601602086016146e5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b63ffffffff81511682526020810151602083015260408101516040830152606081015160608301526000608082015160e0608085015261479660e0850182614709565b905060a083015184820360a08601526147af8282614709565b91505060c083015184820360c08601526146178282614709565b6040815260006147dc6040830185614753565b905082151560208301529392505050565b6000604082840312156147ff57600080fd5b61480761422f565b9050815181526020820151602082015292915050565b60006040828403121561482f57600080fd5b6122b983836147ed565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261486e57600080fd5b83018035915067ffffffffffffffff82111561488957600080fd5b60200191503681900382131561445157600080fd5b600061010073ffffffffffffffffffffffffffffffffffffffff808d168452808c166020850152808b166040850152808a1660608501528860808501528760a085015280871660c0850152508060e08401526148fd8184018587614532565b9c9b505050505050505050505050565b60006020828403121561491f57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417611e5957611e59614926565b6000826149a2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b81810381811115611e5957611e59614926565b60008060008060008060c087890312156149d357600080fd5b865195506020808801516149e6816140e3565b60408901519096506149f7816140e3565b6060890151909550614a08816140e3565b608089015160a08a0151919550935067ffffffffffffffff80821115614a2d57600080fd5b908901906040828c031215614a4157600080fd5b614a4961422f565b8251614a54816140e3565b81528284015182811115614a6757600080fd5b8084019350508b601f840112614a7c57600080fd5b825182811115614a8e57614a8e6141d7565b614abe857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614252565b92508083528c85828601011115614ad457600080fd5b614ae3818685018787016146e5565b508184820152809450505050509295509295509295565b60008251614b0c8184602087016146e5565b9190910192915050565b600060208284031215614b2857600080fd5b815180151581146122b957600080fd5b608081526000614b4b6080830186614753565b9050835160208301526020840151604083015273ffffffffffffffffffffffffffffffffffffffff83166060830152949350505050565b60008082840360c0811215614b9657600080fd5b6080811215614ba457600080fd5b506040516060810167ffffffffffffffff8282108183111715614bc957614bc96141d7565b8160405285518352602086015191508082168214614be657600080fd5b506020820152614bf985604086016147ed565b60408201529150614c0d84608085016147ed565b90509250929050565b60008085851115614c2657600080fd5b83861115614c3357600080fd5b5050820193919092039150565b80356020831015611e59577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b600061010073ffffffffffffffffffffffffffffffffffffffff808c168452808b166020850152808a16604085015280891660608501528760808501528660a085015280861660c0850152508060e0840152614cda81840185614709565b9b9a5050505050505050505050565b80820180821115611e5957611e59614926565b61ffff818116838216019080821115614d1757614d17614926565b5092915050565b60008651614d30818460208b016146e5565b80830190507fff00000000000000000000000000000000000000000000000000000000000000808860f81b1682527fffff0000000000000000000000000000000000000000000000000000000000008760f01b166001830152808660f81b166003830152508351614da88160048401602088016146e5565b0160040197965050505050505056fea2646970667358221220555cb7628b164dc023fc6c97deacc1581e4d6ed119710deac53c93791c22652064736f6c6343000816003300000000000000000000000097471c0fdddb5e5cc34cb08cb17961bd3a53f38f00000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab10000000000000000000000004c4af8dbc524681930a27b2f1af5bcc8062e6fb70000000000000000000000005b87c631308c6fb0ead5aa89b6fb8c78421cc807