7 txs
28 calls
constructor
constructor(address _nonfungiblePositionManager, address _zeroxRouter, address _universalRouter, address _permit2)
functions
factory
viewfunction factory() view returns (address)
nonfungiblePositionManager
viewfunction nonfungiblePositionManager() view returns (address)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
permit2
viewfunction permit2() view returns (address)
universalRouter
viewfunction universalRouter() view returns (address)
vaults
viewfunction vaults(address) view returns (bool)
weth
viewfunction weth() view returns (address)
zeroxRouter
viewfunction zeroxRouter() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
execute
nonpayablefunction execute(uint256 tokenId, tuple instructions) returns (uint256 newTokenId)
executeWithPermit
nonpayablefunction executeWithPermit(uint256 tokenId, tuple instructions, uint8 v, bytes32 r, bytes32 s) returns (uint256 newTokenId)
onERC721Received
nonpayablefunction onERC721Received(address, address from, uint256 tokenId, bytes data) returns (bytes4)
renounceOwnership
nonpayablefunction renounceOwnership()
setVault
nonpayablefunction setVault(address _vault)
swap
payablefunction swap(tuple params) payable returns (uint256 amountOut)
swapAndIncreaseLiquidity
payablefunction swapAndIncreaseLiquidity(tuple params) payable returns (uint128 liquidity, uint256 amount0, uint256 amount1)
swapAndMint
payablefunction swapAndMint(tuple params) payable returns (uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data)
events
ChangeRange
event ChangeRange(uint256 indexed tokenId, uint256 newTokenId)
CompoundFees
event CompoundFees(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
Swap
event Swap(address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut)
SwapAndIncreaseLiquidity
event SwapAndIncreaseLiquidity(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1)
SwapAndMint
event SwapAndMint(uint256 indexed tokenId, uint128 liquidity, uint256 amount0, uint256 amount1)
VaultSet
event VaultSet(address newVault)
WithdrawAndCollectAndSwap
event WithdrawAndCollectAndSwap(uint256 indexed tokenId, address token, uint256 amount)
errors
AmountError
error AmountError()
ChainlinkPriceError
error ChainlinkPriceError()
CollateralFactorExceedsMax
error CollateralFactorExceedsMax()
CollateralFail
error CollateralFail()
CollateralValueLimit
error CollateralValueLimit()
CollectError
error CollectError()
DailyDebtIncreaseLimit
error DailyDebtIncreaseLimit()
DailyLendIncreaseLimit
error DailyLendIncreaseLimit()
DebtChanged
error DebtChanged()
EtherSendFailed
error EtherSendFailed()
ExceedsMaxReward
error ExceedsMaxReward()
GlobalDebtLimit
error GlobalDebtLimit()
GlobalLendLimit
error GlobalLendLimit()
InsufficientLiquidity
error InsufficientLiquidity()
InterestNotUpdated
error InterestNotUpdated()
InvalidConfig
error InvalidConfig()
InvalidPool
error InvalidPool()
InvalidToken
error InvalidToken()
MinLoanSize
error MinLoanSize()
MissingSwapData
error MissingSwapData()
NeedsRepay
error NeedsRepay()
NoEtherToken
error NoEtherToken()
NoLiquidity
error NoLiquidity()
NoSharesRepayed
error NoSharesRepayed()
NotConfigured
error NotConfigured()
NotEnoughReward
error NotEnoughReward()
NotLiquidatable
error NotLiquidatable()
NotReady
error NotReady()
NotSupportedFeeTier
error NotSupportedFeeTier()
NotSupportedWhatToDo
error NotSupportedWhatToDo()
NotWETH
error NotWETH()
PriceDifferenceExceeded
error PriceDifferenceExceeded()
Reentrancy
error Reentrancy()
SameRange
error SameRange()
SameToken
error SameToken()
SelfSend
error SelfSend()
SequencerDown
error SequencerDown()
SequencerGracePeriodNotOver
error SequencerGracePeriodNotOver()
SlippageError
error SlippageError()
SwapAmountTooLarge
error SwapAmountTooLarge()
SwapFailed
error SwapFailed()
TooMuchEtherSent
error TooMuchEtherSent()
TransferError
error TransferError()
TransformFailed
error TransformFailed()
TransformNotAllowed
error TransformNotAllowed()
TWAPCheckFailed
error TWAPCheckFailed()
Unauthorized
error Unauthorized()
WrongContract
error WrongContract()
creation bytecode
0x610140604081815234620002bc57608082620050c58038038091620000258285620002c1565b833981010312620002bc5781516001600160a01b038082169291838103620002bc5760209062000057828701620002fb565b916200007360606200006b878a01620002fb565b9801620002fb565b600180546001600160a01b03199081169091556000805491821633908117825588519399919288167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08480a36312a9293f60e21b83528383600481845afa928315620002b25790878592849562000267575b506004941660805288519384809263c45a015560e01b82525afa9283156200025b57819362000217575b50505060a05260c05260e052610100938452610120921682525190614db49283620003118439608051838181601e0152818161145101528181613c7101528181613d170152818161446501526145f0015260a0518381816102b20152610709015260c0518381816104940152818161074e015281816115260152818161167501528181611e6b01528181613e9001528181613ef001528181613f3e0152818161425c015281816149f70152614a33015260e05183818161015f015261368c0152518281816114960152818161390f01528181613a4f01528181613a840152613b1e015251818181610c0801528181610cd90152818161176801528181612fdb01526130a80152f35b9091809350813d831162000253575b620002328183620002c1565b810103126200025057506200024790620002fb565b3880806200010f565b80fd5b503d62000226565b508651903d90823e3d90fd5b9280929495508391503d8311620002aa575b620002858183620002c1565b81010312620002a65760049291876200029f8693620002fb565b94620000e5565b8280fd5b503d62000279565b88513d84823e3d90fd5b600080fd5b601f909101601f19168101906001600160401b03821190821017620002e557604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203620002bc5756fe610180806040526004361015610060575b50361561001c57600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361004e57005b604051635724f38560e01b8152600490fd5b60003560e01c90816312261ee71461175557508063150b7a021461161d57806321729922146114c557806335a9e4df146114805780633fc8cef31461143b5780636817031b146113c7578063715018a61461136257806379ba50971461129f5780638176835d14610abb5780638da5cb5b14610a92578063a622ee7c14610a53578063b1902ece1461077d578063b44a272214610738578063c45a0155146106f3578063c5f5280a14610439578063dc3253a0146103f4578063e30c3978146103cb578063f2fde38b14610360578063fa461e33146101935763faba4463146101495738610010565b3461018e57600036600319011261018e576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b600080fd5b3461018e57606036600319011261018e576004356024356044356001600160401b03811161018e576101c99036906004016117c1565b9290916000821393848015610356575b1561018e57836060918101031261018e576101f3836117ad565b61020b6040610204602087016117ad565b9501611996565b604080516001600160a01b0393841696841692918791849160009161022f8161186a565b828152826020820152015283881161034a575b5060409062ffffff85808451936102588561186a565b169586845216938460208401521691829101528183101561018e5760405191602083019384526040830152606082015260608152610295816118bb565b519020604051602081019160ff60f81b83526001600160601b03197f000000000000000000000000000000000000000000000000000000000000000060601b16602183015260358201527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54605582015260558152610312816118bb565b5190201633036103395761032f93156103315750905b33906143e3565b005b905090610328565b6040516282b42960e81b8152600490fd5b87935090506040610242565b50600082136101d9565b3461018e57602036600319011261018e57610379611797565b610381612e57565b60018060a01b0380911690816001600160601b0360a01b6001541617600155600054167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700600080a3005b3461018e57600036600319011261018e576001546040516001600160a01b039091168152602090f35b3461018e57604036600319011261018e576024356001600160401b03811161018e5761043161042960209236906004016119b4565b600435611e61565b604051908152f35b60031960203682011261018e576004356001600160401b039182821161018e576101e08260040191833603011261018e5760405163133f757160e31b8152813560048201819052610180926001600160a01b039084846024817f000000000000000000000000000000000000000000000000000000000000000086165afa9485156106e7576000946000966106a7575b506101c4870191826104db8183611c1c565b159050610666576104f26104fa9161053293611c1c565b810190611c65565b9061050760a48b01611c08565b61051a6101248c013560c48d0135611d8a565b9060448c01359060248d013590898d168a8d16612f49565b6040519361053f8561184e565b84526024870135602085015260448701356040850152610561606488016117ad565b60608501526084870135608085015261057c60a488016117ad565b60a085015260c487013560c085015260e487013560e085015261010487013588811161018e576105b290600436918a0101611964565b61010085015261012487013561012085015261014487013561014085015261016487013588811161018e576105ed90600436918a0101611964565b610160850152610184870135908401526101a48601356101a08401523595861161018e5761062761063b9560046106629836920101611964565b6101c083015280341515941692169061404c565b604080516001600160801b0390941684526020840192909252908201529081906060820190565b0390f35b50506106a261067760a48901611c08565b61068a6101248a013560c48b0135611d8a565b9060448a01359060248b013590878b16888b16612eaf565b610532565b908096506106cb9295503d87116106e0575b6106c381836118f1565b810190611db9565b505050505050505095925090509394886104c9565b503d6106b9565b6040513d6000823e3d90fd5b3461018e57600036600319011261018e576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461018e57600036600319011261018e576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b60031960203682011261018e576001600160401b0360043581811161018e576102a08160040193823603011261018e576107b683611c08565b60248201906001600160a01b03806107cd84611c08565b16911614610a41576108626102848301916107e88387611c1c565b1590506109f3576108466107ff6104f28589611c1c565b9061080989611c08565b61081285611c08565b61081f6101448a01611c08565b916108346101c48b01356101648c0135611d8a565b9260c48b01359260a48c013592612f49565b61085b6040519661085688611832565b6117ad565b86526117ad565b602085015261087360448301611996565b6040850152610884606483016119a6565b6060850152610895608483016119a6565b608085015260a482013560a085015260c482013560c08501526108ba60e483016117ad565b60e08501526108cc61010483016117ad565b6101008501526101248201356101208501526108eb61014483016117ad565b6101408501526101648201356101608501526101848201356101808501526101a482013583811161018e576109269060043691850101611964565b6101a08501526101c48201356101c08501526101e48201356101e085015261020482013583811161018e576109619060043691850101611964565b61020085015261022482013561022085015261024482013561024085015261026482013583811161018e5761099c9060043691850101611964565b6102608501523591821161018e576080926109c86109d79260046001600160801b039536920101611964565b61028082015234151590613d4a565b9293909160405194855216602084015260408301526060820152f35b610a3c6109ff87611c08565b610a0883611c08565b610a156101448801611c08565b91610a2a6101c48901356101648a0135611d8a565b9260c48901359260a48a013592612eaf565b610846565b60405163100dac0560e11b8152600490fd5b3461018e57602036600319011261018e576001600160a01b03610a74611797565b166000526002602052602060ff604060002054166040519015158152f35b3461018e57600036600319011261018e576000546040516001600160a01b039091168152602090f35b602036600319011261018e576001600160401b036004351161018e576101006004353603600319011261018e57610af6600435600401611c08565b6001600160a01b03610b0c600435602401611c08565b6001600160a01b03909216911614610a415760e460043501610b3381600435600401611c1c565b15905061122c576104f2610b4c91600435600401611c1c565b90610b5b600435600401611c08565b60009160405193610b6b856118a0565b6000855260006020860152600060408601526000606086015260006080860152600060a0860152600060c0860152610ba9604460043501358461442b565b60408801526020870152855281515190610bdb610bc583611c4e565b92610bd360405194856118f1565b808452611c4e565b60005b601f19820181106112075750508551611183575b6020860151611104575b6040860151611058575b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b1561018e5760405163edd9444b60e01b815260806004820152835160606084830152805160e4830181905291949293859390926101048501926020019060005b81811061102a57505050806020604092015160a4860152015160c48401526003198382030160248401526020808351928381520192019060005b818110610ffc57505050610cd48291600094336044850152600319848303016064850152611b9e565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af180156106e757610fe8575b508251610f61575b506020820151610ecd575b6040820151610e31575b50505b6020610d3e600435600401611c08565b610dc2610db7610d52602460043501611c08565b92610dad6044600435013594610d7260a460043501600435600401611c1c565b909160405194610d8186611817565b6001600160a01b039081168652168885015260408401879052600435606401356060850152369161192d565b6080820152613598565b9283610e0c57611d67565b80610dd1575b50604051908152f35b610e0690610de3608460043501611c08565b90610df2600435600401611c08565b610e0060c460043501611d5a565b92613c61565b82610dc8565b610e2c610e1d608460043501611c08565b85610df2602460043501611c08565b611d67565b6040516370a0823160e01b8152306004820152602081602481855afa918215610ec15791610e8d575b50610e6c60409160c084015190611d67565b91015103610e7b578080610d2b565b6040516313ff771f60e21b8152600490fd5b90506020813d602011610eb9575b81610ea8602093836118f1565b8101031261018e5751610e6c610e5a565b3d9150610e9b565b604051903d90823e3d90fd5b6040516370a0823160e01b8152306004820152602081602481855afa8015610f56578290610f22575b610f06915060a084015190611d67565b602083015114610d21576040516313ff771f60e21b8152600490fd5b506020813d602011610f4e575b81610f3c602093836118f1565b8101031261018e57610f069051610ef6565b3d9150610f2f565b6040513d84823e3d90fd5b6040516370a0823160e01b815230600482015290602090829060249082906001600160a01b03165afa8015610f56578290610fb4575b610fa79150608084015190611d67565b825103610e7b5782610d16565b506020813d602011610fe0575b81610fce602093836118f1565b8101031261018e57610fa79051610f97565b3d9150610fc1565b610ff39192506117ee565b60009083610d0e565b825180516001600160a01b031685526020908101518186015287955060409094019390920191600101610cab565b825180516001600160a01b031686526020908101518187015289975060409095019490920191600101610c71565b6040516370a0823160e01b815230600482015260208160248160005afa9081156106e7576000916110d2575b5060c08701526110cc60408701516040519061109f82611885565b30825260208201526060880151906110b682612f10565b60608a01526110c58286612f1f565b5283612f1f565b50610c06565b90506020813d6020116110fc575b816110ed602093836118f1565b8101031261018e575187611084565b3d91506110e0565b6040516370a0823160e01b815230600482015260208160248160005afa9081156106e757600091611151575b5060a087015261114b60208701516040519061109f82611885565b50610bfc565b90506020813d60201161117b575b8161116c602093836118f1565b8101031261018e575187611130565b3d915061115f565b6040516370a0823160e01b81523060048201526020816024816001600160a01b0389165afa9081156106e7576000916111d5575b5060808701526111cf86516040519061109f82611885565b50610bf2565b90506020813d6020116111ff575b816111f0602093836118f1565b8101031261018e5751876111b7565b3d91506111e3565b60209060405161121681611885565b6000815260008382015282828701015201610bde565b5061123b600435600401611c08565b61124b604460043501358261442b565b9290918061128b575b50508061127a575b5080611269575b50610d2e565b6112749030336146d2565b80611263565b6112859030336146d2565b8161125c565b6112989130903390614801565b8280611254565b3461018e57600036600319011261018e576001546001600160a01b03338183160361130b576001600160601b0360a01b8092166001556000549133908316176000553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608490fd5b3461018e57600036600319011261018e5761137b612e57565b600180546001600160a01b0319908116909155600080549182168155906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461018e57602036600319011261018e576113e0611797565b6113e8612e57565b6040516001600160a01b03909116808252907fe7ae49f883c825b05681b3e00e8be6fdea9ed2a8a45e4c6ecb9390fc44cce61590602090a16000908152600260205260409020805460ff19166001179055005b3461018e57600036600319011261018e576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461018e57600036600319011261018e576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461018e5760a036600319011261018e576004356024356001600160401b03811161018e576114f89036906004016119b4565b906044359160ff831680930361018e576040516331a9108f60e11b8152600481018390526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116949190602082602481895afa9182156106e7576000926115e1575b50339116036103395761024082015190843b1561018e5760c4600092836040519788948593637ac2ff7b60e01b855230600486015289602486015260448501526064840152606435608484015260843560a48401525af19182156106e757602093610431936115d2575b50611e61565b6115db906117ee565b846115cc565b9091506020813d602011611615575b816115fd602093836118f1565b8101031261018e5761160e90611bf4565b9086611562565b3d91506115f0565b3461018e57608036600319011261018e57611636611797565b506001600160a01b0360243581811680820361018e57604435926001600160401b039060643582811161018e576116719036906004016117c1565b90917f0000000000000000000000000000000000000000000000000000000000000000169384330361174357301461173157810160208282031261018e57813592831161018e576102c0926116c692016119b4565b6116d08186611e61565b50015190803b1561018e57611701936000809460405196879586948593635c46a7ef60e11b85523060048601611bc3565b03925af180156106e757611722575b604051630a85bd0160e11b8152602090f35b61172b906117ee565b80611710565b604051632797715160e01b8152600490fd5b604051630d348b9b60e41b8152600490fd5b3461018e57600036600319011261018e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b600435906001600160a01b038216820361018e57565b35906001600160a01b038216820361018e57565b9181601f8401121561018e578235916001600160401b03831161018e576020838186019501011161018e57565b6001600160401b03811161180157604052565b634e487b7160e01b600052604160045260246000fd5b60a081019081106001600160401b0382111761180157604052565b6102a081019081106001600160401b0382111761180157604052565b6101e081019081106001600160401b0382111761180157604052565b606081019081106001600160401b0382111761180157604052565b604081019081106001600160401b0382111761180157604052565b60e081019081106001600160401b0382111761180157604052565b608081019081106001600160401b0382111761180157604052565b602081019081106001600160401b0382111761180157604052565b90601f801991011681019081106001600160401b0382111761180157604052565b6001600160401b03811161180157601f01601f191660200190565b92919261193982611912565b9161194760405193846118f1565b82948184528183011161018e578281602093846000960137010152565b9080601f8301121561018e5781602061197f9335910161192d565b90565b35906001600160801b038216820361018e57565b359062ffffff8216820361018e57565b35908160020b820361018e57565b91909161030090818185031261018e57604051918201906001600160401b0391838110838211176118015760405282948135600381101561018e5784526119fd602083016117ad565b602085015260408201356040850152606082013560608501526080820135608085015260a082013560a085015260c082013583811161018e5781611a42918401611964565b60c085015260e082013560e085015261010080830135908501526101208083013584811161018e5782611a76918501611964565b90850152610140611a88818401611982565b90850152610160611a9a818401611982565b90850152610180611aac818401611996565b908501526101a0611abe8184016119a6565b908501526101c0611ad08184016119a6565b908501526101e0611ae2818401611982565b90850152610200808301359085015261022080830135908501526102408083013590850152610260611b158184016117ad565b90850152610280611b278184016117ad565b908501526102a08083013590811515820361018e578501526102c08083013584811161018e5782611b59918501611964565b908501526102e0928383013590811161018e57611b769201611964565b910152565b60005b838110611b8e5750506000910152565b8181015183820152602001611b7e565b90602091611bb781518092818552858086019101611b7b565b601f01601f1916010190565b6001600160a01b03918216815291166020820152604081019190915260806060820181905261197f92910190611b9e565b51906001600160a01b038216820361018e57565b356001600160a01b038116810361018e5790565b903590601e198136030182121561018e57018035906001600160401b03821161018e5760200191813603831361018e57565b6001600160401b0381116118015760051b60200190565b60409291818103841361018e576001600160401b03823581811161018e5783019460608684031261018e57805190611c9c8261186a565b863583811161018e5787019684601f8901121561018e578735602098611cc182611c4e565b91611cce855193846118f1565b8083528a8084019160061b8301019188831161018e57908b869594939201905b828210611d1d57505050845288810135898501520135908201529483013590811161018e5761197f9201611964565b9091929394828a031261018e578b86918251611d3881611885565b611d41856117ad565b8152828501358382015281520191018594939291611cee565b35801515810361018e5790565b91908203918211611d7457565b634e487b7160e01b600052601160045260246000fd5b91908201809211611d7457565b51908160020b820361018e57565b51906001600160801b038216820361018e57565b91908261018091031261018e5781516001600160601b038116810361018e5791611de560208201611bf4565b91611df260408301611bf4565b91611dff60608201611bf4565b91608082015162ffffff8116810361018e5791611e1e60a08201611d97565b91611e2b60c08301611d97565b91611e3860e08201611da5565b91610100820151916101208101519161197f610160611e5a6101408501611da5565b9301611da5565b919060c0526000917f000000000000000000000000000000000000000000000000000000000000000033600052600260205260ff60406000205416600014612db75760405163ae41abab60e01b8152602081600481335afa9081156106e757600091612d85575b508203610339575b60405163133f757160e31b815260048101839052610180816024816001600160a01b0386165afa80156106e757600090600092600091612d54575b50506000806001600160801b036101e060c05101511680612c70575b506001600160801b0361014060c051015116906001600160801b038214600014612c5d5750506001600160801b03905b6001600160801b0361016060c051015116906001600160801b038214600014612c455750506001600160801b03935b6040516370a0823160e01b8152306004820152946020866024816001600160a01b0388165afa9586156106e757600096612c11575b506040516370a0823160e01b8152306004820152916020836024816001600160a01b038a165afa9283156106e757600093612bdd575b50604051938460808101106001600160401b036080870111176118015760808501604090815289865230602087019081526001600160801b0392831682880190815294831660608801908152825163fc6f786560e01b81529751600489015290516001600160a01b0390811660248901529451831660448801525190911660648601529184916084918391600091165af19485156106e757600092600096612ba6575b506040516370a0823160e01b8152306004820152906020826024816001600160a01b0389165afa9182156106e757600092612b72575b506040516370a0823160e01b8152306004820152906020826024816001600160a01b038b165afa9283156106e7578592600094612b37575b509061210d91611d67565b03612b2557859161211d91611d67565b03612b25578381608060c051015181108015612b16575b612b045760c051516003811015612aee57600203612432576122b394927faede78842f79342b251fe687b26b9f00d35eec5b0d21d44c283dd01a5ad7c136969492889260018060a01b03602060c05101511660018060a01b03861681146000146122b9575050612289955060018060a01b0361026060c05101511661024060c051015160e060c051015161010060c05101519161012060c05101519361020060c05101519561022060c051015197604051996121ef8b61184e565b8a5260208a015260408901526060880152608087015260018060a01b03881660a087015260c086015260e08501526101008401526000610120840152600061014084015260405161223f816118d6565b600081526101608401526101808301526101a0820152604051612261816118d6565b600081526101c082015260c0516102a001511515926001600160a01b0390811692169061404c565b9092905b604051938493846040919493926001600160801b03606083019616825260208201520152565b0390a25b565b6001600160a01b03871603612395575061238d955060018060a01b0361026060c05101511661024060c0510151608060c051015160a060c05101519160c0805101519361020060c05101519561022060c0510151976040519961231b8b61184e565b8a5260208a015260408901526060880152608087015260018060a01b03871660a0870152600060c0870152600060e0870152604051612359816118d6565b600081526101008701526101208601526101408501526101608401526101808301526101a0820152604051612261816118d6565b90929061228d565b9250505061238d9360018060a01b0361026060c05101511661024060c051015161020060c05101519161022060c051015193604051956123d48761184e565b8c87526020870152604086015260608501526080840152600060a0840152600060c0840152600060e084015260405161240c816118d6565b600081526101008401526000610120840152600061014084015260405161223f816118d6565b92959791505060c051516003811015612aee5761290f575060c051602001516001600160a01b039081169085168103612622575062ffffff61018060c051015116610100526101a060c051015160020b926101c060c051015160020b9260018060a01b0361026060c0510151169060018060a01b0361028060c05101511661024060c05101519060e060c05101519361010060c05101519561012060c05101519761020060c05101519961022060c05101519b6102e060c05101519d60405160e0526124ff60e051611832565b60018060a01b031660e0515260018060a01b038816602060e051015261010051604060e0510152606060e0510152608060e051015260a060e051015260c060e051015260e08051015261010060e051015261012060e051015260018060a01b031661014060e051015261016060e051015261018060e05101526101a060e051015260006101c060e051015260006101e060e05101526040516125a0816118d6565b6000815261020060e051015261022060e051015261024060e051015261026060e05101526040516125d0816118d6565b6000815261028060e05101526125f16102a060c0510151151560e051613d4a565b505050915b7f2d3b242342e1e892c96167e80cea1f82a3961348e1576320d5e93deaa75d36896020604051858152a2565b9193916001600160a01b038516036127c35762ffffff61018060c05101511660a0526101a060c051015160020b926101c060c051015160020b9260018060a01b0361026060c0510151169060018060a01b0361028060c05101511661024060c051015190608060c05101519360a060c05101519560c0805101519761020060c05101519961022060c05101519b6102e060c05101519d6040516080526126c9608051611832565b60018060a01b0389166080515260018060a01b03166020608051015260a051604060805101526060608051015260808051015260a0608051015260c0608051015260e060805101526101006080510152610120608051015260018060a01b031661014060805101526000610160608051015260006101806080510152604051612751816118d6565b600081526101a060805101526101c060805101526101e060805101526102006080510152610220608051015261024060805101526102606080510152604051612799816118d6565b6000815261028060805101526127ba6102a060c05101511515608051613d4a565b505050916125f6565b92612842926127ba9462ffffff61018060c051015116916101a060c051015160020b916101c060c051015160020b9160018060a01b0361026060c0510151169160018060a01b0361028060c0510151169361024060c05101519561020060c05101519761022060c0510151996102e060c05101519b6040519d8e611832565b60018060a01b03168d5260018060a01b031660208d015260408c015260608b015260808a015260a089015260c088015260e08701526101008601526101208501526000610140850152600061016085015260006101808501526040516128a7816118d6565b600081526101a085015260006101c085015260006101e08501526040516128cd816118d6565b600081526102008501526102208401526102408301526102608201526040516128f5816118d6565b600081526102808201526102a060c0510151151590613d4a565b95939160c093919351516003811015612aee57600103612adc5760c05160200180517ff8aacb16b34d229aa53d44a7759a3741b5c098e099666e51a4ae9d66a5956c43959194906000906001600160a01b039081169083168114612ad457926129b76129ca9460a060c051015160c080510151906040519261299084611817565b6001600160a01b038816845260208401526040830185905260608301526080820152613598565b939091808310612a80575b505050611d8a565b83516001600160a01b03838116911614612ac357612a0d926129b760018060a01b0386511661010060c051015161012060c0510151906040519261299084611817565b905b81151580612a6d575b612a3a575b51604080516001600160a01b0390921682526020820192909252a2565b60c05161026081015182516102a090920151612a68929015159185916001600160a01b039081169116613c61565b612a1d565b5080516001600160a01b03161515612a18565b612a9d612abb9360018060a01b0361026060c05101511692611d67565b60c0516102a0015115159290916001600160a01b0390911690613c61565b3880806129c2565b612ace929150611d8a565b90612a0f565b5050506129ca565b60405163290db76760e01b8152600490fd5b634e487b7160e01b600052602160045260246000fd5b604051634ff64a9f60e01b8152600490fd5b5060e060c05101518610612134565b604051638ad721cb60e01b8152600490fd5b91925092506020813d602011612b6a575b81612b55602093836118f1565b8101031261018e57519184919061210d612102565b3d9150612b48565b9091506020813d602011612b9e575b81612b8e602093836118f1565b8101031261018e575190386120ca565b3d9150612b81565b909550612bcc91925060403d604011612bd6575b612bc481836118f1565b810190614364565b9190919438612094565b503d612bba565b9092506020813d602011612c09575b81612bf9602093836118f1565b8101031261018e57519138611ff1565b3d9150612bec565b9095506020813d602011612c3d575b81612c2d602093836118f1565b8101031261018e57519438611fbb565b3d9150612c20565b612c5791612c5291611d8a565b61437a565b93611f86565b612c6a91612c5291611d8a565b90611f57565b60c051610240810151604082015160609092015160009550859450909183612c9e575b505050509038611f27565b9193509193506001600160801b0360405194612cb986611817565b8986526020860190815260408601928352606086019384526080860194855260405195630624e65f60e11b87525160048701525116602485015251604484015251606483015251608482015260408160a481600060018060a01b0389165af180156106e757600091600091612d33575b5038808080612c93565b9050612d4e915060403d604011612bd657612bc481836118f1565b38612d29565b915050612d7291506101803d610180116106e0576106c381836118f1565b5050505096505050509150909138611f0b565b90506020813d602011612daf575b81612da0602093836118f1565b8101031261018e575138611ec8565b3d9150612d93565b6040516331a9108f60e11b8152600481018390526001600160a01b03906020816024818686165afa9081156106e757600091612e1d575b5016338114159081612e12575b5015611ed0576040516282b42960e81b8152600490fd5b905030141538612dfb565b90506020813d602011612e4f575b81612e38602093836118f1565b8101031261018e57612e4990611bf4565b38612dee565b3d9150612e2b565b6000546001600160a01b03163303612e6b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b93612ebf92959193868587614523565b93909180612efc575b505080612ee8575b505080612edb575050565b6122b79130903390614801565b612ef59130903390614801565b3880612ed0565b612f099130903390614801565b3880612ec8565b6000198114611d745760010190565b8051821015612f335760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b92969093959194612f939060009760405199612f648b6118a0565b898b528960208c01528960408c01528960608c01528960808c01528960a08c01528960c08c0152888888614523565b60408a01526020890152875281515190612faf610bc583611c4e565b875b601f19820181106135035750508751613480575b60208801516133fa575b604088015161333f575b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b1561333b5791869160405193849263edd9444b60e01b84526080600485015260e484019080519160606084870152825180915260206101048701930190875b8181106132fb57505050806020604092015160a4870152015160c485015260031984820301602485015260208084519283815201930190855b8181106132ca5750503360448501525082820360031901606484015282916130a391611b9e565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af180156132bf576132ac575b50845161321a575b506020840151613185575b5060408301516130ff57505050565b6040516370a0823160e01b815230600482015290602090829060249082906001600160a01b03165afa918215610ec15791613151575b5061314760409160c084015190611d67565b91015103610e7b57565b90506020813d60201161317d575b8161316c602093836118f1565b8101031261018e5751613147613135565b3d915061315f565b6040516370a0823160e01b815230600482015290602090829060249082906001600160a01b03165afa801561320f5783906131db575b6131cb915060a085015190611d67565b602084015103610e7b57386130f0565b506020813d602011613207575b816131f5602093836118f1565b8101031261018e576131cb90516131bb565b3d91506131e8565b6040513d85823e3d90fd5b6040516370a0823160e01b815230600482015290602090829060249082906001600160a01b03165afa80156132a157849061326d575b6132609150608086015190611d67565b845103610e7b57386130e5565b506020813d602011613299575b81613287602093836118f1565b8101031261018e576132609051613250565b3d915061327a565b6040513d86823e3d90fd5b6132b8909491946117ee565b92386130dd565b6040513d87823e3d90fd5b825180516001600160a01b03168652602090810151818701528c97508896506040909501949092019160010161307c565b929496509281959750604081613328602093600195516020809160018060a01b0381511684520151910152565b0195019101908b96949288969492613043565b8680fd5b6040516370a0823160e01b81523060048201526020816024816001600160a01b038b165afa9081156133ef5788916133b9575b5060c08901526133b360408901516040519061338d82611885565b308252602082015260608a0151906133a482612f10565b60608c01526110c58286612f1f565b50612fd9565b90506020813d6020116133e7575b816133d4602093836118f1565b810103126133e3575138613372565b8780fd5b3d91506133c7565b6040513d8a823e3d90fd5b6040516370a0823160e01b81523060048201526020816024816001600160a01b038a165afa9081156133ef57889161344e575b5060a089015261344860208901516040519061338d82611885565b50612fcf565b90506020813d602011613478575b81613469602093836118f1565b810103126133e357513861342d565b3d915061345c565b6040516370a0823160e01b81523060048201526020816024816001600160a01b0389165afa9081156133ef5788916134d1575b5060808901526134cb88516040519061338d82611885565b50612fc5565b90506020813d6020116134fb575b816134ec602093836118f1565b810103126133e35751386134b3565b3d91506134df565b60209060405161351281611885565b8a81528a8382015282828701015201612fb1565b81601f8201121561018e57805161353c81611912565b9261354a60405194856118f1565b8184526020828401011161018e5761197f9160208085019101611b7b565b3d15613593573d9061357982611912565b9161358760405193846118f1565b82523d6000602084013e565b606090565b6000916000916000906040810151151580613c53575b80613c3d575b6135bc575050565b80516040516370a0823160e01b8152306004820152929550909350602090829060249082906001600160a01b03165afa9081156106e757600091613c0b575b506020838101516040516370a0823160e01b81523060048201529190829060249082906001600160a01b03165afa9081156106e757600091613bd9575b5060808401518051810160408282031261018e5760208201516001600160a01b038116929083900361018e576040810151906001600160401b03821161018e57602061368a92818b9501920101613526565b7f0000000000000000000000000000000000000000000000000000000000000000926001600160a01b038416810361390a57508051810190602081830312613902576020810151906001600160401b03821161390657019260408483031261390257604051936136f985611885565b61370560208201611bf4565b85526040810151906001600160401b0382116138fe57602061372d9281879601920101613526565b602085019081528851855160408b01516137559290916001600160a01b039081169116614843565b519082602083519301915af1613769613568565b50156138ec5784519051613789916001600160a01b0391821691166148fc565b83516040516370a0823160e01b815230600482015290602090829060249082906001600160a01b03165afa9081156138e15786916138ae575b506137cf90602493611d67565b6020858101516040516370a0823160e01b815230600482015292979294859182906001600160a01b03165afa908115610ec1579061387a575b6138129250611d67565b91606081015183106138685760018060a01b0381511690602060018060a01b0391015116907ffa2dda1cc1b86e41239702756b13effbc1a092b5c57e3ad320fbe4f3b13fe23560408051878152866020820152a3565b604051630d4205a160e11b8152600490fd5b506020823d6020116138a6575b81613894602093836118f1565b8101031261018e576138129151613808565b3d9150613887565b90506020813d6020116138d9575b816138c9602093836118f1565b8101031261018e575160246137c2565b3d91506138bc565b6040513d88823e3d90fd5b60405163081ceff360e41b8152600490fd5b8480fd5b8280fd5b8380fd5b9092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415905061174357805181019060208183031261018e5760208101516001600160401b03811161018e57606081830184031261018e576040519161397a8361186a565b602082820101516001600160401b03811161018e576139a3906020808701918585010101613526565b835260408282010151936001600160401b03851161018e5760208101603f868585010101121561018e576020858484010101516139df81611c4e565b956139ed60405197886118f1565b818752602087016020840160408460051b848989010101011161018e576040828787010101905b60408460051b848989010101018210613ba05750505050506020830193845201606001516040808301918252875190880151919291613a7d917f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03166143e3565b51915190517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b1561018e57604051630d64d59360e21b8152606060048201529290918391613ad9906064840190611b9e565b600319838203016024840152815180825260208201916020808360051b8301019401926000915b838310613b6d575050505060448301939093526000925081900381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af180156106e757613b59575b50613789565b613b649195506117ee565b60009338613b53565b91939695509193602080613b8d600193601f198682030187528a51611b9e565b9801930193019092879596949293613b00565b8151906001600160401b03821161018e5760208091613bcc8960408096898e878e019401010101613526565b8152019201919050613a14565b90506020813d602011613c03575b81613bf4602093836118f1565b8101031261018e575138613638565b3d9150613be7565b90506020813d602011613c35575b81613c26602093836118f1565b8101031261018e5751386135fb565b3d9150613c19565b5060208101516001600160a01b031615156135b4565b5060808101515115156135ae565b919280613d14575b15613d0957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b1561018e576040518092632e1a7d4d60e01b82528160246000958680948960048401525af1801561320f57613cf6575b5081809381925af1613cdc613568565b5015613ce457565b604051637cd69c3960e11b8152600490fd5b613d02909291926117ee565b9038613ccc565b906122b792916143e3565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811690821614613c69565b9091613d568383614937565b909160018060a01b0384511660018060a01b0360208601511662ffffff6040870151166060870151608088015160020b610220890151916102408a0151936101208b0151956040519761016089018981106001600160401b0382111761180157604090815290895260208901918252888101928352600293840b60608a019081526080808b0196875260a08b018e815260c08c018e815260e08d01998a526101008d019a8b52306101208e019081526101408e019c8d529451634418b22b60e11b81529c516001600160a01b0390811660048f01529551861660248e0152955162ffffff1660448d01529151860b60648c0152955190940b60848a0152925160a4890152905160c4880152925160e487015292516101048601529151811661012485015291516101448401529082906101649082906000907f0000000000000000000000000000000000000000000000000000000000000000165af19586156106e757600096600092600090600092613ffa575b508195819785998b60018060a01b03610100830151166102608301519060018060a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561018e5782600091613f396040519485938493635c46a7ef60e11b85523060048601611bc3565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af180156106e7576122b7997fdbed0571af71402c681d3b0a1f08d80aa2245c9adb30e12d215356c7a274fcf9928892613feb575b50613fc689604051938493846040919493926001600160801b03606083019616825260208201520152565b0390a260e081015181516020909201516001600160a01b039081169281169116614c01565b613ff4906117ee565b38613f9b565b9350505095506080813d608011614044575b81614019608093836118f1565b8101031261018e5780519561403060208301611da5565b966060604084015193015190979238613eca565b3d915061400c565b9290916101605261012052808280808080808080806020810151604082015160018060a01b03606084015116906080840151926101c06101a061018061016061014061012061010060e060c08d60a0600180821b03910151169d01519d01519d01519d01519d01519d01519d01519d01519d01519d604051610140526140d461014051611832565b60018060a01b0316610140515260018060a01b036101605116602061014051015260006040610140510152600060606101405101526000608061014051015260a061014051015260c06101405101528060e0610140510152610100610140510152610120610140510152610140805101526101606101405101526101806101405101526101a06101405101526101c06101405101526101e0610140510152610200610140510152610220610140510152610240610140510152604051614199816118d6565b600081526102606101405101526102806101405101526141bf6101205161014051614937565b93909183516101808501516101a08601516080870151916040519360c085018581106001600160401b038211176118015760405284526020840187815260408501908a8252606086019283526080860193845260a086019485526040519563219f5d1760e01b87525160048701525160248601525160448501525160648401525160848301525160a482015260608160c481600060018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19081156106e757600096600091600093614311575b509082916122b794939682988a7f1aa7d7662b161a8d4058004091e4c60474753d2f085db526dfb22da59838d0a7858351926142ef89604051938493846040919493926001600160801b03606083019616825260208201520152565b0390a261012051610160516060909201519096906001600160a01b0316614c01565b9750929150506060863d60601161435c575b81614330606093836118f1565b8101031261018e576122b79161434587611da5565b604060208901519801519097909293919091614293565b3d9150614323565b919082604091031261018e576020825192015190565b6001600160801b039081811161438e571690565b60405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608490fd5b60405163a9059cbb60e01b60208201526001600160a01b03909216602483015260448201929092526122b79161442682606481015b03601f1981018452836118f1565b614c54565b60009260008093819382341515918261445b575b50505081811161444d575050565b614458929550611d67565b92565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811692909190833b1561452057604051630d0e30db60e41b815290808260048134895af1908115610ec15750614511575b501681036144e45750349250508082116144d2575b38808061443f565b6040516307e205e160e41b8152600490fd5b6144ff57156144ca576040516307e205e160e41b8152600490fd5b6040516392b0337360e01b8152600490fd5b61451a906117ee565b386144b5565b80fd5b95929490956000966000938497859786879288346145e5575b508181116145d2575b50508181116145bf575b505084841192836145ac575b83614595575b508261457d575b5050614572575050565b61197f929350611d67565b6001600160a01b039182169116141590503880614568565b6001600160a01b0382811691161415925038614561565b6001600160a01b0382161515935061455b565b6145ca929950611d67565b96388061454f565b6145dd929c50611d67565b993880614545565b916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811690813b156138fe5760408051630d0e30db60e41b81529095808260048134885af19081156146c757506146b8575b50898116820361466d57505050349181341161465d57505b3861453c565b516307e205e160e41b8152600490fd5b93959193888116820361468c57505050349383341161465d5750614657565b959a5090948616036146a757349888341161465d5750614657565b88516392b0337360e01b8152600490fd5b6146c1906117ee565b3861463f565b8751903d90823e3d90fd5b6040516323b872dd60e01b60208083019182526001600160a01b039384166024840152929093166044820152606480820194909452928352916147679061471881611817565b6040519061472582611885565b8482527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656485830152600080948192519082805af1614761613568565b90614cb3565b8051918215918483156147d9575b5050509050156147825750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b9193818094500103126147fd57820151908115158203614520575080388084614775565b5080fd5b6040516323b872dd60e01b60208201526001600160a01b0392831660248201529290911660448301526064808301939093529181526122b79161442682611817565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301529093906020908590604490829086165afa9384156106e7576000946148c6575b50614897614426916122b795611d8a565b60405163095ea7b360e01b60208201526001600160a01b03909416602485015260448401528260648101614418565b93506020843d6020116148f4575b816148e1602093836118f1565b8101031261018e57925192614897614886565b3d91506148d4565b60405163095ea7b360e01b60208201526001600160a01b039092166024830152600060448084019190915282526122b79190614426826118bb565b91610140830160018060a01b039283825116918486511690818414600014614a68575050505060a083019283516101c0820190815111612b04576149c66149bf6149d19286855116908760208701511690516101e08701519061020088015192604051946149a486611817565b85526020850152604084015260608301526080820152613598565b9651611d67565b9460c0830151611d8a565b80935b85614a25575b816149e457505050565b60206122b79301908082511691614a1e827f00000000000000000000000000000000000000000000000000000000000000001680946148fc565b5116614843565b614a638682855116614a5a847f00000000000000000000000000000000000000000000000000000000000000001680926148fc565b83865116614843565b6149da565b6020879496970195878751168114600014614ade575050505060c081018051610160830190815111612b0457614ac4614acb9187614ad897511690888651169051610180870151906101a088015192604051946149a486611817565b9251611d67565b93849160a0840151611d8a565b946149d4565b929691928015614be8576101608501938451610180870151906101a08801519260405194614b0b86611817565b85526020850152604084015260608301526080820152614b2a90613598565b8380849a939a5116985116976101c087019889516101e0890151906102008a01519260405194614b5986611817565b85526020850152604084015260608301526080820152614b7890613598565b99909160a088015190614b8a91611d8a565b9960c088015190614b9a91611d8a565b988996519051614ba991611d8a565b90614bb391611d67565b90614bbd91611d67565b80614bcb575b5050506149d4565b614be092848060e08901511691511690613c61565b388080614bc3565b5050935050925060a08301519260c081015180936149d4565b9695614c1487939596614c1a9395611d67565b95611d67565b9380614c42575b50505081614c30575b50505050565b614c3993613c61565b38808080614c2a565b614c4c9287613c61565b388381614c21565b60018060a01b031690614767604051614c6c81611885565b6020938482527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564858301526000808587829751910182855af1614cad613568565b91614d4e565b90919015614d165750805115614cc65790565b60003b15614cd15790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b815115614d265750805190602001fd5b60405162461bcd60e51b815260206004820152908190614d4a906024830190611b9e565b0390fd5b91929015614d6b5750815115614d62575090565b3b15614cd15790565b825190915015614d265750805190602001fdfea26469706673582212208c686dcf0b4da65d053869af5a48dc267fd9ee252cf89bff6c841e2fb5a9b6d864736f6c63430008180033000000000000000000000000c36442b4a4522e871399cd717abdd847ab11fe88000000000000000000000000def1c0ded9bec7f1a1670819833240f027b25eff0000000000000000000000005e325eda8064b456f4781070c0738d849c824258000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3