0 txs
18.9k calls
constructor
constructor()
functions
authorizedCallers
viewfunction authorizedCallers(address caller) view returns (bool authorized)
getAnnouncedOrder
viewfunction getAnnouncedOrder(address account_) view returns (tuple order_)
getLimitOrder
viewfunction getLimitOrder(uint256 tokenId_) view returns (tuple order_)
minDepositAmountUSD
viewfunction minDepositAmountUSD() view returns (uint256)
minExecutabilityAge
viewfunction minExecutabilityAge() view returns (uint64)
MODULE_KEY
viewfunction MODULE_KEY() view returns (bytes32)
vault
viewfunction vault() view returns (address)
addAuthorizedCaller
nonpayablefunction addAuthorizedCaller(address caller_)
announceLeverageAdjust
nonpayablefunction announceLeverageAdjust(uint256 tokenId_, int256 marginAdjustment_, int256 additionalSizeAdjustment_, uint256 fillPrice_, uint256 keeperFee_)
announceLeverageClose
nonpayablefunction announceLeverageClose(uint256 tokenId_, uint256 minFillPrice_, uint256 keeperFee_)
announceLeverageOpen
nonpayablefunction announceLeverageOpen(uint256 margin_, uint256 additionalSize_, uint256 maxFillPrice_, uint256 keeperFee_)
announceLeverageOpenFor
nonpayablefunction announceLeverageOpenFor(uint256 margin_, uint256 additionalSize_, uint256 maxFillPrice_, uint256 stopLossPrice_, uint256 profitTakePrice_, uint256 keeperFee_, address receiver_)
announceLeverageOpenWithLimits
nonpayablefunction announceLeverageOpenWithLimits(uint256 margin_, uint256 additionalSize_, uint256 maxFillPrice_, uint256 stopLossPrice_, uint256 profitTakePrice_, uint256 keeperFee_)
announceLimitOrder
nonpayablefunction announceLimitOrder(uint256 tokenId_, uint256 stopLossPrice_, uint256 profitTakePrice_)
announceStableDeposit
nonpayablefunction announceStableDeposit(uint256 depositAmount_, uint256 minAmountOut_, uint256 keeperFee_)
announceStableDepositFor
nonpayablefunction announceStableDepositFor(uint256 depositAmount_, uint256 minAmountOut_, uint256 keeperFee_, address receiver_)
announceStableWithdraw
nonpayablefunction announceStableWithdraw(uint256 withdrawAmount_, uint256 minAmountOut_, uint256 keeperFee_)
cancelLimitOrder
nonpayablefunction cancelLimitOrder(uint256 tokenId_)
createLimitOrder
nonpayablefunction createLimitOrder(uint256 tokenId_, address positionOwner_, uint256 stopLossPrice_, uint256 profitTakePrice_)
deleteLimitOrder
nonpayablefunction deleteLimitOrder(uint256 tokenId_)
deleteOrder
nonpayablefunction deleteOrder(address account_)
initialize
nonpayablefunction initialize(address vault_, uint128 minDepositAmountUSD_, uint64 minExecutabilityAge_)
removeAuthorizedCaller
nonpayablefunction removeAuthorizedCaller(address caller_)
resetExecutionTime
nonpayablefunction resetExecutionTime(uint256 tokenId_)
setminDepositAmountUSD
nonpayablefunction setminDepositAmountUSD(uint256 minDepositAmountUSD_)
setMinExecutabilityAge
nonpayablefunction setMinExecutabilityAge(uint64 minExecutabilityAge_)
setVault
nonpayablefunction setVault(address vault_)
events
Initialized
event Initialized(uint64 version)
LimitOrderAnnounced
event LimitOrderAnnounced(address account, uint256 tokenId, uint256 stopLossPrice, uint256 profitTakePrice)
LimitOrderCancelled
event LimitOrderCancelled(address account, uint256 tokenId)
OrderAnnounced
event OrderAnnounced(address account, uint8 orderType, uint256 keeperFee)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
AmountTooSmall
error AmountTooSmall(uint256 amount, uint256 minAmount)
FailedInnerCall
error FailedInnerCall()
HighSlippage
error HighSlippage(uint256 supplied, uint256 accepted)
InvalidFee
error InvalidFee(uint256 fee)
InvalidInitialization
error InvalidInitialization()
InvalidLimitOrderPrices
error InvalidLimitOrderPrices(uint256 stopLossPrice, uint256 profitTakePrice)
LimitOrderInvalid
error LimitOrderInvalid(uint256 tokenId)
MaxFillPriceTooLow
error MaxFillPriceTooLow(uint256 maxFillPrice, uint256 currentPrice)
MaxPositionsReached
error MaxPositionsReached()
MinFillPriceTooHigh
error MinFillPriceTooHigh(uint256 minFillPrice, uint256 currentPrice)
ModuleKeyEmpty
error ModuleKeyEmpty()
NotEnoughBalanceForWithdraw
error NotEnoughBalanceForWithdraw(address account, uint256 totalBalance, uint256 withdrawAmount)
NotEnoughMarginForFees
error NotEnoughMarginForFees(int256 marginAmount, uint256 feeAmount)
NotInitializing
error NotInitializing()
NotTokenOwner
error NotTokenOwner(uint256 tokenId, address msgSender)
OnlyAuthorizedCaller
error OnlyAuthorizedCaller(address caller)
OnlyAuthorizedModule
error OnlyAuthorizedModule(address msgSender)
OnlyOwner
error OnlyOwner(address msgSender)
Paused
error Paused(bytes32 moduleKey)
PositionCreatesBadDebt
error PositionCreatesBadDebt()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UnauthorizedReceiver
error UnauthorizedReceiver(address account)
ValueNotPositive
error ValueNotPositive(string variableName)
WithdrawalTooSmall
error WithdrawalTooSmall(uint256 withdrawAmount, uint256 keeperFee)
ZeroAddress
error ZeroAddress(string variableName)
ZeroValue
error ZeroValue(string variableName)
creation bytecode
0x6080604052348015600f57600080fd5b506016601a565b60ca565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560695760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b614af5806100d96000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636817031b116100f9578063bb6dbba011610097578063e859f37211610071578063e859f372146103bb578063eb47d64a146103ce578063f2f6a2ce146103e1578063fbfa77cf146103f457600080fd5b8063bb6dbba014610382578063cfb9805514610395578063d0ca65fc146103a857600080fd5b806390f9644f116100d357806390f9644f14610336578063a5cdc8fc14610349578063b1c41fc31461035c578063b7aa02311461036f57600080fd5b80636817031b146102fd5780637b6d8340146103105780638d91e38e1461032357600080fd5b8063360f699b116101665780635306102611610140578063530610261461028e578063536fff6c146102ae5780635568efde146102e15780635869bdce146102f457600080fd5b8063360f699b146102515780633d23b9ca146102645780634d76666c1461027b57600080fd5b806318dc31901161019757806318dc31901461021857806322e99d1f1461022b5780632cf3aadf1461023e57600080fd5b8063027566a9146101be5780630fc9b822146101f057806313a155ea14610205575b600080fd5b6033546101d29067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b6102036101fe36600461422b565b61041f565b005b61020361021336600461427b565b610fac565b610203610226366004614298565b611066565b610203610239366004614298565b61116c565b61020361024c3660046142b1565b611207565b61020361025f3660046142b1565b61182c565b61026d60005481565b6040519081526020016101e7565b6102036102893660046142dd565b611d0d565b6102a161029c366004614298565b61274c565b6040516101e79190614399565b6102d16102bc36600461427b565b60346020526000908152604090205460ff1681565b60405190151581526020016101e7565b6102036102ef366004614404565b612876565b61026d60325481565b61020361030b36600461427b565b61288d565b6102a161031e36600461427b565b612991565b61020361033136600461427b565b6129f6565b610203610344366004614447565b612ad3565b610203610357366004614298565b612aeb565b61020361036a3660046142b1565b612c53565b61020361037d36600461427b565b612c5f565b610203610390366004614496565b612d16565b6102036103a33660046144b1565b612db5565b6102036103b63660046142b1565b612f17565b6102036103c9366004614298565b61303e565b6102036103dc36600461450d565b6130ce565b6102036103ef36600461454a565b61316a565b600154610407906001600160a01b031681565b6040516001600160a01b0390911681526020016101e7565b600154600054604051632b47fe9b60e01b81526001600160a01b0390921691632b47fe9b916104549160040190815260200190565b602060405180830381865afa158015610471573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610495919061458b565b156104c257600054604051630cb09dc760e01b81526004016104b991815260200190565b60405180910390fd5b60006104ce82336137be565b9050841580156104dc575083155b1561053c5760405163046c82ad60e41b815260206004820152602960248201527f6d617267696e41646a7573746d656e747c6164646974696f6e616c53697a6541604482015268191a9d5cdd1b595b9d60ba1b60648201526084016104b9565b600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b60048201526000916001600160a01b03169063aa10e9f090602401602060405180830381865afa158015610596573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ba91906145ad565b6040516331a9108f60e11b81526004810189905290915033906001600160a01b03831690636352211e90602401602060405180830381865afa158015610604573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062891906145ad565b6001600160a01b03161461065857604051630da7a30b60e31b8152600481018890523360248201526044016104b9565b600154604051630aa10e9f60e41b81526b6f7261636c654d6f64756c6560a01b6004820152600091829182916001600160a01b03169063aa10e9f090602401602060405180830381865afa1580156106b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d891906145ad565b6001600160a01b03166341976e09600160009054906101000a90046001600160a01b03166001600160a01b031663d8dfeb456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075d91906145ad565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016040805180830381865afa1580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906145ca565b5090506000881261094c57600088131561091c57600154604051634f599c3160e11b8152600481018a90526001600160a01b0390911690639eb3386290602401602060405180830381865afa158015610821573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084591906145ee565b600154604051630f0245ad60e01b8152600481018390529193506001600160a01b031690630ce8fe61908a908390630f0245ad90602401602060405180830381865afa158015610899573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bd91906145ee565b6108c7908661461d565b6040516001600160e01b031960e085901b1681526004810192909252602482015260440160006040518083038186803b15801561090357600080fd5b505afa158015610917573d6000803e3d6000fd5b505050505b808710156109475760405163086aa6a360e41b815260048101889052602481018290526044016104b9565b6109f5565b6001546001600160a01b0316639eb338626109698a600019614630565b6040518263ffffffff1660e01b815260040161098791815260200190565b602060405180830381865afa1580156109a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c891906145ee565b9150808711156109f55760405163117838d960e01b815260048101889052602481018290526044016104b9565b6109ff8683614660565b60015460405163eb02c30160e01b8152600481018d9052919450600093508992506001600160a01b03169063eb02c30190602401608060405180830381865afa158015610a50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a749190614689565b60400151610a8291906146f3565b90506000808913610a9c57610a97838a61471b565b610a9e565b885b604051633de9a8bb60e11b8152600481018c90526001600160a01b03861690637bd3517690602401606060405180830381865afa158015610ae3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b079190614742565b60400151610b1591906146f3565b90506000811280610b265750600082125b15610b8757604051634f686b7d60e01b815260206004820152602a60248201527f6e65774d617267696e4166746572536574746c656d656e747c6e65774164646960448201526974696f6e616c53697a6560b01b60648201526084016104b9565b600154604051630aa10e9f60e41b8152706c69717569646174696f6e4d6f64756c6560781b600482015282916001600160a01b03169063aa10e9f090602401602060405180830381865afa158015610be3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0791906145ad565b6040516314a184e760e01b815260048101859052602481018a90526001600160a01b0391909116906314a184e790604401602060405180830381865afa158015610c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7991906145ee565b10610c9757604051632904a7fd60e11b815260040160405180910390fd5b604051630d46a8eb60e11b815260048101829052602481018390526001600160a01b03851690631a8d51d69060440160006040518083038186803b158015610cde57600080fd5b505afa158015610cf2573d6000803e3d6000fd5b505050505050604051806080016040528060056006811115610d1657610d1661433d565b81526020018581526020018467ffffffffffffffff1681526020016040518060c001604052808b81526020018a81526020018981526020018881526020018785610d60919061461d565b815260200184815250604051602001610db89190600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b60408051601f19818403018152918152915233600090815260356020522081518154829060ff19166001836006811115610df457610df461433d565b021790555060208201516001820155604082015160028201805467ffffffffffffffff191667ffffffffffffffff90921691909117905560608201516003820190610e3f908261482a565b5050506000871315610f6657600154604051630aa10e9f60e41b8152736f72646572457865637574696f6e4d6f64756c6560601b6004820152610f669133916001600160a01b039091169063aa10e9f090602401602060405180830381865afa158015610eb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed491906145ad565b610ede848b614660565b600160009054906101000a90046001600160a01b03166001600160a01b031663d8dfeb456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5591906145ad565b6001600160a01b0316929190613a05565b7f0aaed4f1864bd4663319a4a0ceb0b5f0766e7e58ee27cf50c48232258d5f582c33600586604051610f9a939291906148e9565b60405180910390a15050505050505050565b60015460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610ff5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101991906145ad565b6001600160a01b03161461104257604051630543601560e11b81523360048201526024016104b9565b6001600160a01b03166000908152603460205260409020805460ff19166001179055565b60015460405163399dd46360e01b81523360048201526001600160a01b039091169063399dd46390602401602060405180830381865afa1580156110ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d2919061458b565b15156000036110f657604051633b9e98fd60e11b81523360048201526024016104b9565b600660008281526036602052604090205460ff16600681111561111b5761111b61433d565b03611169576033546111379067ffffffffffffffff1642614660565b6000828152603660205260409020600201805467ffffffffffffffff191667ffffffffffffffff929092169190911790555b50565b60015460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa1580156111b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d991906145ad565b6001600160a01b03161461120257604051630543601560e11b81523360048201526024016104b9565b603255565b600154600054604051632b47fe9b60e01b81526001600160a01b0390921691632b47fe9b9161123c9160040190815260200190565b602060405180830381865afa158015611259573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127d919061458b565b156112a157600054604051630cb09dc760e01b81526004016104b991815260200190565b60006112ad82336137be565b600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b600482015291925060009182916001600160a01b03169063aa10e9f090602401602060405180830381865afa15801561130c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133091906145ad565b6040516331a9108f60e11b81526004810188905290915033906001600160a01b03831690636352211e90602401602060405180830381865afa15801561137a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139e91906145ad565b6001600160a01b0316146113ce57604051630da7a30b60e31b8152600481018790523360248201526044016104b9565b60015460405163eb02c30160e01b8152600481018890526000916001600160a01b03169063eb02c30190602401608060405180830381865afa158015611418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143c9190614689565b6040908101516001549151634f599c3160e11b8152600481018290529092506001600160a01b0390911690639eb3386290602401602060405180830381865afa15801561148d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b191906145ee565b604051633de9a8bb60e11b8152600481018990529093506000906001600160a01b03841690637bd3517690602401606060405180830381865afa1580156114fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115209190614742565b60400151905060006115328786614660565b90508082121561155f57604051630c46115560e31b815260048101839052602481018290526044016104b9565b600154604051630aa10e9f60e41b81526b6f7261636c654d6f64756c6560a01b60048201526000916001600160a01b03169063aa10e9f090602401602060405180830381865afa1580156115b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115db91906145ad565b6001600160a01b03166341976e09600160009054906101000a90046001600160a01b03166001600160a01b031663d8dfeb456040518163ffffffff1660e01b8152600401602060405180830381865afa15801561163c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166091906145ad565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016040805180830381865afa1580156116a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c791906145ca565b509050808911156116f55760405163117838d960e01b8152600481018a9052602481018290526044016104b9565b505050506040518060800160405280600460068111156117175761171761433d565b81526020018581526020018467ffffffffffffffff16815260200160405180606001604052808981526020018881526020018581525060405160200161175d9190614914565b60408051601f19818403018152918152915233600090815260356020522081518154829060ff191660018360068111156117995761179961433d565b021790555060208201516001820155604082015160028201805467ffffffffffffffff191667ffffffffffffffff909216919091179055606082015160038201906117e4908261482a565b509050507f0aaed4f1864bd4663319a4a0ceb0b5f0766e7e58ee27cf50c48232258d5f582c3360048660405161181c939291906148e9565b60405180910390a1505050505050565b600154600054604051632b47fe9b60e01b81526001600160a01b0390921691632b47fe9b916118619160040190815260200190565b602060405180830381865afa15801561187e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a2919061458b565b156118c657600054604051630cb09dc760e01b81526004016104b991815260200190565b60006118d282336137be565b600154604051630aa10e9f60e41b81526b737461626c654d6f64756c6560a01b60048201529192506000916001600160a01b039091169063aa10e9f090602401602060405180830381865afa15801561192f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195391906145ad565b6040516370a0823160e01b81523360048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561199d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c191906145ee565b9050858110156119f457604051637462f12160e01b815233600482015260248101829052604481018790526064016104b9565b60405163d24545a760e01b81526004810187905260009081906001600160a01b0385169063d24545a7906024016040805180830381865afa158015611a3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6191906145ca565b600154604051630f0245ad60e01b8152600481018390529294509092506001600160a01b031690630ce8fe61906000908390630f0245ad90602401602060405180830381865afa158015611ab9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611add91906145ee565b611ae79086614660565b611af090614935565b6040516001600160e01b031960e085901b1681526004810192909252602482015260440160006040518083038186803b158015611b2c57600080fd5b505afa158015611b40573d6000803e3d6000fd5b5050505081861115611b6f5760405163666f986f60e11b815260048101839052602481018790526044016104b9565b611b79868361461d565b915086821015611ba65760405163437879d160e01b815260048101839052602481018890526044016104b9565b50506040805160808101825260028152602080820187905267ffffffffffffffff86168284015282518084018452898152810188815283518083018b9052905181850152835180820385018152606091820185529083015233600090815260359091529190912081518154829060ff19166001836006811115611c2b57611c2b61433d565b021790555060208201516001820155604082015160028201805467ffffffffffffffff191667ffffffffffffffff90921691909117905560608201516003820190611c76908261482a565b505060405163282d3fdf60e01b8152336004820152602481018890526001600160a01b038416915063282d3fdf90604401600060405180830381600087803b158015611cc157600080fd5b505af1158015611cd5573d6000803e3d6000fd5b505050507f0aaed4f1864bd4663319a4a0ceb0b5f0766e7e58ee27cf50c48232258d5f582c3360028660405161181c939291906148e9565b600154600054604051632b47fe9b60e01b81526001600160a01b0390921691632b47fe9b91611d429160040190815260200190565b602060405180830381865afa158015611d5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d83919061458b565b15611da757600054604051630cb09dc760e01b81526004016104b991815260200190565b6001600160a01b0381163314801590611dd057503360009081526034602052604090205460ff16155b15611df057604051635fd2804d60e01b81523360048201526024016104b9565b600154604051630aa10e9f60e41b81526f636f6e74726f6c6c65724d6f64756c6560801b60048201526001600160a01b039091169063aa10e9f090602401602060405180830381865afa158015611e4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6f91906145ad565b6001600160a01b0316633538dc626040518163ffffffff1660e01b8152600401602060405180830381865afa158015611eac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed09190614951565b60ff1660020361200557600160009054906101000a90046001600160a01b03166001600160a01b03166315991a1a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f51919061458b565b15611f6f5760405163cf886df360e01b815260040160405180910390fd5b600154604051633e6ea80560e01b81526001600160a01b03838116600483015290911690633e6ea80590602401602060405180830381865afa158015611fb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fdd919061458b565b6120055760405163f521dd7d60e01b81526001600160a01b03821660048201526024016104b9565b600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b60048201526000916001600160a01b03169063aa10e9f090602401602060405180830381865afa15801561205f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208391906145ad565b9050600061209184846137be565b600154604051634f599c3160e11b8152600481018b90529192506000916001600160a01b0390911690639eb3386290602401602060405180830381865afa1580156120e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210491906145ee565b600154604051630f0245ad60e01b8152600481018390529192506001600160a01b031690630ce8fe61908b908390630f0245ad90602401602060405180830381865afa158015612158573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217c91906145ee565b612186908561461d565b6040516001600160e01b031960e085901b1681526004810192909252602482015260440160006040518083038186803b1580156121c257600080fd5b505afa1580156121d6573d6000803e3d6000fd5b5050604051630d46a8eb60e11b8152600481018d9052602481018c90526001600160a01b0386169250631a8d51d6915060440160006040518083038186803b15801561222157600080fd5b505afa158015612235573d6000803e3d6000fd5b5050600154604051630aa10e9f60e41b81526b6f7261636c654d6f64756c6560a01b6004820152600093506001600160a01b03909116915063aa10e9f090602401602060405180830381865afa158015612293573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b791906145ad565b6001600160a01b03166341976e09600160009054906101000a90046001600160a01b03166001600160a01b031663d8dfeb456040518163ffffffff1660e01b8152600401602060405180830381865afa158015612318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233c91906145ad565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016040805180830381865afa15801561237f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a391906145ca565b509050808910156123d15760405163086aa6a360e41b8152600481018a9052602481018290526044016104b9565b600154604051630aa10e9f60e41b8152706c69717569646174696f6e4d6f64756c6560781b60048201528c916001600160a01b03169063aa10e9f090602401602060405180830381865afa15801561242d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245191906145ad565b6040516314a184e760e01b8152600481018d9052602481018c90526001600160a01b0391909116906314a184e790604401602060405180830381865afa15801561249f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c391906145ee565b106124e157604051632904a7fd60e11b815260040160405180910390fd5b86881061250b57604051631795be1560e11b815260048101899052602481018890526044016104b9565b604080516080810190915280600381526020018781526020018467ffffffffffffffff1681526020016040518060e001604052808e81526020018d81526020018c81526020018b81526020018a8152602001858152602001336001600160a01b03168152506040516020016125d29190600060e082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a08301526001600160a01b0360c08401511660c083015292915050565b60408051601f1981840301815291815291526001600160a01b038716600090815260356020522081518154829060ff191660018360068111156126175761261761433d565b021790555060208201516001820155604082015160028201805467ffffffffffffffff191667ffffffffffffffff90921691909117905560608201516003820190612662908261482a565b5050600154604051630aa10e9f60e41b8152736f72646572457865637574696f6e4d6f64756c6560601b6004820152612703925033916001600160a01b03169063aa10e9f090602401602060405180830381865afa1580156126c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ec91906145ad565b84898f6126f99190614660565b610ede9190614660565b7f0aaed4f1864bd4663319a4a0ceb0b5f0766e7e58ee27cf50c48232258d5f582c85600388604051612737939291906148e9565b60405180910390a15050505050505050505050565b61277660408051608081019091528060008152600060208201819052604082015260609081015290565b600082815260366020526040908190208151608081019092528054829060ff1660068111156127a7576127a761433d565b60068111156127b8576127b861433d565b815260018201546020820152600282015467ffffffffffffffff1660408201526003820180546060909201916127ed906147a2565b80601f0160208091040260200160405190810160405280929190818152602001828054612819906147a2565b80156128665780601f1061283b57610100808354040283529160200191612866565b820191906000526020600020905b81548152906001019060200180831161284957829003601f168201915b5050505050815250509050919050565b61288586868686868633611d0d565b505050505050565b60015460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa1580156128d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128fa91906145ad565b6001600160a01b03161461292357604051630543601560e11b81523360048201526024016104b9565b6001600160a01b0381166129625760405163eac0d38960e01b81526020600482015260056024820152641d985d5b1d60da1b60448201526064016104b9565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6129bb60408051608081019091528060008152600060208201819052604082015260609081015290565b6001600160a01b038216600090815260356020526040908190208151608081019092528054829060ff1660068111156127a7576127a761433d565b60015460405163399dd46360e01b81523360048201526001600160a01b039091169063399dd46390602401602060405180830381865afa158015612a3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a62919061458b565b1515600003612a8657604051633b9e98fd60e11b81523360048201526024016104b9565b6001600160a01b0381166000908152603560205260408120805460ff191681556001810182905560028101805467ffffffffffffffff1916905590612ace60038301826141dd565b505050565b612ae584848460006000198633611d0d565b50505050565b600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b600482015233916001600160a01b03169063aa10e9f090602401602060405180830381865afa158015612b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6891906145ad565b6001600160a01b0316636352211e836040518263ffffffff1660e01b8152600401612b9591815260200190565b602060405180830381865afa158015612bb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bd691906145ad565b6001600160a01b031614612c0657604051630da7a30b60e31b8152600481018290523360248201526044016104b9565b60008181526036602052604081205460ff166006811115612c2957612c2961433d565b03612c4a57604051630114a05960e61b8152600481018290526024016104b9565b61116981613a74565b612ace8383833361316a565b60015460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015612ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ccc91906145ad565b6001600160a01b031614612cf557604051630543601560e11b81523360048201526024016104b9565b6001600160a01b03166000908152603460205260409020805460ff19169055565b60015460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015612d5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d8391906145ad565b6001600160a01b031614612dac57604051630543601560e11b81523360048201526024016104b9565b61116981613be3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015612e005750825b905060008267ffffffffffffffff166001148015612e1d5750303b155b905081158015612e2b575080155b15612e495760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315612e7d57845468ff00000000000000001916680100000000000000001785555b612ea77f6f72646572416e6e6f756e63656d656e744d6f64756c6500000000000000000089613c62565b612eb086613be3565b6fffffffffffffffffffffffffffffffff87166032558315612f0d57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610f9a565b5050505050505050565b600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b600482015233916001600160a01b03169063aa10e9f090602401602060405180830381865afa158015612f70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f9491906145ad565b6001600160a01b0316636352211e856040518263ffffffff1660e01b8152600401612fc191815260200190565b602060405180830381865afa158015612fde573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300291906145ad565b6001600160a01b03161461303257604051630da7a30b60e31b8152600481018490523360248201526044016104b9565b612ace83338484613cf3565b60015460405163399dd46360e01b81523360048201526001600160a01b039091169063399dd46390602401602060405180830381865afa158015613086573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130aa919061458b565b1515600003612c4a57604051633b9e98fd60e11b81523360048201526024016104b9565b60015460405163399dd46360e01b81523360048201526001600160a01b039091169063399dd46390602401602060405180830381865afa158015613116573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061313a919061458b565b151560000361315e57604051633b9e98fd60e11b81523360048201526024016104b9565b612ae584848484613cf3565b600154600054604051632b47fe9b60e01b81526001600160a01b0390921691632b47fe9b9161319f9160040190815260200190565b602060405180830381865afa1580156131bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131e0919061458b565b1561320457600054604051630cb09dc760e01b81526004016104b991815260200190565b6001600160a01b038116331480159061322d57503360009081526034602052604090205460ff16155b1561324d57604051635fd2804d60e01b81523360048201526024016104b9565b6001546040805163d8dfeb4560e01b815290516000926001600160a01b03169163d8dfeb459160048083019260209291908290030181865afa158015613297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132bb91906145ad565b905060006132c984846137be565b600154604051630b85d2d960e11b8152600481018990529192506001600160a01b03169063170ba5b29060240160006040518083038186803b15801561330e57600080fd5b505afa158015613322573d6000803e3d6000fd5b5050603254600154604051630aa10e9f60e41b81526b6f7261636c654d6f64756c6560a01b6004820152919350600092506001600160a01b03169063aa10e9f090602401602060405180830381865afa158015613383573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133a791906145ad565b6040516341976e0960e01b81526001600160a01b03868116600483015291909116906341976e09906024016040805180830381865afa1580156133ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061341291906145ca565b5090506000846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134799190614951565b61348490600a614a5b565b61348e838b614a6a565b6134989190614a81565b9050828110156134c457604051625a5b2760e31b815260048101829052602481018490526044016104b9565b5050600154604051630aa10e9f60e41b81526b737461626c654d6f64756c6560a01b6004820152600092506001600160a01b039091169063aa10e9f090602401602060405180830381865afa158015613521573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061354591906145ad565b6001600160a01b03166336758550886040518263ffffffff1660e01b815260040161357291815260200190565b602060405180830381865afa15801561358f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135b391906145ee565b9050858110156135e05760405163437879d160e01b815260048101829052602481018790526044016104b9565b604080516080808201835260018252602080830189905267ffffffffffffffff8616838501528351606080820186528c82528183018c81523392870192835286519384018e90525195830195909552516001600160a01b03168185015291928301910160408051601f1981840301815291815291526001600160a01b038616600090815260356020522081518154829060ff191660018360068111156136885761368861433d565b021790555060208201516001820155604082015160028201805467ffffffffffffffff191667ffffffffffffffff909216919091179055606082015160038201906136d3908261482a565b5050600154604051630aa10e9f60e41b8152736f72646572457865637574696f6e4d6f64756c6560601b6004820152613779925033916001600160a01b03169063aa10e9f090602401602060405180830381865afa158015613739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375d91906145ad565b613767888b614660565b6001600160a01b038716929190613a05565b7f0aaed4f1864bd4663319a4a0ceb0b5f0766e7e58ee27cf50c48232258d5f582c846001876040516137ad939291906148e9565b60405180910390a150505050505050565b60006137c8613f11565b6001600160a01b03821661380a5760405163eac0d38960e01b81526020600482015260086024820152673932b1b2b4bb32b960c11b60448201526064016104b9565b600154604051630aa10e9f60e41b8152686b656570657246656560b81b60048201526001600160a01b039091169063aa10e9f090602401602060405180830381865afa15801561385e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061388291906145ad565b6001600160a01b031663354662e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138e391906145ee565b8310156139065760405163179c637760e11b8152600481018490526024016104b9565b600154604051630aa10e9f60e41b8152736f72646572457865637574696f6e4d6f64756c6560601b60048201526001600160a01b039091169063aa10e9f090602401602060405180830381865afa158015613965573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061398991906145ad565b60405163e014396960e01b81526001600160a01b038481166004830152919091169063e014396990602401600060405180830381600087803b1580156139ce57600080fd5b505af11580156139e2573d6000803e3d6000fd5b50506033546139fe925067ffffffffffffffff16905042614660565b9392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052612ae5908590614044565b6000818152603660205260408120805460ff191681556001810182905560028101805467ffffffffffffffff1916905590613ab260038301826141dd565b5050600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b60048201527f76ab445f753faf76ff52f3925f47bb71c776349e0350af38240a122663c5e58e916001600160a01b03169063aa10e9f090602401602060405180830381865afa158015613b2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b5191906145ad565b6001600160a01b0316636352211e836040518263ffffffff1660e01b8152600401613b7e91815260200190565b602060405180830381865afa158015613b9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bbf91906145ad565b604080516001600160a01b039092168252602082018490520160405180910390a150565b8067ffffffffffffffff16600003613c3e5760405163046c82ad60e41b815260206004820152601360248201527f6d696e4578656375746162696c6974794167650000000000000000000000000060448201526064016104b9565b6033805467ffffffffffffffff191667ffffffffffffffff92909216919091179055565b81613c805760405163673791e360e11b815260040160405180910390fd5b6001600160a01b038116613cbf5760405163eac0d38960e01b81526020600482015260056024820152641d985d5b1d60da1b60448201526064016104b9565b6000919091556001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909216919091179055565b600154600054604051632b47fe9b60e01b81526001600160a01b0390921691632b47fe9b91613d289160040190815260200190565b602060405180830381865afa158015613d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d69919061458b565b15613d8d57600054604051630cb09dc760e01b81526004016104b991815260200190565b613d95613f11565b603354600090613daf9067ffffffffffffffff1642614660565b9050818310613ddb57604051631795be1560e11b815260048101849052602481018390526044016104b9565b60408051608081019091528060068152602001600081526020018267ffffffffffffffff168152602001604051806060016040528088815260200186815260200185815250604051602001613e309190614914565b60408051601f198184030181529181529152600087815260366020522081518154829060ff19166001836006811115613e6b57613e6b61433d565b021790555060208201516001820155604082015160028201805467ffffffffffffffff191667ffffffffffffffff90921691909117905560608201516003820190613eb6908261482a565b5050604080516001600160a01b038716815260208101889052908101859052606081018490527f1d4556de98f4650b3c61a673c8378837a424fc8113f8564d641f7cf2c75b995d915060800160405180910390a15050505050565b600154604051630aa10e9f60e41b81526f636f6e74726f6c6c65724d6f64756c6560801b60048201526001600160a01b039091169063aa10e9f090602401602060405180830381865afa158015613f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f9091906145ad565b6001600160a01b031663146a89cc6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613fca57600080fd5b505af1158015613fde573d6000803e3d6000fd5b50505050600160009054906101000a90046001600160a01b03166001600160a01b03166360435c306040518163ffffffff1660e01b815260040160006040518083038186803b15801561403057600080fd5b505afa158015612ae5573d6000803e3d6000fd5b60006140596001600160a01b038416836140a7565b9050805160001415801561407e57508080602001905181019061407c919061458b565b155b15612ace57604051635274afe760e01b81526001600160a01b03841660048201526024016104b9565b60606139fe838360006140bb565b92915050565b6060814710156140e05760405163cd78605960e01b81523060048201526024016104b9565b600080856001600160a01b031684866040516140fc9190614aa3565b60006040518083038185875af1925050503d8060008114614139576040519150601f19603f3d011682016040523d82523d6000602084013e61413e565b606091505b509150915061414e868383614158565b9695505050505050565b60608261416d57614168826141b4565b6139fe565b815115801561418457506001600160a01b0384163b155b156141ad57604051639996b31560e01b81526001600160a01b03851660048201526024016104b9565b50806139fe565b8051156141c45780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5080546141e9906147a2565b6000825580601f106141f9575050565b601f01602090049060005260206000209081019061116991905b808211156142275760008155600101614213565b5090565b600080600080600060a0868803121561424357600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6001600160a01b038116811461116957600080fd5b60006020828403121561428d57600080fd5b81356139fe81614266565b6000602082840312156142aa57600080fd5b5035919050565b6000806000606084860312156142c657600080fd5b505081359360208301359350604090920135919050565b600080600080600080600060e0888a0312156142f857600080fd5b873596506020880135955060408801359450606088013593506080880135925060a0880135915060c088013561432d81614266565b8091505092959891949750929550565b634e487b7160e01b600052602160045260246000fd5b6007811061437157634e487b7160e01b600052602160045260246000fd5b9052565b60005b83811015614390578181015183820152602001614378565b50506000910152565b602081526143ab602082018351614353565b6020820151604082015267ffffffffffffffff60408301511660608201526000606083015160808084015280518060a08501526143ef8160c0860160208501614375565b601f01601f19169290920160c0019392505050565b60008060008060008060c0878903121561441d57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6000806000806080858703121561445d57600080fd5b5050823594602084013594506040840135936060013592509050565b803567ffffffffffffffff8116811461449157600080fd5b919050565b6000602082840312156144a857600080fd5b6139fe82614479565b6000806000606084860312156144c657600080fd5b83356144d181614266565b925060208401356fffffffffffffffffffffffffffffffff811681146144f657600080fd5b915061450460408501614479565b90509250925092565b6000806000806080858703121561452357600080fd5b84359350602085013561453581614266565b93969395505050506040820135916060013590565b6000806000806080858703121561456057600080fd5b843593506020850135925060408501359150606085013561458081614266565b939692955090935050565b60006020828403121561459d57600080fd5b815180151581146139fe57600080fd5b6000602082840312156145bf57600080fd5b81516139fe81614266565b600080604083850312156145dd57600080fd5b505080516020909101519092909150565b60006020828403121561460057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156140b5576140b5614607565b80820260008212600160ff1b8414161561464c5761464c614607565b81810583148215176140b5576140b5614607565b808201808211156140b5576140b5614607565b634e487b7160e01b600052604160045260246000fd5b6000608082840312801561469c57600080fd5b506040516000906080810167ffffffffffffffff811182821017156146c3576146c3614673565b60409081528451825260208086015190830152848101519082015260609384015193810193909352509092915050565b808201828112600083128015821682158216171561471357614713614607565b505092915050565b818103600083128015838313168383128216171561473b5761473b614607565b5092915050565b6000606082840312801561475557600080fd5b506040516000906060810167ffffffffffffffff8111828210171561477c5761477c614673565b604090815284518252602080860151908301529384015193810193909352509092915050565b600181811c908216806147b657607f821691505b6020821081036147d657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115612ace57806000526020600020601f840160051c810160208510156148035750805b601f840160051c820191505b81811015614823576000815560010161480f565b5050505050565b815167ffffffffffffffff81111561484457614844614673565b6148588161485284546147a2565b846147dc565b6020601f82116001811461488c57600083156148745750848201515b600019600385901b1c1916600184901b178455614823565b600084815260208120601f198516915b828110156148bc578785015182556020948501946001909201910161489c565b50848210156148da5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6001600160a01b0384168152606081016149066020830185614353565b826040830152949350505050565b815181526020808301519082015260408083015190820152606081016140b5565b6000600160ff1b820161494a5761494a614607565b5060000390565b60006020828403121561496357600080fd5b815160ff811681146139fe57600080fd5b6001815b60018411156149af5780850481111561499357614993614607565b60018416156149a157908102905b60019390931c928002614978565b935093915050565b6000826149c6575060016140b5565b816149d3575060006140b5565b81600181146149e957600281146149f357614a0f565b60019150506140b5565b60ff841115614a0457614a04614607565b50506001821b6140b5565b5060208310610133831016604e8410600b8410161715614a32575081810a6140b5565b614a3f6000198484614974565b8060001904821115614a5357614a53614607565b029392505050565b60006139fe60ff8416836149b7565b80820281158282048414176140b5576140b5614607565b600082614a9e57634e487b7160e01b600052601260045260246000fd5b500490565b60008251614ab5818460208701614375565b919091019291505056fea2646970667358221220cc30521c263e7a3ed2f31edfb153ddc3e1d2429f0fd86b0ab1b5933d65b4550364736f6c634300081c0033