0 txs
62 calls
constructor
No constructor.
functions
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
feeReceiver
viewfunction feeReceiver() view returns (address)
longPool
viewfunction longPool() view returns (address)
owner
viewfunction owner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
shortPool
viewfunction shortPool() view returns (address)
swapRouter
viewfunction swapRouter() view returns (address)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
weth
viewfunction weth() view returns (address)
withdrawFeeBips
viewfunction withdrawFeeBips() view returns (uint256)
__WasabiRouter_init
nonpayablefunction __WasabiRouter_init(address _longPool, address _shortPool, address _weth, address _manager, address _swapRouter, address _feeReceiver, uint256 _withdrawFeeBips)
addCollateral
nonpayablefunction addCollateral(address _pool, tuple _request, tuple _signature)
claimGas
nonpayablefunction claimGas(address contractAddress, address recipientOfGas) returns (uint256)
initialize
nonpayablefunction initialize(address _longPool, address _shortPool, address _weth, address _manager, address _swapRouter, address _feeReceiver, uint256 _withdrawFeeBips)
openPosition
nonpayablefunction openPosition(address _pool, tuple _request, tuple _signature, tuple _traderSignature, uint256 _executionFee)
openPosition
nonpayablefunction openPosition(address _pool, tuple _request, tuple _signature)
renounceOwnership
nonpayablefunction renounceOwnership()
setFeeReceiver
nonpayablefunction setFeeReceiver(address _newFeeReceiver)
setSwapRouter
nonpayablefunction setSwapRouter(address _newSwapRouter)
setWETH
nonpayablefunction setWETH(address _newWETH)
setWithdrawFeeBips
nonpayablefunction setWithdrawFeeBips(uint256 _feeBips)
swapTokenToVault
payablefunction swapTokenToVault(uint256 _amount, address _tokenIn, address _tokenOut, bytes _swapCalldata) payable
swapVaultToToken
nonpayablefunction swapVaultToToken(uint256 _amount, address _tokenIn, address _tokenOut, bytes _swapCalldata)
swapVaultToVault
nonpayablefunction swapVaultToVault(uint256 _amount, address _tokenIn, address _tokenOut, bytes _swapCalldata)
sweepToken
nonpayablefunction sweepToken(address _token)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
EIP712DomainChanged
event EIP712DomainChanged()
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
SwapRouterUpdated
event SwapRouterUpdated(address _oldSwapRouter, address _newSwapRouter)
Upgraded
event Upgraded(address indexed implementation)
WithdrawFeeUpdated
event WithdrawFeeUpdated(uint256 _oldFeeBips, uint256 _newFeeBips)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedInnerCall
error FailedInnerCall()
FeeReceiverNotSet
error FeeReceiverNotSet()
InvalidETHReceived
error InvalidETHReceived()
InvalidFeeBips
error InvalidFeeBips()
InvalidInitialization
error InvalidInitialization()
InvalidPool
error InvalidPool()
InvalidSignature
error InvalidSignature()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516139126100fd60003960008181611b1301528181611b3c01526120ba01526139126000f3fe6080604052600436106101a05760003560e01c8063715018a6116100ec578063b8fae7631161008a578063dc98e95811610064578063dc98e958146104dc578063efdcd974146104fc578063f2fde38b1461051c578063f39a01b71461053c57600080fd5b8063b8fae76314610486578063c31c9c07146104a6578063d05e1eaf146104c657600080fd5b80639c307ca2116100c65780639c307ca2146103e8578063a170d0cb14610408578063ad3cb1cc14610428578063b3f006741461046657600080fd5b8063715018a61461039657806384b0196e146103ab5780638da5cb5b146103d357600080fd5b8063412736571161015957806350d2b2bf1161013357806350d2b2bf1461032e57806352d1902d1461034e5780635b769f3c14610363578063635aa8671461038357600080fd5b806341273657146102db57806344164a50146102fb5780634f1ef2861461031b57600080fd5b806310a1b9c6146101f05780631460e390146102105780631be19560146102305780632bf84d6c146102505780633df10a71146102705780633fc8cef3146102a357600080fd5b366101eb576002546001600160a01b031633148015906101cb57506003546001600160a01b03163314155b156101e957604051631ed7744160e11b815260040160405180910390fd5b005b600080fd5b3480156101fc57600080fd5b506101e961020b366004612c50565b61055c565b34801561021c57600080fd5b506101e961022b366004612cef565b61063e565b34801561023c57600080fd5b506101e961024b366004612d7d565b610760565b34801561025c57600080fd5b506101e961026b366004612d9a565b61085c565b34801561027c57600080fd5b5061029061028b366004612db3565b610921565b6040519081526020015b60405180910390f35b3480156102af57600080fd5b506003546102c3906001600160a01b031681565b6040516001600160a01b03909116815260200161029a565b3480156102e757600080fd5b506101e96102f6366004612d7d565b610a11565b34801561030757600080fd5b506101e9610316366004612e04565b610adc565b6101e9610329366004612ec8565b610b0e565b34801561033a57600080fd5b506101e9610349366004612f86565b610b2d565b34801561035a57600080fd5b50610290610d17565b34801561036f57600080fd5b506101e961037e366004612d7d565b610d34565b6101e9610391366004612c50565b610db8565b3480156103a257600080fd5b506101e9610f9b565b3480156103b757600080fd5b506103c0610faf565b60405161029a9796959493929190613052565b3480156103df57600080fd5b506102c3611060565b3480156103f457600080fd5b506000546102c3906001600160a01b031681565b34801561041457600080fd5b506101e96104233660046130ea565b61108e565b34801561043457600080fd5b50610459604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161029a9190613141565b34801561047257600080fd5b506005546102c3906001600160a01b031681565b34801561049257600080fd5b506001546102c3906001600160a01b031681565b3480156104b257600080fd5b506002546102c3906001600160a01b031681565b3480156104d257600080fd5b5061029060045481565b3480156104e857600080fd5b506101e96104f7366004612cef565b6110a4565b34801561050857600080fd5b506101e9610517366004612d7d565b611171565b34801561052857600080fd5b506101e9610537366004612d7d565b6111f5565b34801561054857600080fd5b506101e9610557366004612c50565b611230565b610564611307565b61056e848661133f565b61057a8486848461142f565b6040516370a0823160e01b81523060048201526105ee9084906001600160a01b038216906370a08231906024015b602060405180830381865afa1580156105c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e99190613154565b6114a3565b6040516370a0823160e01b81523060048201526106209085906001600160a01b038216906370a08231906024016105a8565b61063760016000805160206138bd83398151915255565b5050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156106835750825b90506000826001600160401b0316600114801561069f5750303b155b9050811580156106ad575080155b156106cb5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156106f557845460ff60401b1916600160401b1785555b6107048c8c8c8c8c8c8c6110a4565b61070c611575565b831561075257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b610768611765565b604051630935e01b60e21b81523360048201526001600160a01b0391909116906324d7806c9060240160006040518083038186803b1580156107a957600080fd5b505afa1580156107bd573d6000803e3d6000fd5b5050506001600160a01b03821690506107dd576107da3347611774565b50565b6040516370a0823160e01b81523060048201526107da9033906001600160a01b038416906370a0823190602401602060405180830381865afa158015610827573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084b9190613154565b6001600160a01b038416919061180b565b610864611765565b604051630935e01b60e21b81523360048201526001600160a01b0391909116906324d7806c9060240160006040518083038186803b1580156108a557600080fd5b505afa1580156108b9573d6000803e3d6000fd5b505050506127108111156108e057604051634164b1c160e11b815260040160405180910390fd5b60045460408051918252602082018390527f733071ab8253b372ed26a6d1b04aec71c4bfcd209c93397df32bb77478cdd2c8910160405180910390a1600455565b600061092b611765565b604051630935e01b60e21b81523360048201526001600160a01b0391909116906324d7806c9060240160006040518083038186803b15801561096c57600080fd5b505afa158015610980573d6000803e3d6000fd5b505050506109926002604360981b0190565b60405163662aa11d60e01b81526001600160a01b0385811660048301528481166024830152919091169063662aa11d906044016020604051808303816000875af11580156109e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a089190613154565b90505b92915050565b610a19611765565b604051630935e01b60e21b81523360048201526001600160a01b0391909116906324d7806c9060240160006040518083038186803b158015610a5a57600080fd5b505afa158015610a6e573d6000803e3d6000fd5b5050600254604080516001600160a01b03928316815291851660208301527fca394f95d8dbf1e8b2e76b9a8da90cacce1da85181a65508dab13212dc1df53b935001905060405180910390a1600280546001600160a01b0319166001600160a01b0392909216919091179055565b610ae4611307565b610af283838333600061186a565b610b0960016000805160206138bd83398151915255565b505050565b610b16611b08565b610b1f82611bad565b610b298282611c0a565b5050565b6066610b37611765565b6040516331850e1360e21b81526001600160401b03831660048201523360248201526001600160a01b03919091169063c614384c9060440160006040518083038186803b158015610b8757600080fd5b505afa158015610b9b573d6000803e3d6000fd5b50505050610ba7611307565b600060405180610160016040528087600001358152602001876020016020810190610bd29190612d7d565b6001600160a01b03168152602001610bf06060890160408a01612d7d565b6001600160a01b0316815260200187606001358152602001876080013581526020018760a0013581526020018760c0013581526020018760e00135815260200160006001600160401b03811115610c4957610c49612e59565b604051908082528060200260200182016040528015610c9657816020015b60408051606080820183526000808352602083015291810191909152815260200190600190039081610c675790505b508152602001610caf3689900389016101208a0161316d565b8152602001610cc661026089016102408a01612d7d565b6001600160a01b0316905290506000610ce7610ce183611cc7565b86611db9565b9050610cf68888888488611e66565b5050610d0f60016000805160206138bd83398151915255565b505050505050565b6000610d216120af565b5060008051602061389d83398151915290565b610d3c611765565b604051630935e01b60e21b81523360048201526001600160a01b0391909116906324d7806c9060240160006040518083038186803b158015610d7d57600080fd5b505afa158015610d91573d6000803e3d6000fd5b5050600380546001600160a01b0319166001600160a01b0394909416939093179092555050565b610dc0611307565b3415801590610dfc576003546001600160a01b03868116911614610df757604051631ed7744160e11b815260040160405180910390fd5b610e11565b610e116001600160a01b0386163330896120f8565b836001600160a01b0316856001600160a01b031614610e3b57610e368587858561142f565b610eab565b8015610eab57600360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610e9157600080fd5b505af1158015610ea5573d6000803e3d6000fd5b50505050505b6040516370a0823160e01b8152306004820152610edd9085906001600160a01b038216906370a08231906024016105a8565b8015610efa57478015610ef457610ef43382611774565b50610f83565b6040516370a0823160e01b81523060048201526000906001600160a01b038716906370a0823190602401602060405180830381865afa158015610f41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f659190613154565b90508015610f8157610f816001600160a01b038716338361180b565b505b5061063760016000805160206138bd83398151915255565b610fa3612131565b610fad6000612163565b565b6000606080828080838160008051602061387d8339815191528054909150158015610fdc57506001810154155b6110255760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064015b60405180910390fd5b61102d6121d4565b611035612297565b60408051600080825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b611096611307565b610af2838383336000611e66565b6110ac6122d6565b6110b461231f565b6110bc612327565b6111036040518060400160405280600c81526020016b2bb0b9b0b134a937baba32b960a11b815250604051806040016040528060018152602001603160f81b815250612337565b61110c84612349565b600080546001600160a01b03199081166001600160a01b03998a16179091556001805482169789169790971790965560038054871695881695909517909455600280548616928716929092179091556005805490941694169390931790915560045550565b611179611765565b604051630935e01b60e21b81523360048201526001600160a01b0391909116906324d7806c9060240160006040518083038186803b1580156111ba57600080fd5b505afa1580156111ce573d6000803e3d6000fd5b5050600580546001600160a01b0319166001600160a01b0394909416939093179092555050565b6111fd612131565b6001600160a01b03811661122757604051631e4fbdf760e01b81526000600482015260240161101c565b6107da81612163565b611238611307565b611242848661133f565b826001600160a01b0316846001600160a01b0316146112fd576001600160a01b03831615801561127f57506003546001600160a01b038581169116145b156112f157600354604051632e1a7d4d60e01b8152600481018790526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b1580156112ca57600080fd5b505af11580156112de573d6000803e3d6000fd5b505050506112ec838661235a565b6105ee565b6112ec8486848461142f565b6105ee838661235a565b6000805160206138bd83398151915280546001190161133957604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6001546040516301d735e760e31b81526001600160a01b0384811660048301526000921690630eb9af3890602401602060405180830381865afa15801561138a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ae9190613201565b604051632d182be560e21b8152600481018490523060248201523360448201529091506001600160a01b0382169063b460af94906064015b6020604051808303816000875af1158015611405573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114299190613154565b50505050565b34600003611455576002548490611453906001600160a01b0380841691168661241f565b505b61063782828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506002546001600160a01b03169291503490506124af565b8015610b29576001546040516301d735e760e31b81526001600160a01b0384811660048301526000921690630eb9af3890602401602060405180830381865afa1580156114f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115189190613201565b905061152e6001600160a01b038416828461241f565b604051636e553f6560e01b8152600481018390523360248201526001600160a01b03821690636e553f65906044016113e6565b60016000805160206138bd83398151915255565b60006002604360981b019050806001600160a01b031663f098767a6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156115bc57600080fd5b505af11580156115d0573d6000803e3d6000fd5b50505050806001600160a01b0316634e606c476040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561160f57600080fd5b505af1158015611623573d6000803e3d6000fd5b5050604051631a33757d60e01b81526003604360981b019250631a33757d91506116529060029060040161321e565b6020604051808303816000875af1158015611671573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116959190613154565b50604051631a33757d60e01b81526004604360981b0190631a33757d906116c19060029060040161321e565b6020604051808303816000875af11580156116e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117049190613154565b506040516336b91f2b60e01b8152336004820152732536fe9ab3f511540f2f9e2ec2a805005c3dd800906336b91f2b90602401600060405180830381600087803b15801561175157600080fd5b505af1158015610637573d6000803e3d6000fd5b600061176f611060565b905090565b804710156117975760405163cd78605960e01b815230600482015260240161101c565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146117e4576040519150601f19603f3d011682016040523d82523d6000602084013e6117e9565b606091505b5050905080610b0957604051630a12f52160e11b815260040160405180910390fd5b6040516001600160a01b03838116602483015260448201839052610b0991859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061254e565b6000546001600160a01b038681169116146118ac576001546001600160a01b038681169116146118ac5760405162820f3560e61b815260040160405180910390fd5b600080546001600160a01b038781169116146118d7576118d260e0860160c08701612d7d565b6118e7565b6118e760c0860160a08701612d7d565b905060006118f683873561325c565b6040516301d735e760e31b81526001600160a01b038481166004830152919250600091891690630eb9af3890602401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119669190613201565b604051632d182be560e21b8152600481018490523060248201526001600160a01b0387811660448301529192509082169063b460af94906064016020604051808303816000875af11580156119bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e39190613154565b50604051636eb1769f60e11b81523060048201526001600160a01b03898116602483015284169063dd62ed3e90604401602060405180830381865afa158015611a30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a549190613154565b600003611a7157611a716001600160a01b0384168960001961241f565b604051632bd5990560e11b81526001600160a01b038916906357ab320a90611a9f908a908a9060040161332b565b610120604051808303816000875af1158015611abf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae39190613371565b508315611afe57611afe6001600160a01b038416338661180b565b5050505050505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611b8f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611b8360008051602061389d833981519152546001600160a01b031690565b6001600160a01b031614155b15610fad5760405163703e46dd60e11b815260040160405180910390fd5b611bb5611765565b604051630935e01b60e21b81523360048201526001600160a01b0391909116906324d7806c9060240160006040518083038186803b158015611bf657600080fd5b505afa158015610637573d6000803e3d6000fd5b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611c64575060408051601f3d908101601f19168201909252611c6191810190613154565b60015b611c8c57604051634c9c8ce360e01b81526001600160a01b038316600482015260240161101c565b60008051602061389d8339815191528114611cbd57604051632a87526960e21b81526004810182905260240161101c565b610b0983836125b1565b60007f6a36946795713cb0d845dfd59fe886128a8f898548f6a3bd0d7211014b54b5b6826000015183602001518460400151856060015186608001518760a001518860c001518960e00151611d208b6101000151612607565b611d2e8c610120015161277c565b610140808e015160408051602081019e909e528d019b909b526001600160a01b03998a1660608d015297891660808c015260a08b019690965260c08a019490945260e089019290925261010088015261012087015291850191909152610160840152166101808201526101a0015b604051602081830303815290604052805190602001209050919050565b600080611dc584612835565b9050600181611dd76020860186613405565b604080516000815260208181018084529490945260ff9092168282015291860135606082015290850135608082015260a0016020604051602081039080840390855afa158015611e2b573d6000803e3d6000fd5b5050604051601f1901519250506001600160a01b038216611e5f57604051638baa579f60e01b815260040160405180910390fd5b5092915050565b6000546001600160a01b03868116911614611ea8576001546001600160a01b03868116911614611ea85760405162820f3560e61b815260040160405180910390fd5b600080546001600160a01b03878116911614611ed357611ece6060860160408701612d7d565b611ee3565b611ee36040860160208701612d7d565b9050600082611efa60e0880135606089013561325c565b611f04919061325c565b6040516301d735e760e31b81526001600160a01b038481166004830152919250600091891690630eb9af3890602401602060405180830381865afa158015611f50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f749190613201565b604051632d182be560e21b8152600481018490523060248201526001600160a01b0387811660448301529192509082169063b460af94906064016020604051808303816000875af1158015611fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff19190613154565b50604051636eb1769f60e11b81523060048201526001600160a01b03898116602483015284169063dd62ed3e90604401602060405180830381865afa15801561203e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120629190613154565b60000361207f5761207f6001600160a01b0384168960001961241f565b6040516322c792d960e01b81526001600160a01b038916906322c792d990611a9f908a908a908a90600401613574565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fad5760405163703e46dd60e11b815260040160405180910390fd5b6040516001600160a01b0384811660248301528381166044830152606482018390526114299186918216906323b872dd90608401611838565b3361213a611060565b6001600160a01b031614610fad5760405163118cdaa760e01b815233600482015260240161101c565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102805460609160008051602061387d833981519152916122139061366d565b80601f016020809104026020016040519081016040528092919081815260200182805461223f9061366d565b801561228c5780601f106122615761010080835404028352916020019161228c565b820191906000526020600020905b81548152906001019060200180831161226f57829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103805460609160008051602061387d833981519152916122139061366d565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610fad57604051631afcd79f60e31b815260040160405180910390fd5b610fad6122d6565b61232f6122d6565b610fad612862565b61233f6122d6565b610b29828261286a565b6123516122d6565b6107da816128cb565b6005546001600160a01b031661238357604051630b37568b60e01b815260040160405180910390fd5b60006127106004548361239691906136a1565b6123a091906136b8565b90506001600160a01b0383166123e05780156123cc576005546123cc906001600160a01b031682611774565b610b096123d982846136da565b3390611774565b801561240057600554612400906001600160a01b0385811691168361180b565b610b093361240e83856136da565b6001600160a01b038616919061180b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261247084826128d3565b611429576040516001600160a01b038481166024830152600060448301526124a591869182169063095ea7b390606401611838565b611429848261254e565b6060814710156124d45760405163cd78605960e01b815230600482015260240161101c565b600080856001600160a01b031684866040516124f091906136ed565b60006040518083038185875af1925050503d806000811461252d576040519150601f19603f3d011682016040523d82523d6000602084013e612532565b606091505b509150915061254286838361297b565b925050505b9392505050565b60006125636001600160a01b038416836129d7565b905080516000141580156125885750808060200190518101906125869190613709565b155b15610b0957604051635274afe760e01b81526001600160a01b038416600482015260240161101c565b6125ba826129e5565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156125ff57610b098282612a4a565b610b29612ab7565b805160009081816001600160401b0381111561262557612625612e59565b60405190808252806020026020018201604052801561264e578160200160208202803683370190505b50905060005b8281101561274b577fae8afe996a65dac2aaac44f3859cc01f3527ee213e83ea2eda3501690d0ea95685828151811061268f5761268f61372b565b6020026020010151600001518683815181106126ad576126ad61372b565b6020026020010151602001518784815181106126cb576126cb61372b565b6020026020010151604001518051906020012060405160200161271094939291909384526001600160a01b039290921660208401526040830152606082015260800190565b604051602081830303815290604052805190602001208282815181106127385761273861372b565b6020908102919091010152600101612654565b508060405160200161275d9190613741565b6040516020818303038152906040528051906020012092505050919050565b60007f48c32350097d00445d05f246b194474a08c279eadfd70fd48d659fc07ffc7297826000015183602001518460400151856060015186608001518760a001518860c001518960e001518a6101000151604051602001611d9c9a99989796959493929190998a5260208a01989098526001600160a01b0396871660408a0152948616606089015292909416608087015260a086015260c085019290925260e08401919091526101008301526101208201526101400190565b6000610a0b612842612ad6565b8360405161190160f01b8152600281019290925260228201526042902090565b6115616122d6565b6128726122d6565b60008051602061387d8339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1026128ac84826137be565b50600381016128bb83826137be565b5060008082556001909101555050565b6111fd6122d6565b6000806000846001600160a01b0316846040516128f091906136ed565b6000604051808303816000865af19150503d806000811461292d576040519150601f19603f3d011682016040523d82523d6000602084013e612932565b606091505b509150915081801561295c57508051158061295c57508080602001905181019061295c9190613709565b801561297257506000856001600160a01b03163b115b95945050505050565b6060826129905761298b82612ae0565b612547565b81511580156129a757506001600160a01b0384163b155b156129d057604051639996b31560e01b81526001600160a01b038516600482015260240161101c565b5080612547565b6060610a08838360006124af565b806001600160a01b03163b600003612a1b57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161101c565b60008051602061389d83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612a6791906136ed565b600060405180830381855af49150503d8060008114612aa2576040519150601f19603f3d011682016040523d82523d6000602084013e612aa7565b606091505b509150915061297285838361297b565b3415610fad5760405163b398979f60e01b815260040160405180910390fd5b600061176f612b09565b805115612af05780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f612b34612b7d565b612b3c612be7565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600060008051602061387d83398151915281612b976121d4565b805190915015612baf57805160209091012092915050565b81548015612bbe579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b600060008051602061387d83398151915281612c01612297565b805190915015612c1957805160209091012092915050565b60018201548015612bbe579392505050565b6001600160a01b03811681146107da57600080fd5b8035612c4b81612c2b565b919050565b600080600080600060808688031215612c6857600080fd5b853594506020860135612c7a81612c2b565b93506040860135612c8a81612c2b565b925060608601356001600160401b03811115612ca557600080fd5b8601601f81018813612cb657600080fd5b80356001600160401b03811115612ccc57600080fd5b886020828401011115612cde57600080fd5b959894975092955050506020019190565b600080600080600080600060e0888a031215612d0a57600080fd5b8735612d1581612c2b565b96506020880135612d2581612c2b565b95506040880135612d3581612c2b565b94506060880135612d4581612c2b565b93506080880135612d5581612c2b565b925060a0880135612d6581612c2b565b96999598509396929591949193505060c09091013590565b600060208284031215612d8f57600080fd5b813561254781612c2b565b600060208284031215612dac57600080fd5b5035919050565b60008060408385031215612dc657600080fd5b8235612dd181612c2b565b91506020830135612de181612c2b565b809150509250929050565b600060608284031215612dfe57600080fd5b50919050565b6000806000838503610200811215612e1b57600080fd5b8435612e2681612c2b565b9350610180601f1982011215612e3b57600080fd5b50602084019150612e50856101a08601612dec565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715612e9257612e92612e59565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612ec057612ec0612e59565b604052919050565b60008060408385031215612edb57600080fd5b8235612ee681612c2b565b915060208301356001600160401b03811115612f0157600080fd5b8301601f81018513612f1257600080fd5b80356001600160401b03811115612f2b57612f2b612e59565b612f3e601f8201601f1916602001612e98565b818152866020838501011115612f5357600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006102608284031215612dfe57600080fd5b60008060008060006101208688031215612f9f57600080fd5b8535612faa81612c2b565b945060208601356001600160401b03811115612fc557600080fd5b612fd188828901612f73565b945050612fe18760408801612dec565b9250612ff08760a08801612dec565b94979396509194610100013592915050565b60005b8381101561301d578181015183820152602001613005565b50506000910152565b6000815180845261303e816020860160208601613002565b601f01601f19169290920160200192915050565b60ff60f81b8816815260e06020820152600061307160e0830189613026565b82810360408401526130838189613026565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501528451808252602080870193509091019060005b818110156130d95783518352602093840193909201916001016130bb565b50909b9a5050505050505050505050565b600080600060a084860312156130ff57600080fd5b833561310a81612c2b565b925060208401356001600160401b0381111561312557600080fd5b61313186828701612f73565b925050612e508560408601612dec565b602081526000610a086020830184613026565b60006020828403121561316657600080fd5b5051919050565b600061012082840312801561318157600080fd5b50600061318c612e6f565b8335815261319c60208501612c40565b60208201526131ad60408501612c40565b60408201526131be60608501612c40565b60608201526080848101359082015260a0808501359082015260c0808501359082015260e080850135908201526101009384013593810193909352509092915050565b60006020828403121561321357600080fd5b815161254781612c2b565b602081016003831061324057634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052601160045260246000fd5b80820180821115610a0b57610a0b613246565b80358252602081013561328181612c2b565b6001600160a01b0316602083015261329b60408201612c40565b6001600160a01b031660408301526132b560608201612c40565b6001600160a01b031660608301526080818101359083015260a0808201359083015260c0808201359083015260e0808201359083015261010090810135910152565b803560ff81168114612c4b57600080fd5b60ff613313826132f7565b16825260208181013590830152604090810135910152565b8235815260208084013590820152604080840135908201526101e08101613358606080840190860161326f565b612547610180830184613308565b8051612c4b81612c2b565b600061012082840312801561338557600080fd5b506000613390612e6f565b835181526133a060208501613366565b60208201526133b160408501613366565b60408201526133c260608501613366565b60608201526080848101519082015260a0808501519082015260c0808501519082015260e080850151908201526101009384015193810193909352509092915050565b60006020828403121561341757600080fd5b610a08826132f7565b6000808335601e1984360301811261343757600080fd5b83016020810192503590506001600160401b0381111561345657600080fd5b8060051b360382131561346857600080fd5b9250929050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60008383855260208501945060208460051b8201018360005b8681101561356857838303601f19018852813536879003605e190181126134d757600080fd5b860180356134e481612c2b565b6001600160a01b0316845260208181013590850152604081013536829003601e1901811261351157600080fd5b016020810190356001600160401b0381111561352c57600080fd5b80360382131561353b57600080fd5b6060604086015261355060608601828461346f565b60209a8b019a909550939093019250506001016134b1565b50909695505050505050565b60a0808252843590820152600061358d60208601612c40565b6001600160a01b031660c08301526135a760408601612c40565b6001600160a01b03811660e084015250606085013561010083810191909152608086013561012084015260a086013561014084015260c086013561016084015260e08601356101808401526135fe90860186613420565b6102606101a085015261361661030085018284613498565b91505061362b6101c08401610120880161326f565b6136386102408701612c40565b6001600160a01b03166102e084015290506136566020830185613308565b6001600160a01b0383166080830152949350505050565b600181811c9082168061368157607f821691505b602082108103612dfe57634e487b7160e01b600052602260045260246000fd5b8082028115828204841417610a0b57610a0b613246565b6000826136d557634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610a0b57610a0b613246565b600082516136ff818460208701613002565b9190910192915050565b60006020828403121561371b57600080fd5b8151801515811461254757600080fd5b634e487b7160e01b600052603260045260246000fd5b8151600090829060208501835b8281101561376c57815184526020938401939091019060010161374e565b509195945050505050565b601f821115610b0957806000526020600020601f840160051c8101602085101561379e5750805b601f840160051c820191505b8181101561063757600081556001016137aa565b81516001600160401b038111156137d7576137d7612e59565b6137eb816137e5845461366d565b84613777565b6020601f82116001811461381f57600083156138075750848201515b600019600385901b1c1916600184901b178455610637565b600084815260208120601f198516915b8281101561384f578785015182556020948501946001909201910161382f565b508482101561386d5786840151600019600387901b60f8161c191681555b50505050600190811b0190555056fea16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a26469706673582212208a37969878a535c2c5843d52b95dcd1c6f52b945eaaa0260aa8c388095aea99864736f6c634300081a0033