0 txs
0 calls
constructor
constructor(address _nonfungiblePositionManager, address _referenceToken, address _chainlinkReferenceToken)
functions
chainlinkReferenceToken
viewfunction chainlinkReferenceToken() view returns (address)
emergencyAdmin
viewfunction emergencyAdmin() view returns (address)
factory
viewfunction factory() view returns (address)
feedConfigs
viewfunction feedConfigs(address) view returns (address feed, uint32 maxFeedAge, uint8 feedDecimals, uint8 tokenDecimals, uint32 twapSeconds, address pool, bool isToken0, uint8 mode, uint16 maxDifference)
getLiquidityAndFees
viewfunction getLiquidityAndFees(uint256 tokenId) view returns (uint128 liquidity, uint128 fees0, uint128 fees1)
getPositionBreakdown
viewfunction getPositionBreakdown(uint256 tokenId) view returns (address token0, address token1, uint24 fee, uint128 liquidity, uint256 amount0, uint256 amount1, uint128 fees0, uint128 fees1)
getValue
viewfunction getValue(uint256 tokenId, address token) view returns (uint256 value, uint256 feeValue, uint256 price0X96, uint256 price1X96)
maxPoolPriceDifference
viewfunction maxPoolPriceDifference() view returns (uint16)
nonfungiblePositionManager
viewfunction nonfungiblePositionManager() view returns (address)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
referenceToken
viewfunction referenceToken() view returns (address)
referenceTokenDecimals
viewfunction referenceTokenDecimals() view returns (uint8)
sequencerUptimeFeed
viewfunction sequencerUptimeFeed() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
renounceOwnership
nonpayablefunction renounceOwnership()
setEmergencyAdmin
nonpayablefunction setEmergencyAdmin(address admin)
setMaxPoolPriceDifference
nonpayablefunction setMaxPoolPriceDifference(uint16 _maxPoolPriceDifference)
setOracleMode
nonpayablefunction setOracleMode(address token, uint8 mode)
setSequencerUptimeFeed
nonpayablefunction setSequencerUptimeFeed(address feed)
setTokenConfig
nonpayablefunction setTokenConfig(address token, address feed, uint32 maxFeedAge, address pool, uint32 twapSeconds, uint8 mode, uint16 maxDifference)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
OracleModeUpdated
event OracleModeUpdated(address indexed token, uint8 mode)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
SetEmergencyAdmin
event SetEmergencyAdmin(address emergencyAdmin)
SetMaxPoolPriceDifference
event SetMaxPoolPriceDifference(uint16 maxPoolPriceDifference)
SetSequencerUptimeFeed
event SetSequencerUptimeFeed(address sequencerUptimeFeed)
TokenConfigUpdated
event TokenConfigUpdated(address indexed token, (address feed, uint32 maxFeedAge, uint8 feedDecimals, uint8 tokenDecimals, uint32 twapSeconds, address pool, bool isToken0, uint8 mode, uint16 maxDifference) config)
errors
AlreadyStaked
error AlreadyStaked()
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()
GaugeManagerNotSet
error GaugeManagerNotSet()
GaugeNotSet
error GaugeNotSet()
GlobalDebtLimit
error GlobalDebtLimit()
GlobalLendLimit
error GlobalLendLimit()
InsufficientLiquidity
error InsufficientLiquidity()
InterestNotUpdated
error InterestNotUpdated()
InvalidConfig
error InvalidConfig()
InvalidPool
error InvalidPool()
InvalidTickSpacing
error InvalidTickSpacing()
InvalidToken
error InvalidToken()
MinLoanSize
error MinLoanSize()
MissingSwapData
error MissingSwapData()
NeedsRepay
error NeedsRepay()
NoEtherToken
error NoEtherToken()
NoLiquidity
error NoLiquidity()
NoSharesRepayed
error NoSharesRepayed()
NotConfigured
error NotConfigured()
NotDepositor
error NotDepositor()
NotEnoughReward
error NotEnoughReward()
NotLiquidatable
error NotLiquidatable()
NotReady
error NotReady()
NotStaked
error NotStaked()
NotSupportedFeeTier
error NotSupportedFeeTier()
NotSupportedWhatToDo
error NotSupportedWhatToDo()
NotWETH
error NotWETH()
PriceDifferenceExceeded
error PriceDifferenceExceeded()
Reentrancy
error Reentrancy()
RewardClaimFailed
error RewardClaimFailed()
SameRange
error SameRange()
SameToken
error SameToken()
SelfSend
error SelfSend()
SequencerDown
error SequencerDown()
SequencerGracePeriodNotOver
error SequencerGracePeriodNotOver()
SequencerUptimeFeedInvalid
error SequencerUptimeFeedInvalid()
SlippageError
error SlippageError()
SwapAmountTooLarge
error SwapAmountTooLarge()
SwapFailed
error SwapFailed()
T
error T()
TooMuchEtherSent
error TooMuchEtherSent()
TransferError
error TransferError()
TransformFailed
error TransformFailed()
TransformNotAllowed
error TransformNotAllowed()
TWAPCheckFailed
error TWAPCheckFailed()
Unauthorized
error Unauthorized()
WrongContract
error WrongContract()
creation bytecode
0x610120604081815234620001bb5760608262002e2f803803809162000025828562000219565b833981010312620001bb578151916001600160a01b0380841691828503620001bb576020928362000065866200005d83860162000251565b940162000251565b96600460018060a01b031980600154166001555f549033908216175f5588519485938492893391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a360a05263c45a015560e01b82525afa9081156200020f57908492915f91620001d1575b506080528060c052600485518094819363313ce56760e01b8352165afa918215620001c7575f9262000184575b505060e05261010091825251612bc8918262000267833960805182818161096e01526112ff015260a051828181610a1e0152611218015260c051828181610401015281816107080152818161076401528181610de1015281816119d20152611e90015260e05182818161018e0152611eba015251818181610ab101526127320152f35b90809250813d8311620001bf575b6200019e818362000219565b81010312620001bb575160ff81168103620001bb575f8062000101565b5f80fd5b503d62000192565b83513d5f823e3d90fd5b83819492503d831162000207575b620001eb818362000219565b81010312620001bb5762000200849262000251565b5f620000d4565b503d620001df565b85513d5f823e3d90fd5b601f909101601f19168101906001600160401b038211908210176200023d57604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b0382168203620001bb5756fe60806040526004361015610011575f80fd5b5f3560e01c80630e611d3814610e105780631265b65114610dcc5780632615273514610d2a57806335da339414610cb0578063442082fa14610c0557806370905dce14610bd9578063715018a614610b8957806379ba509714610ae05780638334ff5914610a9c5780638da5cb5b14610a75578063a726470514610a4d578063b44a272214610a09578063b8f449631461099d578063c45a015514610959578063c6dc0de814610938578063c985be7d146108d6578063cd20c52a146102c7578063de5da7c614610277578063e30c39781461024f578063e41052c2146101b2578063f2de60ec146101755763f2fde38b1461010b575f80fd5b3461017157602036600319011261017157610124610faa565b61012c61202e565b60018060a01b03809116908160018060a01b031960015416176001555f54167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227005f80a3005b5f80fd5b34610171575f36600319011261017157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610171576020366003190112610171576101006101d1600435611151565b6101da8161151c565b60c060018060a01b039182602082015116926040820151169062ffffff6060820151166102068261161b565b906102108461170b565b95909360018060801b038098819701511691604051998a5260208a015260408901526060880152608087015260a08601521660c08401521660e0820152f35b34610171575f366003190112610171576001546040516001600160a01b039091168152602090f35b34610171576020366003190112610171576060610295600435611151565b60c08101516001600160801b039081169181906102b19061170b565b9190604051948552166020840152166040820152f35b346101715760e0366003190112610171576102e0610faa565b6024356001600160a01b03811681036101715760443563ffffffff81168103610171576064356001600160a01b0381168103610171576084359263ffffffff8416840361017157600560a43510156101715760c4359161ffff831683036101715761034961202e565b60a435156108c45760405163313ce56760e01b81526020816004816001600160a01b0387165afa9081156107ca575f916108a5575b5060405163313ce56760e01b8152956020876004816001600160a01b038c165afa9687156107ca575f97610874575b505f6101006040516103be8161102f565b8281526020810183905260408101839052606081018390526080810183905260a0810183905260c0810183905260e0810183905201526001600160a01b038881167f00000000000000000000000000000000000000000000000000000000000000009091161461081157604051630dfe168160e01b8152936020856004816001600160a01b0388165afa9485156107ca575f956107d5575b5060405163d21220a760e01b8152946020866004816001600160a01b0389165afa9586156107ca575f9661078e575b506001600160a01b038a8116911690811495869182610757575b8215610706575b5050156106f5576104ca9760ff63ffffffff948561ffff9a83956040519d8e61102f565b6001600160a01b039081168e52911660208d0152911660408b015291166060890152911660808701521660a085015260c084015261050d60a43560e0850161109b565b166101008201525b60018060a01b0382165f52600260205260405f2060018060a01b0382511681549063ffffffff60a01b602085015160a01b1660ff60c01b604086015160c01b169060ff60c81b606087015160c81b169263ffffffff60d01b608088015160d01b169461ffff60f01b161717171717815560018060a01b0360a08301511660018201549060ff60a01b60c0850151151560a01b169160018060a81b0319161717600182015560e082015160058110156106e1576105d4906001830161100b565b6001610100830151818301549061ffff60b01b9060b01b169061ffff60b01b19161791015561ffff6101006040519260018060a01b03815116845263ffffffff602082015116602085015260ff604082015116604085015260ff606082015116606085015263ffffffff608082015116608085015260018060a01b0360a08201511660a085015260c0810151151560c085015261067960e082015160e0860190610fc0565b0151166101008201526001600160a01b038216907fb0b7fe86f338379502fb9cf7a31c39d75578911beebb5aad1be9e96478a02d2d9061012090a25f80516020612b888339815191526020604051926106d48460a435610fc0565b6001600160a01b031692a2005b634e487b7160e01b5f52602160045260245ffd5b60405162820f3560e61b8152600490fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614915081610741575b508a806104a6565b6001600160a01b038b811691161490508a610739565b6001600160a01b038281167f000000000000000000000000000000000000000000000000000000000000000090911614925061049f565b9095506020813d6020116107c2575b816107aa6020938361105f565b81010312610171576107bb906110a7565b948a610485565b3d915061079d565b6040513d5f823e3d90fd5b9094506020813d602011610809575b816107f16020938361105f565b8101031261017157610802906110a7565b9389610456565b3d91506107e4565b50905060ff93849295935063ffffffff906040519661082f8861102f565b6001600160a01b031687521660208601521660408401521660608201525f6080820181905260a0820181905260c08201819052600360e0830152610100820152610515565b61089791975060203d60201161089e575b61088f818361105f565b810190611082565b95886103ad565b503d610885565b6108be915060203d60201161089e5761088f818361105f565b8761037e565b6040516306b7c75960e31b8152600490fd5b346101715760203660031901126101715760043561ffff81168091036101715760207fc52730c57bb30b122e1248825b8fe4fdc4cb122d70fa380134f4bff6e04e57799161092261202e565b8061ffff196003541617600355604051908152a1005b34610171575f36600319011261017157602061ffff60035416604051908152f35b34610171575f366003190112610171576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610171576020366003190112610171577f607faef9946dda6b72df146b9ffe3a54a3b67d8b93cdb9c5950da8494d628fda60206109d9610faa565b6109e161202e565b600480546001600160a01b0319166001600160a01b03929092169182179055604051908152a1005b34610171575f366003190112610171576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610171575f366003190112610171576004546040516001600160a01b039091168152602090f35b34610171575f366003190112610171575f546040516001600160a01b039091168152602090f35b34610171575f366003190112610171576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610171575f366003190112610171576001546001600160a01b033381831603610b325760018060a01b03198092166001555f549133908316175f553391165f80516020612ba88339815191525f80a3005b60405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608490fd5b34610171575f36600319011261017157610ba161202e565b600180546001600160a01b03199081169091555f80549182168155906001600160a01b03165f80516020612ba88339815191528280a3005b34610171575f3660031901126101715760035460405160109190911c6001600160a01b03168152602090f35b34610171576020366003190112610171576101206001600160a01b0380610c2a610faa565b165f52600260205261ffff60405f20805492600163ffffffff92015491604051948281168652818160a01c16602087015260ff8160c01c16604087015260ff8160c81c16606087015260d01c166080850152811660a084015260ff8160a01c16151560c0840152610ca460e0840160ff8360a81c16610fc0565b60b01c16610100820152f35b34610171576020366003190112610171577fb72d36542c9b761c0d9b215bddd7b59c055dd4fb2f6c5da22e964720458ddff16020610cec610faa565b610cf461202e565b6003805462010000600160b01b031916601083901b62010000600160b01b03161790556040516001600160a01b039091168152a1005b3461017157604036600319011261017157610d43610faa565b6024359060058210156101715760018060a01b03908160035460101c1633141580610dbf575b610dae5782156108c4575f80516020612b88833981519152916020911692835f5260028252610d9e81600160405f200161100b565b610dab6040518092610fc0565ba2005b6040516282b42960e81b8152600490fd5b50815f5416331415610d69565b34610171575f366003190112610171576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610171576040366003190112610171576001600160a01b0360243581811680820361017157610e41600435611151565b92610e4b8461151c565b610e548461161b565b949093610e608261170b565b9490938181602086015116145f14610f7657505050610200810151948580925b610200810180516001600160801b0396871698919791610ea1908a90610fcd565b610eaa91610fda565b916102200195865191169384610ebf91610fcd565b610ec891610fda565b610ed191610fcd565b90610edb91610fed565b94845190610ee891610fda565b90835190610ef591610fda565b610efe91610fcd565b90610f0891610fed565b91518060601b600160601b91808204831490151715610f625785610f2b91610fed565b91518060601b918183041490151715610f6257608094610f4a91610fed565b91604051938452602084015260408301526060820152f35b634e487b7160e01b5f52601160045260245ffd5b60408401511603610f91575061022081015194858092610e80565b610260820151610fa0916119bd565b5094858092610e80565b600435906001600160a01b038216820361017157565b9060058210156106e15752565b91908201809211610f6257565b81810292918115918404141715610f6257565b8115610ff7570490565b634e487b7160e01b5f52601260045260245ffd5b9060058110156106e157815460ff60a81b191660a89190911b60ff60a81b16179055565b61012081019081106001600160401b0382111761104b57604052565b634e487b7160e01b5f52604160045260245ffd5b601f909101601f19168101906001600160401b0382119082101761104b57604052565b90816020910312610171575160ff811681036101715790565b60058210156106e15752565b51906001600160a01b038216820361017157565b51908160020b820361017157565b51906001600160801b038216820361017157565b519061ffff8216820361017157565b5190811515820361017157565b91908260c09103126101715761110e826110a7565b9161111b602082016110bb565b91611128604083016110dd565b91611135606082016110dd565b9161114e60a0611147608085016110dd565b93016110ec565b90565b60405190919061028081016001600160401b0381118282101761104b576040525f81525f60208201525f60408201525f60608201525f60808201525f60a08201525f60c08201525f60e08201525f6101008201525f6101208201525f6101408201525f6101608201525f6101808201525f6101a08201525f6101c08201525f6101e08201525f6102008201525f6102208201525f6102408201525f61026082015280926040519063133f757160e31b82528060048301526101808260248160018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa80156107ca575f915f905f925f80925f915f945f915f935f96611434575b62ffffff9a9b508c5260018060a01b038b1660208d015260018060a01b03881660408d015289891660608d015260020b60808c015260020b60a08b015260018060801b03948580941660c08c015260e08b01526101008a01521661012088015216610140860152604051936328af8d0b60e01b855260018060a01b0316600485015260018060a01b031660248401521660020b604482015260208160648160018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156107ca575f916113fa575b506001600160a01b031680156113bf5760c08160049261016085015260405192838092633850c7bd60e01b82525afa9081156107ca57610180915f915f9161138a575b5060020b6101a08401526001600160a01b0316910152565b90506113ae915060c03d60c0116113b8575b6113a6818361105f565b8101906110f9565b505050505f611372565b503d61139c565b60405162461bcd60e51b8152602060048201526013602482015272141bdbdb08191bd95cc81b9bdd08195e1a5cdd606a1b6044820152606490fd5b90506020813d60201161142c575b816114156020938361105f565b8101031261017157611426906110a7565b5f61132f565b3d9150611408565b9950505050505050505050610180823d61018011611514575b8161145b610180938361105f565b810103126101715781516001600160601b0381160361017157611480602083016110a7565b5061148d604083016110a7565b9161149a606082016110a7565b9260808201519062ffffff821682036101715762ffffff936114be60a085016110bb565b936114cb60c082016110bb565b926114d860e083016110c9565b9161010081015192610120820151956115016101606114fa61014086016110c9565b94016110c9565b939a9798909194969293958b9a50611258565b3d915061144d565b6020810151610260820180516001600160a01b039261155a916115409185166119bd565b6102008693929301928185528352846040870151166119bd565b61022086019352825251908160601b91808304600160601b1490151715610f62576115b19161158a915190610fed565b6115ac61159e846101808701511680612085565b8261ffff600354169161219a565b61223b565b908160301b91808304600160301b1490151715610f62578082116115d9576102409116910152565b60405162461bcd60e51b815260206004820152602760248201525f80516020612b688339815191526044820152663630206269747360c81b6064820152608490fd5b5f915f9160c0810160018060801b03918282511661163857505050565b91935091935061164e608082015160020b61237c565b906101c081019360018060a01b03809316855282806102408161167760a087015160020b61237c565b1694856101e0820152015116955116935116918184915f915f968181116116e7575b505082811687116116b45750506116b19394506129bc565b91565b9194509082168510156116dc5750926116d2826116d89495836129bc565b9361298a565b9091565b93506116d89261298a565b945092505f80611699565b6001600160801b039182169082160191908211610f6257565b6101a081015161016082018051608084015160a08501516040805163f305839960e01b8152909795600293840b9592840b94930b926001600160a01b0390811692602091908284600481885afa93841561198e575f9461195e575b50518a51634614131960e01b815291839183916004918391165afa918215611954575f92611926575b505088519163f30dba9360e01b95868452876004850152610140958685602481895afa9788156118e8578c5f965f9a6118f2575b509060248992518099819382528660048301525afa9889156118e85761114e9a9b9c505f965f9a6118aa575b508112156118675750505050611840611840949561185d9361184e93039603955b60e08a01516101008b015160c08c01805190996001600160801b03999290039389936118459392851691036120c9565b612aa4565b975116906120c9565b938361012089015116906116f2565b95015116906116f2565b9296949392121561188f579561185d9361184e93611840936118409899030397030395611810565b50611840945061185d926118409161184e9303960395611810565b9099506118ce919650873d89116118e1575b6118c6818361105f565b810190612a26565b505050505098935091505095985f6117ef565b503d6118bc565b8c513d5f823e3d90fd5b8992919a506024975061191190833d85116118e1576118c6818361105f565b50505050509a9350915050979a9192506117c3565b90809250813d831161194d575b61193d818361105f565b8101031261017157515f8061178f565b503d611933565b8a513d5f823e3d90fd5b9093508281813d8311611987575b611976818361105f565b810103126101715751926004611766565b503d61196c565b8b513d5f823e3d90fd5b9060ff8091169116039060ff8211610f6257565b60ff16604d8111610f6257600a0a90565b5f9283929091906001600160a01b03808316907f0000000000000000000000000000000000000000000000000000000000000000168114612021575f52600260205260405f209161ffff600160405194611a168661102f565b63ffffffff8154838060a01b0381168852818160a01c16602089015260ff8160c01c16604089015260ff8160c81c16606089015260d01c166080870152015460018060a01b03811660a086015260ff8160a01c16151560c0860152611a8460ff8260a81c1660e0870161109b565b60b01c1661010084015260e083015160058110156106e157801561200f575f925f9360018314809281159586612001575b838315611fef575b6106e157849287611fe1575b848415611fcf575b50611e76575b5050611b12575b6106e15791611b07575b50611af1575050565b61ffff610100611b0593015116908561219a565b565b60029150145f611ae8565b60a0860151608087015191956001600160a01b039091169163ffffffff1680611bd3575060c060049260405193848092633850c7bd60e01b82525afa9182156107ca578692611b73915f91611baf575b505b6001600160a01b031680612085565b60c088015115611b9957915b6106e1578215611b90575093611ade565b94985097611ade565b80925015610ff7578591600160c01b0491611b7f565b611bc8915060c03d60c0116113b8576113a6818361105f565b50505050505f611b62565b60405190926001600160401b039190606082018381118382101761104b5760405260028252602082019160403684375f611c0c82612b11565b5285611c1782612b32565b5260405163883bdbfd60e01b815260206004820152905160248201819052909283916044830191905f5b818110611e57575050509181805f9403915afa9182156107ca575f92611d55575b5050611c6d81612b11565b5190611c89600692611c7e83612b32565b51840b90840b612b42565b9084830b91830b948215610ff7575f1992667fffffffffffff19871481851416610f62578a960560020b935f611cd6611cc185612b11565b51830b611ccd86612b32565b51840b90612b42565b820b129283611d13575b505050611cfa575b50611cf5611b739161237c565b611b64565b909250627fffff198314610f6257869201611cf5611ce8565b909250611d3a919650611d31611d2882612b11565b51840b91612b32565b51830b90612b42565b9460030b8015610ff7578995820b07900b15155f8080611ce0565b9091503d805f843e611d67818461105f565b8201906040838303126101715782518181116101715783019282601f8501121561017157835193611d9785612afa565b94611da5604051968761105f565b80865260208087019160051b8301019185831161017157602001905b828210611e3f575050506020810151918211610171570181601f8201121561017157805190602080611df284612afa565b611dff604051918261105f565b848152019260051b82010192831161017157602001905b828210611e27575050505f80611c62565b60208091611e34846110a7565b815201910190611e16565b60208091611e4c84612a18565b815201910190611dc1565b825163ffffffff16845286945060209384019390920191600101611c41565b611e84919a50969196612725565b9880611fc95750611eb47f0000000000000000000000000000000000000000000000000000000000000000612725565b905b81997f00000000000000000000000000000000000000000000000000000000000000008960ff60608201511660ff83168181115f14611f56575050611f0a611f14939260ff6060611f0f9401511690611998565b6119ac565b610fda565b8060601b90808204600160601b1490151715610f62578392611f3591610fed565b915b6106e15760028503611f4d5750945b5f80611ad7565b95995098611f46565b93959310159050611fa6578360601b93808504600160601b1490151715610f6257611f9a611f0a8b9260ff6060611f91611fa0978b9a610fed565b95015116611998565b90610fed565b91611f37565b50918060601b90808204600160601b1490151715610f62578392611fa091610fed565b90611eb6565b9093506106e157600486149284611ad1565b5f9450600287149350611ac9565b9092506106e157600385149183611abd565b5f9350600286149250611ab5565b60405163d311bc3960e01b8152600490fd5b50600160601b9450925050565b5f546001600160a01b0316330361204157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b5f1982820990828102928380841093039280840393146120c057600160601b9183831115610171570990828211900360a01b910360601c1790565b50505060601c90565b5f19828209908281029283808410930392808403931461210457600160801b9183831115610171570990828211900360801b910360801c1790565b50505060801c90565b915f19828409928281029283808610950394808603951461217f57848311156101715782910981805f0316809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b505080925015610171570490565b91908203918211610f6257565b90919082808210612217576121ae9161218d565b61271090818102918183041490151715610f6257915b80159283156121fe575b5050816121ef575b506121dd57565b60405163280cb9ed60e11b8152600490fd5b905061ffff809116105f6121d6565b612209929350610fed565b61ffff821610905f806121ce565b906122219161218d565b61271090818102918183041490151715610f6257916121c4565b801561237757612305815f908360801c8061236b575b508060401c8061235e575b508060201c80612351575b508060101c80612344575b508060081c80612337575b508060041c8061232a575b508060021c8061231d575b50600191828092811c612316575b1c1b6122ad8185610fed565b01811c6122ba8185610fed565b01811c6122c78185610fed565b01811c6122d48185610fed565b01811c6122e18185610fed565b01811c6122ee8185610fed565b01811c6122fb8185610fed565b01901c8092610fed565b80821015612311575090565b905090565b01816122a1565b600291509101905f612293565b600491509101905f612288565b600891509101905f61227d565b601091509101905f612272565b602091509101905f612267565b604091509101905f61225c565b9150506080905f612251565b505f90565b60020b5f8112156126d957805f03905b620d89e882116126c75760018216156126bd576ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b031691600281166126a1575b60048116612685575b60088116612669575b6010811661264d575b60208116612631575b60408116612615575b6080908181166125fa575b61010081166125df575b61020081166125c4575b61040081166125a9575b610800811661258e575b6110008116612573575b6120008116612558575b614000811661253d575b6180008116612522575b620100008116612507575b6202000081166124ed575b6204000081166124d3575b62080000166124b9575b505f126124ab575b63ffffffff81166124a3575f905b60201c60ff91909116016001600160a01b031690565b60019061248d565b8015610ff7575f190461247f565b6b048a170391f7dc42444e8fa25f929302901c9190612477565b6d2216e584f5fa1ea926041bedfe98909302811c9261246d565b926e5d6af8dedb81196699c329225ee60402811c92612462565b926f09aa508b5b7a84e1c677de54f3e99bc902811c92612457565b926f31be135f97d08fd981231505542fcfa602811c9261244c565b926f70d869a156d2a1b890bb3df62baf32f702811c92612442565b926fa9f746462d870fdf8a65dc1f90e061e502811c92612438565b926fd097f3bdfd2022b8845ad8f792aa582502811c9261242e565b926fe7159475a2c29b7443b29c7fa6e889d902811c92612424565b926ff3392b0822b70005940c7a398e4b70f302811c9261241a565b926ff987a7253ac413176f2b074cf7815e5402811c92612410565b926ffcbe86c7900a88aedcffc83b479aa3a402811c92612406565b926ffe5dee046a99a2a811c461f1969c305302811c926123fc565b916fff2ea16466c96a3843ec78b326b528610260801c916123f1565b916fff973b41fa98c081472e6896dfb254c00260801c916123e8565b916fffcb9843d60f6159c9db58835c9266440260801c916123df565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c916123d6565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c916123cd565b916ffff97272373d413259a46990580e213a0260801c916123c4565b600160801b6123b1565b6040516315e4079d60e11b8152600490fd5b8061238c565b51906001600160501b038216820361017157565b908160a091031261017157612707816126df565b9160208201519160408101519161114e6080606084015193016126df565b6001600160a01b039081167f00000000000000000000000000000000000000000000000000000000000000008216811461297f576004908183815416806128d8575b50505f526002602052604090815f20918181516127838161102f565b845494868616825263ffffffff9160a0978161ffff600160208c950195878c871c168752878a85019c8d60ff8260c01c16905260ff8160c81c16606087015260d01c16608085015201548381168584015260ff81861c16151560c08401526127f460ff8260a81c1660e0850161109b565b60b01c166101008201525116855194858092633fabe5a360e21b82525afa9283156128ce575f975f94612891575b50505161283192911690610fcd565b42118015612887575b61287a57508260601b92808404600160601b1490151715612867575090611f9a60ff61114e9351166119ac565b601190634e487b7160e01b5f525260245ffd5b5163e4c4a29f60e01b8152fd5b505f84131561283a565b6128b7929398506128319450803d106128c7575b6128af818361105f565b8101906126f3565b509892505096925f929192612822565b503d6128a5565b84513d5f823e3d90fd5b60a09060405192838092633fabe5a360e21b82525afa9081156107ca575f905f92612957575b5060011461294757801561293657612919610258914261218d565b111561292657815f612767565b506040516335e6141b60e01b8152fd5b604051634b61ed1760e11b81528390fd5b60405162032b3d60e81b81528390fd5b60019250612974915060a03d60a0116128c7576128af818361105f565b5050929150906128fe565b50600160601b919050565b61114e92916001600160a01b039190828116838316116129b6575b0316906001600160801b0316612085565b906129a5565b61114e9290916001600160a01b039182821683851611612a02575b6129fa91838116919085900384169060601b600160601b600160e01b031661210d565b911690610fed565b9092906129d7565b519081600f0b820361017157565b51908160060b820361017157565b91908261014091031261017157612a3c826110c9565b91612a4960208201612a0a565b91612a5660408301612a0a565b9160608101519160808201519160a081015191612a7560c08301612a18565b91612a8260e082016110a7565b9161010082015163ffffffff811681036101715761012061114e9193016110ec565b6001600160801b0390818111612ab8571690565b60405162461bcd60e51b815260206004820152602760248201525f80516020612b688339815191526044820152663238206269747360c81b6064820152608490fd5b6001600160401b03811161104b5760051b60200190565b805115612b1e5760200190565b634e487b7160e01b5f52603260045260245ffd5b805160011015612b1e5760400190565b600691820b910b0390667fffffffffffff198212667fffffffffffff831317610f625756fe53616665436173743a2076616c756520646f65736e27742066697420696e2031ade0260ab804ce5841ed333eec17e4cbab2bdb16f48c0e2c5031d24c4fa763a28be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0000000000000000000000000827922686190790b37229fd06084350e74485b72000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda029130000000000000000000000000000000000000000000000000000000000000000