0 txs
12 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 _guid, bytes _message, address _executor, bytes _extraData) 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
0x60a06040523480156200001157600080fd5b50604051620051e2380380620051e283398101604081905262000034916200013f565b836001600160a01b0381166200006457604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200006f81620000d2565b506000805460ff60a01b19169055600180556001600160a01b03928316608052600280549284166001600160a01b031993841617905560038054919093169116179055506064600555600680546219001963ffffffff199091161790556200019c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200013a57600080fd5b919050565b600080600080608085870312156200015657600080fd5b620001618562000122565b9350620001716020860162000122565b9250620001816040860162000122565b9150620001916060860162000122565b905092959194509250565b608051614f89620002596000396000818161026e01528181610e6e015281816124c60152818161254a01528181612d5201528181612e3401528181612eb501528181612f0b01528181612f8301528181612fa601528181613066015281816130ec0152818161319d015281816131df015281816132570152818161327a015281816133940152818161346c015281816134e8015281816135a6015281816135e80152818161366001528181613683015261379d0152614f896000f3fe60806040526004361061019a5760003560e01c806383af5550116100e1578063d0a102601161008a578063ecb911de11610064578063ecb911de146104e3578063ecefc705146104fe578063f2fde38b14610515578063fdeba4e51461053557600080fd5b8063d0a1026014610490578063d6b4c897146104a3578063e1a4e72a146104c357600080fd5b80638da5cb5b116100bb5780638da5cb5b14610411578063b2855b4f1461043c578063b92921411461045c57600080fd5b806383af5550146103b05780638456cb59146103d457806388c4cb36146103e957600080fd5b80634dba39a21161014357806369d2299c1161011d57806369d2299c146103385780636ebc51e11461037b578063715018a61461039b57600080fd5b80634dba39a2146102b057806358800adf146102d05780635c975abb146102fd57600080fd5b80633f4ba83a116101745780633f4ba83a146102475780633fc8cef31461025c578063403a01e51461029057600080fd5b8063117acd17146101a65780631b445c61146101e057806339e7fddc146101f557600080fd5b366101a157005b600080fd5b3480156101b257600080fd5b506101c66101c13660046142c4565b610562565b604080519283526020830191909152015b60405180910390f35b6101f36101ee366004614436565b6108c6565b005b34801561020157600080fd5b506004546102229073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d7565b34801561025357600080fd5b506101f3611504565b34801561026857600080fd5b506102227f000000000000000000000000000000000000000000000000000000000000000081565b34801561029c57600080fd5b506101f36102ab36600461453f565b611516565b3480156102bc57600080fd5b506101f36102cb366004614558565b6115b5565b3480156102dc57600080fd5b506003546102229073ffffffffffffffffffffffffffffffffffffffff1681565b34801561030957600080fd5b5060005474010000000000000000000000000000000000000000900460ff1660405190151581526020016101d7565b34801561034457600080fd5b5061022261035336600461458e565b60076020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b34801561038757600080fd5b506101f3610396366004614558565b6116a7565b3480156103a757600080fd5b506101f36117d9565b3480156103bc57600080fd5b506103c660055481565b6040519081526020016101d7565b3480156103e057600080fd5b506101f36117eb565b3480156103f557600080fd5b5061022273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b34801561041d57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610222565b34801561044857600080fd5b506101f3610457366004614558565b6117fb565b34801561046857600080fd5b5060065461047d9062010000900461ffff1681565b60405161ffff90911681526020016101d7565b6101f361049e3660046145f4565b61184a565b3480156104af57600080fd5b506101f36104be366004614695565b611c5d565b3480156104cf57600080fd5b506101f36104de366004614558565b611d62565b3480156104ef57600080fd5b5060065461047d9061ffff1681565b34801561050a57600080fd5b506103c6620186a081565b34801561052157600080fd5b506101f3610530366004614558565b611e53565b34801561054157600080fd5b506002546102229073ffffffffffffffffffffffffffffffffffffffff1681565b6000808087876105786040880160208901614558565b6105886060890160408a01614558565b8860600135886040516020016105a3969594939291906147bc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529050600061063c816105e960c0890160a08a01614815565b6105f960a08a0160808b01614815565b604080517e030000000000000000000000000000000000000000000000000000000000006020820152815180820360020181526022909101909152929190611eb4565b6040805160e081019091529091506000908061065b60208a018a61458e565b63ffffffff1681526020016106b0600760008b6000016020810190610680919061458e565b63ffffffff16815260208101919091526040016000205473ffffffffffffffffffffffffffffffffffffffff1690565b81526040808b01356020808401919091526060808d01358385015283018690526080830187905281518082018352600080825260a09094015260035482517f42407dc40000000000000000000000000000000000000000000000000000000081529251949550929373ffffffffffffffffffffffffffffffffffffffff9093169263bb0d15fe9284926342407dc4926004808401938290030181865afa15801561075e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107829190614847565b61079260408d0160208e01614558565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815263ffffffff92909216600483015273ffffffffffffffffffffffffffffffffffffffff166024820152604401602060405180830381865afa158015610807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082b9190614864565b905060008173ffffffffffffffffffffffffffffffffffffffff16633b6f743b8460006040518363ffffffff1660e01b815260040161086b929190614965565b6040805180830381865afa158015610887573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ab91906149b9565b8051602090910151909d909c509a5050505050505050505050565b6108ce611f37565b6108d6611f8c565b73ffffffffffffffffffffffffffffffffffffffff8516610958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f576f6f43726f7373436861696e526f7574657256353a2021746f00000000000060448201526064015b60405180910390fd5b835173ffffffffffffffffffffffffffffffffffffffff166109fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f576f6f43726f7373436861696e526f7574657256353a2021737263496e666f7360448201527f2e66726f6d546f6b656e00000000000000000000000000000000000000000000606482015260840161094f565b6000610a0e6060850160408601614558565b73ffffffffffffffffffffffffffffffffffffffff1614158015610b15575060035473ffffffffffffffffffffffffffffffffffffffff1663fd4709d7610a58602086018661458e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815263ffffffff919091166004820152602401602060405180830381865afa158015610ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad69190614864565b73ffffffffffffffffffffffffffffffffffffffff16610afc6060850160408601614558565b73ffffffffffffffffffffffffffffffffffffffff1614155b610ba1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f576f6f43726f7373436861696e526f7574657256353a2021647374496e666f7360448201527f2e746f546f6b656e000000000000000000000000000000000000000000000000606482015260840161094f565b600354604080517f42407dc4000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163bb0d15fe9183916342407dc49160048083019260209291908290030181865afa158015610c19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3d9190614847565b60208801516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815263ffffffff92909216600483015273ffffffffffffffffffffffffffffffffffffffff166024820152604401602060405180830381865afa158015610cb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdb9190614864565b73ffffffffffffffffffffffffffffffffffffffff1603610d7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f576f6f43726f7373436861696e526f7574657256353a2021737263496e666f7360448201527f2e627269646765546f6b656e0000000000000000000000000000000000000000606482015260840161094f565b83513490600090819073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff111111111111111111111111111111111111111201610f15578287604001511115610e57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f576f6f43726f7373436861696e526f7574657256353a2021737263496e666f7360448201527f2e66726f6d416d6f756e74000000000000000000000000000000000000000000606482015260840161094f565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680885260408089015181517fd0e30db0000000000000000000000000000000000000000000000000000000008152915163d0e30db09260048082019260009290919082900301818588803b158015610ee557600080fd5b505af1158015610ef9573d6000803e3d6000fd5b5050505050866040015183610f0e9190614a04565b9250610f29565b610f29876000015133308a60400151611fcf565b866020015173ffffffffffffffffffffffffffffffffffffffff16876000015173ffffffffffffffffffffffffffffffffffffffff16146111745786516002546040890151610f8f929173ffffffffffffffffffffffffffffffffffffffff1690612140565b6000610f9e6020870187614558565b73ffffffffffffffffffffffffffffffffffffffff16146110a75760025473ffffffffffffffffffffffffffffffffffffffff1663199b83fa610fe46020880188614558565b610ff16020890189614558565b8a600001518b602001518c604001518d60600151308d80602001906110169190614a17565b6040518a63ffffffff1660e01b815260040161103a99989796959493929190614a7c565b6020604051808303816000875af1158015611059573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107d9190614aeb565b600654909250620186a0906110969061ffff1684614b04565b6110a09190614b1b565b9050611213565b600254875160208901516040808b015160608c015191517f7dc2038200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff94851660048201529284166024840152604483015260648201523060848201528a821660a4820152911690637dc203829060c4016020604051808303816000875af1158015611149573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116d9190614aeb565b9150611213565b866060015187604001511461120b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f576f6f43726f7373436861696e526f7574657256353a2021737263496e666f7360448201527f2e6d696e427269646765416d6f756e7400000000000000000000000000000000606482015260840161094f565b866040015191505b60208701516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015611283573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a79190614aeb565b821115611335576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f576f6f43726f7373436861696e526f7574657256353a2021627269646765416d60448201527f6f756e7400000000000000000000000000000000000000000000000000000000606482015260840161094f565b61133f8183614a04565b915086606001518210156113d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f576f6f43726f7373436861696e526f7574657256353a2021737263496e666f7360448201527f2e6d696e427269646765416d6f756e7400000000000000000000000000000000606482015260840161094f565b6113e4898985858b8b8a6122b0565b73ffffffffffffffffffffffffffffffffffffffff88163373ffffffffffffffffffffffffffffffffffffffff168a7f546dc08c5438b68796e5047ad2ac863ab74300bdf49457917d47021f090c45c48a600001518b604001518c602001518d6060015189600073ffffffffffffffffffffffffffffffffffffffff168e60000160208101906114749190614558565b73ffffffffffffffffffffffffffffffffffffffff1614611496576001611499565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9788168152602081019690965293909516928401929092526060830152608082015260ff90911660a082015260c0810186905260e00160405180910390a45050506114fc60018055565b505050505050565b61150c612764565b6115146127b7565b565b61151e612764565b6127108111156115b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f576f6f43726f7373436861696e526f7574657256353a20215f6272696467655360448201527f6c69707061676500000000000000000000000000000000000000000000000000606482015260840161094f565b600555565b6115bd612764565b73ffffffffffffffffffffffffffffffffffffffff8116611660576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f576f6f43726f7373436861696e526f7574657256353a20215f776f6f526f757460448201527f6572000000000000000000000000000000000000000000000000000000000000606482015260840161094f565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6116af611f8c565b60045473ffffffffffffffffffffffffffffffffffffffff1661172e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f576f6f43726f7373436861696e526f7574657256353a20216665654164647200604482015260640161094f565b600061173a8230612834565b905080156117cc577fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff8316016117a7576004546117a29073ffffffffffffffffffffffffffffffffffffffff168261291e565b6117cc565b6004546117cc90839073ffffffffffffffffffffffffffffffffffffffff1683612a07565b506117d660018055565b50565b6117e1612764565b6115146000612b70565b6117f3612764565b611514612be5565b611803612764565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600354604080517f42407dc4000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff16916342407dc49160048083019260209291908290030181865afa1580156118ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118de9190614847565b6003546040517f73f0c8f500000000000000000000000000000000000000000000000000000000815263ffffffff8316600482015291925073ffffffffffffffffffffffffffffffffffffffff16906373f0c8f590602401602060405180830381865afa158015611953573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119779190614864565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f576f6f43726f7373436861696e526f7574657256353a20494e56414c49445f4360448201527f414c4c4552000000000000000000000000000000000000000000000000000000606482015260840161094f565b6000611a3d8787612c54565b9050600080600080600080611a528d8d612c6d565b806020019051810190611a659190614b56565b6003546040517fbb0d15fe000000000000000000000000000000000000000000000000000000008152969c50949a509298509096509450925073ffffffffffffffffffffffffffffffffffffffff169063bb0d15fe90611af2908b90889060040163ffffffff92909216825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b602060405180830381865afa158015611b0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b339190614864565b73ffffffffffffffffffffffffffffffffffffffff168f73ffffffffffffffffffffffffffffffffffffffff1614611bed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f576f6f43726f7373436861696e526f7574657256353a20215f66726f6d5f737460448201527f6172676174650000000000000000000000000000000000000000000000000000606482015260840161094f565b7fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff851601611c3d57611c388686858a8686612cb8565b611c4c565b611c4c868685878b878761386e565b505050505050505050505050505050565b611c65612764565b73ffffffffffffffffffffffffffffffffffffffff8116611d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f576f6f43726f7373436861696e526f7574657256353a20215f63726f7373526f60448201527f7574657200000000000000000000000000000000000000000000000000000000606482015260840161094f565b63ffffffff91909116600090815260076020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b611d6a612764565b7fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff821601611db1576117d6334761291e565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015611e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e429190614aeb565b9050611e4f823383612a07565b5050565b611e5b612764565b73ffffffffffffffffffffffffffffffffffffffff8116611eab576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161094f565b6117d681612b70565b6060846003611ec4826000613fe1565b61ffff1614611f1157611ed8816000613fe1565b6040517f3a51740d00000000000000000000000000000000000000000000000000000000815261ffff909116600482015260240161094f565b6000611f1e868686614061565b9050611f2c8760038361416d565b979650505050505050565b60005474010000000000000000000000000000000000000000900460ff1615611514576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260015403611fc8576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600155565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052915160009283929088169161206e9190614c96565b6000604051808303816000865af19150503d80600081146120ab576040519150601f19603f3d011682016040523d82523d6000602084013e6120b0565b606091505b50915091508180156120da5750805115806120da5750808060200190518101906120da9190614cb2565b6114fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354460000000000000000000000000000000000000000000000000000000000604482015260640161094f565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905291516000928392908716916121d79190614c96565b6000604051808303816000865af19150503d8060008114612214576040519150601f19603f3d011682016040523d82523d6000602084013e612219565b606091505b50915091508180156122435750805115806122435750808060200190518101906122439190614cb2565b6122a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5341000000000000000000000000000000000000000000000000000000000000604482015260640161094f565b5050505050565b600087876122c46040860160208701614558565b6122d46060870160408801614558565b8660600135866040516020016122ef969594939291906147bc565b604051602081830303815290604052905060006127106005546127106123159190614a04565b61231f9088614b04565b6123299190614b1b565b9050600060078161233d602088018861458e565b63ffffffff168152602081019190915260400160009081205473ffffffffffffffffffffffffffffffffffffffff169150612382816105e960c0890160a08a01614815565b600354604080517f42407dc4000000000000000000000000000000000000000000000000000000008152905192935060009273ffffffffffffffffffffffffffffffffffffffff9092169163bb0d15fe9183916342407dc4916004808201926020929091908290030181865afa158015612400573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124249190614847565b60208b01516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815263ffffffff92909216600483015273ffffffffffffffffffffffffffffffffffffffff166024820152604401602060405180830381865afa15801561249e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c29190614864565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16886020015173ffffffffffffffffffffffffffffffffffffffff16036125ce576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018a90527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b1580156125a357600080fd5b505af11580156125b7573d6000803e3d6000fd5b50505050888a6125c79190614cd4565b99506125dd565b6125dd8860200151828b612140565b6040805160e08101909152600090806125f960208b018b61458e565b63ffffffff16815260200173ffffffffffffffffffffffffffffffffffffffff861681526020018a60400151815260200186815260200184815260200187815260200160405180602001604052806000815250815250905060008273ffffffffffffffffffffffffffffffffffffffff16633b6f743b8360006040518363ffffffff1660e01b815260040161268f929190614965565b6040805180830381865afa1580156126ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126cf91906149b9565b90508273ffffffffffffffffffffffffffffffffffffffff1663c7c7f5b38d8484326040518563ffffffff1660e01b815260040161270f93929190614ce7565b60c06040518083038185885af115801561272d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127529190614d31565b50505050505050505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611514576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161094f565b6127bf6141d8565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146128fc576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528416906370a0823190602401602060405180830381865afa1580156128d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f79190614aeb565b612915565b8173ffffffffffffffffffffffffffffffffffffffff16315b90505b92915050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040516129559190614c96565b60006040518083038185875af1925050503d8060008114612992576040519150601f19603f3d011682016040523d82523d6000602084013e612997565b606091505b5050905080612a02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354450000000000000000000000000000000000000000000000000000000000604482015260640161094f565b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691612a9e9190614c96565b6000604051808303816000865af19150503d8060008114612adb576040519150601f19603f3d011682016040523d82523d6000602084013e612ae0565b606091505b5091509150818015612b0a575080511580612b0a575080806020019051810190612b0a9190614cb2565b6122a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5354000000000000000000000000000000000000000000000000000000000000604482015260640161094f565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612bed611f37565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861280a3390565b6000612c64602c600c8486614dc5565b61291591614def565b6060612c7c82604c8186614dc5565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b3373ffffffffffffffffffffffffffffffffffffffff85167fffffffffffffffffffffffff111111111111111111111111111111111111111201612e3257612d00868561291e565b8573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16887fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c7f0000000000000000000000000000000000000000000000000000000000000000888a73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8a8c600073ffffffffffffffffffffffffffffffffffffffff168c6000015173ffffffffffffffffffffffffffffffffffffffff1614612dc9576001612dcc565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152602081019790975294871686860152929095166060850152608084015260a083019390935260ff90921660c0820152600060e08201529051908190036101000190a4506114fc565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015612e9a57600080fd5b505af1158015612eae573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361300657612f317f00000000000000000000000000000000000000000000000000000000000000008786612a07565b8573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16887fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c7f0000000000000000000000000000000000000000000000000000000000000000888a7f00000000000000000000000000000000000000000000000000000000000000008a8c600073ffffffffffffffffffffffffffffffffffffffff168c6000015173ffffffffffffffffffffffffffffffffffffffff1614612dc9576001612dcc565b815173ffffffffffffffffffffffffffffffffffffffff161561346357600654600090620186a0906130429062010000900461ffff1687614b04565b61304c9190614b1b565b9050600061305a8287614a04565b6002549091506130a2907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff1683612140565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663199b83fa856000015186600001517f00000000000000000000000000000000000000000000000000000000000000008b868b8f8c602001516040518963ffffffff1660e01b8152600401613137989796959493929190614e2b565b6020604051808303816000875af1925050508015613190575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261318d91810190614aeb565b60015b613342576002546131da907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff166000612140565b6132057f00000000000000000000000000000000000000000000000000000000000000008988612a07565b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168a7fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c7f00000000000000000000000000000000000000000000000000000000000000008a8c7f00000000000000000000000000000000000000000000000000000000000000008c8e600073ffffffffffffffffffffffffffffffffffffffff168e6000015173ffffffffffffffffffffffffffffffffffffffff16146132da5760016132dd565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152602081019790975294871686860152929095166060850152608084015260a083019390935260ff90921660c0820152600060e08201529051908190036101000190a461345c565b8873ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168b7fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c7f0000000000000000000000000000000000000000000000000000000000000000868d8e8d89600073ffffffffffffffffffffffffffffffffffffffff168f6000015173ffffffffffffffffffffffffffffffffffffffff16146133f75760016133fa565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152602081019790975294871686860152929095166060850152608084015260a083019390935260ff90921660c082015260e081018990529051908190036101000190a4505b5050613865565b6002546134a8907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff1686612140565b6002546040517f7dc2038200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152878116602483015260448201879052606482018690528881166084830181905260a483015290911690637dc203829060c4016020604051808303816000875af1925050508015613599575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261359691810190614aeb565b60015b61374b576002546135e3907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff166000612140565b61360e7f00000000000000000000000000000000000000000000000000000000000000008786612a07565b8573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16887fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c7f0000000000000000000000000000000000000000000000000000000000000000888a7f00000000000000000000000000000000000000000000000000000000000000008a8c600073ffffffffffffffffffffffffffffffffffffffff168c6000015173ffffffffffffffffffffffffffffffffffffffff16146136e35760016136e6565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152602081019790975294871686860152929095166060850152608084015260a083019390935260ff90921660c0820152600060e08201529051908190036101000190a4613865565b8673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16897fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c7f0000000000000000000000000000000000000000000000000000000000000000898b8c8b89600073ffffffffffffffffffffffffffffffffffffffff168d6000015173ffffffffffffffffffffffffffffffffffffffff1614613800576001613803565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152602081019790975294871686860152929095166060850152608084015260a083019390935260ff90921660c0820152600060e08201529051908190036101000190a4505b50505050505050565b3373ffffffffffffffffffffffffffffffffffffffff808616908716036139975761389a858886612a07565b8673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16897fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c88888b8c8a8c600073ffffffffffffffffffffffffffffffffffffffff168c6000015173ffffffffffffffffffffffffffffffffffffffff161461392f576001613932565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152602081019790975294871686860152929095166060850152608084015260a083019390935260ff90921660c0820152600060e08201529051908190036101000190a4613fd7565b815173ffffffffffffffffffffffffffffffffffffffff1615613d1d57600654600090620186a0906139d39062010000900461ffff1687614b04565b6139dd9190614b1b565b90506139e98186614a04565b600254909550613a1190879073ffffffffffffffffffffffffffffffffffffffff1687612140565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663199b83fa84600001518560000151898b8a8a8f8b602001516040518963ffffffff1660e01b8152600401613a86989796959493929190614e2b565b6020604051808303816000875af1925050508015613adf575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252613adc91810190614aeb565b60015b613c1d57600254613b0990879073ffffffffffffffffffffffffffffffffffffffff166000612140565b613b138186614cd4565b9450613b20868987612a07565b8773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168a7fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c89898c8c8b8d600073ffffffffffffffffffffffffffffffffffffffff168d6000015173ffffffffffffffffffffffffffffffffffffffff1614613bb5576001613bb8565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152602081019790975294871686860152929095166060850152608084015260a083019390935260ff90921660c0820152600060e08201529051908190036101000190a4613d17565b8873ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168b7fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c8a8a8d8e8c89600073ffffffffffffffffffffffffffffffffffffffff168e6000015173ffffffffffffffffffffffffffffffffffffffff1614613cb2576001613cb5565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152602081019790975294871686860152929095166060850152608084015260a083019390935260ff90921660c082015260e081018890529051908190036101000190a4505b50613fd7565b600254613d4290869073ffffffffffffffffffffffffffffffffffffffff1686612140565b6002546040517f7dc2038200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152888116602483015260448201879052606482018690528981166084830181905260a483015290911690637dc203829060c4016020604051808303816000875af1925050508015613e13575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252613e1091810190614aeb565b60015b613edd57600254613e3d90869073ffffffffffffffffffffffffffffffffffffffff166000612140565b613e48858886612a07565b8673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16897fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c88888b8b8a8c600073ffffffffffffffffffffffffffffffffffffffff168c6000015173ffffffffffffffffffffffffffffffffffffffff161461392f576001613932565b8773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168a7fe025e234368c681f94aa603de304cf6708c5638fe7454d6ed22a55430776a71c89898c8d8b89600073ffffffffffffffffffffffffffffffffffffffff168d6000015173ffffffffffffffffffffffffffffffffffffffff1614613f72576001613f75565b60005b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152602081019790975294871686860152929095166060850152608084015260a083019390935260ff90921660c0820152600060e08201529051908190036101000190a4505b5050505050505050565b6000613fee826002614cd4565b83511015614058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e6473000000000000000000000000604482015260640161094f565b50016002015190565b60606fffffffffffffffffffffffffffffffff8216156140f7576040517fffff00000000000000000000000000000000000000000000000000000000000060f086901b1660208201527fffffffffffffffffffffffffffffffff00000000000000000000000000000000608085811b8216602284015284901b166032820152604201604051602081830303815290604052614165565b6040517fffff00000000000000000000000000000000000000000000000000000000000060f086901b1660208201527fffffffffffffffffffffffffffffffff00000000000000000000000000000000608085901b1660228201526032016040516020818303038152906040525b949350505050565b606083600361417d826000613fe1565b61ffff161461419157611ed8816000613fe1565b84600161419e855161422c565b6141a9906001614e98565b86866040516020016141bf959493929190614eba565b6040516020818303038152906040529150509392505050565b60005474010000000000000000000000000000000000000000900460ff16611514576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061ffff821115614274576040517f6dfcc650000000000000000000000000000000000000000000000000000000008152601060048201526024810183905260440161094f565b5090565b73ffffffffffffffffffffffffffffffffffffffff811681146117d657600080fd5b600060c082840312156142ac57600080fd5b50919050565b6000604082840312156142ac57600080fd5b60008060008060008587036101a08112156142de57600080fd5b8635955060208701356142f081614278565b945060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08201121561432257600080fd5b506040860192506143368760c0880161429a565b915061018086013567ffffffffffffffff81111561435357600080fd5b61435f888289016142b2565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156143be576143be61436c565b60405290565b6040805190810167ffffffffffffffff811182821017156143be576143be61436c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561442e5761442e61436c565b604052919050565b6000806000806000808688036101c081121561445157600080fd5b87359650602088013561446381614278565b955060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08201121561449557600080fd5b5061449e61439b565b60408801356144ac81614278565b815260608801356144bc81614278565b60208201526080880135604082015260a0880135606082015293506144e48860c0890161429a565b925061018087013567ffffffffffffffff8082111561450257600080fd5b61450e8a838b016142b2565b93506101a089013591508082111561452557600080fd5b5061453289828a016142b2565b9150509295509295509295565b60006020828403121561455157600080fd5b5035919050565b60006020828403121561456a57600080fd5b813561457581614278565b9392505050565b63ffffffff811681146117d657600080fd5b6000602082840312156145a057600080fd5b81356145758161457c565b60008083601f8401126145bd57600080fd5b50813567ffffffffffffffff8111156145d557600080fd5b6020830191508360208285010111156145ed57600080fd5b9250929050565b600080600080600080600060a0888a03121561460f57600080fd5b873561461a81614278565b965060208801359550604088013567ffffffffffffffff8082111561463e57600080fd5b61464a8b838c016145ab565b909750955060608a0135915061465f82614278565b9093506080890135908082111561467557600080fd5b506146828a828b016145ab565b989b979a50959850939692959293505050565b600080604083850312156146a857600080fd5b82356146b38161457c565b915060208301356146c381614278565b809150509250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6000813561472481614278565b73ffffffffffffffffffffffffffffffffffffffff1683526020820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261477257600080fd5b820160208101903567ffffffffffffffff81111561478f57600080fd5b80360382131561479e57600080fd5b604060208601526147b36040860182846146ce565b95945050505050565b868152600073ffffffffffffffffffffffffffffffffffffffff8088166020840152808716604084015280861660608401525083608083015260c060a083015261480960c0830184614717565b98975050505050505050565b60006020828403121561482757600080fd5b81356fffffffffffffffffffffffffffffffff8116811461457557600080fd5b60006020828403121561485957600080fd5b81516145758161457c565b60006020828403121561487657600080fd5b815161457581614278565b60005b8381101561489c578181015183820152602001614884565b50506000910152565b600081518084526148bd816020860160208601614881565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b63ffffffff81511682526020810151602083015260408101516040830152606081015160608301526000608082015160e0608085015261493260e08501826148a5565b905060a083015184820360a086015261494b82826148a5565b91505060c083015184820360c08601526147b382826148a5565b60408152600061497860408301856148ef565b905082151560208301529392505050565b60006040828403121561499b57600080fd5b6149a36143c4565b9050815181526020820151602082015292915050565b6000604082840312156149cb57600080fd5b6129158383614989565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115612918576129186149d5565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614a4c57600080fd5b83018035915067ffffffffffffffff821115614a6757600080fd5b6020019150368190038213156145ed57600080fd5b600061010073ffffffffffffffffffffffffffffffffffffffff808d168452808c166020850152808b166040850152808a1660608501528860808501528760a085015280871660c0850152508060e0840152614adb81840185876146ce565b9c9b505050505050505050505050565b600060208284031215614afd57600080fd5b5051919050565b8082028115828204841417612918576129186149d5565b600082614b51577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008060008060008060c08789031215614b6f57600080fd5b86519550602080880151614b8281614278565b6040890151909650614b9381614278565b6060890151909550614ba481614278565b608089015160a08a0151919550935067ffffffffffffffff80821115614bc957600080fd5b908901906040828c031215614bdd57600080fd5b614be56143c4565b8251614bf081614278565b81528284015182811115614c0357600080fd5b8084019350508b601f840112614c1857600080fd5b825182811115614c2a57614c2a61436c565b614c5a857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016143e7565b92508083528c85828601011115614c7057600080fd5b614c7f81868501878701614881565b508184820152809450505050509295509295509295565b60008251614ca8818460208701614881565b9190910192915050565b600060208284031215614cc457600080fd5b8151801515811461457557600080fd5b80820180821115612918576129186149d5565b608081526000614cfa60808301866148ef565b9050835160208301526020840151604083015273ffffffffffffffffffffffffffffffffffffffff83166060830152949350505050565b60008082840360c0811215614d4557600080fd5b6080811215614d5357600080fd5b506040516060810167ffffffffffffffff8282108183111715614d7857614d7861436c565b8160405285518352602086015191508082168214614d9557600080fd5b506020820152614da88560408601614989565b60408201529150614dbc8460808501614989565b90509250929050565b60008085851115614dd557600080fd5b83861115614de257600080fd5b5050820193919092039150565b80356020831015612918577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b600061010073ffffffffffffffffffffffffffffffffffffffff808c168452808b166020850152808a16604085015280891660608501528760808501528660a085015280861660c0850152508060e0840152614e89818401856148a5565b9b9a5050505050505050505050565b61ffff818116838216019080821115614eb357614eb36149d5565b5092915050565b60008651614ecc818460208b01614881565b80830190507fff00000000000000000000000000000000000000000000000000000000000000808860f81b1682527fffff0000000000000000000000000000000000000000000000000000000000008760f01b166001830152808660f81b166003830152508351614f44816004840160208801614881565b0160040197965050505050505056fea264697066735822122017d75cb374cfde59d198c81b91c69a92dfbdad3d718970a3d9b2def4d9faeabd64736f6c634300081600330000000000000000000000007c8a5d20b22ce9b369c043a3e0091b5575b732d900000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab10000000000000000000000004c4af8dbc524681930a27b2f1af5bcc8062e6fb700000000000000000000000064a734ded51312b4b0ee96811b725f2354e90f4b