1 tx
9 calls
constructor
constructor(address _v3TwapUtilities, address _dexAdapter)
functions
curveTokenIdx
viewfunction curveTokenIdx(address, address) view returns (int128)
OHM
viewfunction OHM() view returns (address)
owner
viewfunction owner() view returns (address)
pOHM
viewfunction pOHM() view returns (address)
zapMap
viewfunction zapMap(address, address) view returns (uint8 poolType, address pool1, address pool2)
addLPAndStake
payablefunction addLPAndStake(address _indexFund, uint256 _amountIdxTokens, address _pairedLpTokenProvided, uint256 _amtPairedLpTokenProvided, uint256 _amountPairedLpTokenMin, uint256 _slippage, uint256 _deadline) payable returns (uint256 _amountOut)
bond
nonpayablefunction bond(address _indexFund, address _token, uint256 _amount, uint256 _amountMintMin)
claimRewardsMulti
nonpayablefunction claimRewardsMulti(address[] _rewards)
renounceOwnership
nonpayablefunction renounceOwnership()
rescueERC20
nonpayablefunction rescueERC20(address _token)
rescueETH
nonpayablefunction rescueETH()
setDefaultSlippage
nonpayablefunction setDefaultSlippage(uint256 _slip)
setOHM
nonpayablefunction setOHM(address _OHM, address _pOHM)
setPoolSlippage
nonpayablefunction setPoolSlippage(address _pool, uint256 _slip)
setZapMap
nonpayablefunction setZapMap(address _in, address _out, tuple _pools)
setZapMapFromPoolSingle
nonpayablefunction setZapMapFromPoolSingle(uint8 _type, address _pool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unstakeAndRemoveLP
nonpayablefunction unstakeAndRemoveLP(address _indexFund, uint256 _amountStakedTokens, uint256 _minLPTokens, uint256 _minPairedLpToken, uint256 _deadline)
events
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
errors
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x610100604052601e600255600380546001600160a01b0319167364aa3364f17a4d01c6f1751fd97c2bd3d7e7f1d517905534801561003b575f5ffd5b50604051614b1f380380614b1f83398101604081905261005a916105c5565b8181338061008157604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b61008a8161021a565b50806001600160a01b0316638ada032e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100eb91906105fd565b6001600160a01b0390811660805282811660c052811660e0819052604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801561013f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061016391906105fd565b6001600160a01b031660a05246600103610211576101955f7369accb968b19a53790f43e57558f5e443a91af22610269565b6101b460027360594a405d53811d3bc4766596efd80fd545a270610269565b6101d360027388e6a0c2ddd26feeb64f039a2c41296fcb3f5640610269565b6101f260027388051b0eea095007d3bef21ab287be961f3d8598610269565b610211600273893f503fac2ee1e5b78665db23f9c94017aae97d610269565b50505050610633565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f808084600281111561027e5761027e61061f565b036103a45760405163c661065760e01b81525f60048201526001600160a01b0384169063c6610657906024016020604051808303815f875af11580156102c6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102ea91906105fd565b60405163c661065760e01b8152600160048201529092506001600160a01b0384169063c6610657906024016020604051808303815f875af1158015610331573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061035591906105fd565b6001600160a01b038481165f908152600660209081526040808320878516845290915280822080546001600160801b031990811690915592841682529020805490911660011790559050610469565b826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103e0573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061040491906105fd565b9150826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610442573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046691906105fd565b90505b5f60405180606001604052808660028111156104875761048761061f565b81526001600160a01b038087166020808401919091525f6040938401819052878316815260058252838120928716815291905220815181549293508392829060ff191660018360028111156104de576104de61061f565b02179055506020828101518254610100600160a81b0319166101006001600160a01b0392831602178355604093840151600193840180546001600160a01b0319169183169190911790558581165f908152600583528481209188168152915291909120825181548493839160ff1916908360028111156105605761056061061f565b021790555060208201518154610100600160a81b0319166101006001600160a01b0392831602178255604090920151600190910180546001600160a01b031916919092161790555050505050565b6001600160a01b03811681146105c2575f5ffd5b50565b5f5f604083850312156105d6575f5ffd5b82516105e1816105ae565b60208401519092506105f2816105ae565b809150509250929050565b5f6020828403121561060d575f5ffd5b8151610618816105ae565b9392505050565b634e487b7160e01b5f52602160045260245ffd5b60805160a05160c05160e0516144536106cc5f395f8181610e910152818161193f015281816130af0152818161310301528181613287015281816132bc015281816137cd0152818161386201528181613b0a0152613b3901525f61392201525f818161205e01528181612081015281816121360152818161221e01528181612cea01528181612d570152612dda01525f50506144535ff3fe608060405260043610610108575f3560e01c80638da5cb5b11610092578063ae7eb64611610062578063ae7eb646146102d7578063ccec3716146102f6578063d71f11fb14610315578063e42f534314610334578063f2fde38b14610397575f5ffd5b80638da5cb5b1461024a57806394d994591461027a578063a1879d9014610299578063a6c41fec146102b8575f5ffd5b806344bd1afd116100d857806344bd1afd1461018657806353eedc67146101a5578063715018a6146101c4578063816846c8146101d857806384614e1a14610229575f5ffd5b80631fd8ecd914610113578063205b7d031461013457806320800a001461015357806338e7811114610167575f5ffd5b3661010f57005b5f5ffd5b34801561011e575f5ffd5b5061013261012d366004613e21565b6103b6565b005b34801561013f575f5ffd5b5061013261014e366004613e61565b6107e5565b34801561015e575f5ffd5b50610132610869565b348015610172575f5ffd5b50610132610181366004613eab565b6108d0565b348015610191575f5ffd5b506101326101a0366004613ec5565b6108e6565b3480156101b0575f5ffd5b506101326101bf366004613f4a565b61092e565b3480156101cf575f5ffd5b506101326109c8565b3480156101e3575f5ffd5b506102116101f2366004613e61565b600660209081525f9283526040808420909152908252902054600f0b81565b604051600f9190910b81526020015b60405180910390f35b61023c610237366004613ff4565b6109db565b604051908152602001610220565b348015610255575f5ffd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610220565b348015610285575f5ffd5b50610132610294366004614054565b61104c565b3480156102a4575f5ffd5b506101326102b33660046140a1565b6110a5565b3480156102c3575f5ffd5b50600354610262906001600160a01b031681565b3480156102e2575f5ffd5b50600454610262906001600160a01b031681565b348015610301575f5ffd5b50610132610310366004614136565b611145565b348015610320575f5ffd5b5061013261032f366004614151565b611249565b34801561033f575f5ffd5b5061038861034e366004613e61565b600560209081525f92835260408084209091529082529020805460019091015460ff8216916001600160a01b036101009091048116911683565b604051610220939291906141a8565b3480156103a2575f5ffd5b506101326103b1366004614136565b61180a565b5f856001600160a01b03166394cc699e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103f3573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061041791906141e6565b90505f866001600160a01b0316634f4ce61d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610456573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061047a91906141e6565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038416906370a0823190602401602060405180830381865afa1580156104c1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e59190614201565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038416906370a0823190602401602060405180830381865afa15801561052c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105509190614201565b90506105676001600160a01b03851633308b611844565b6040516370a0823160e01b81523060048201525f906105eb908b90879086906001600160a01b038316906370a0823190602401602060405180830381865afa1580156105b5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d99190614201565b6105e3919061422c565b8b8b8b6118b1565b6040516370a0823160e01b815230600482015290915081906001600160a01b038c16906370a0823190602401602060405180830381865afa158015610632573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106569190614201565b11156106e4576106e4335b6040516370a0823160e01b815230600482015283906001600160a01b038e16906370a0823190602401602060405180830381865afa1580156106a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106c99190614201565b6106d3919061422c565b6001600160a01b038d169190611c48565b6040516370a0823160e01b815230600482015282906001600160a01b038616906370a0823190602401602060405180830381865afa158015610728573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074c9190614201565b11156107d9576107d9336040516370a0823160e01b815230600482015284906001600160a01b038816906370a0823190602401602060405180830381865afa15801561079a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107be9190614201565b6107c8919061422c565b6001600160a01b0387169190611c48565b50505050505050505050565b6107ed611c79565b6001600160a01b03821615610802578161080f565b6003546001600160a01b03165b600380546001600160a01b0319166001600160a01b039283161790558116156108385780610845565b6004546001600160a01b03165b600480546001600160a01b0319166001600160a01b03929092169190911790555050565b610871611c79565b5f80546040516001600160a01b039091169047908381818185875af1925050503d805f81146108bb576040519150601f19603f3d011682016040523d82523d5f602084013e6108c0565b606091505b50509050806108cd575f5ffd5b50565b6108d8611c79565b6108e28282611ca5565b5050565b6108ee611c79565b6103e88111156109295760405162461bcd60e51b81526020600482015260016024820152602160f91b60448201526064015b60405180910390fd5b600255565b610936611c79565b6001600160a01b038084165f9081526005602090815260408083209386168352929052208151815483929190829060ff1916600183600281111561097c5761097c614194565b021790555060208201518154610100600160a81b0319166101006001600160a01b0392831602178255604090920151600190910180546001600160a01b03191691909216179055505050565b6109d0611c79565b6109d95f611ff3565b565b5f5f8890505f896001600160a01b0316634f4ce61d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a1d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a4191906141e6565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610a88573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aac9190614201565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610af3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b179190614201565b90505f610b24344761422c565b9050610b3b6001600160a01b03861633308f611844565b6001600160a01b038b16610b8a575f3411610b825760405162461bcd60e51b815260206004820152600760248201526609c8a8a888aa8960cb1b6044820152606401610920565b349950610b9f565b610b9f6001600160a01b038c1633308d611844565b836001600160a01b03168b6001600160a01b031614610bc657610bc48b858c8c612042565b505b6040516370a0823160e01b8152306004820152610c4f90869084906001600160a01b038816906370a0823190602401602060405180830381865afa158015610c10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c349190614201565b610c3e919061422c565b6001600160a01b038716919061294c565b6001600160a01b038d1663a9e9c8bc8415610c6a5784610c6d565b60015b6040516370a0823160e01b81523060048201526001600160a01b038916906370a0823190602401602060405180830381865afa158015610caf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd39190614201565b610cdd919061422c565b8415610ce95784610cec565b60015b6040516370a0823160e01b81523060048201526001600160a01b038916906370a0823190602401602060405180830381865afa158015610d2e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d529190614201565b610d5c919061422c565b6040516001600160e01b031960e085901b16815260048101929092526024820152604481018b9052606481018a90526084016020604051808303815f875af1158015610daa573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dce9190614201565b95505f8611610e055760405162461bcd60e51b81526020600482015260036024820152624c504d60e81b6044820152606401610920565b610f0c8d6001600160a01b03166394cc699e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e44573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e6891906141e6565b604051639f4f974560e01b81526001600160a01b038881166004830152878116602483015289917f000000000000000000000000000000000000000000000000000000000000000090911690639f4f974590604401602060405180830381865afa158015610ed8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efc91906141e6565b6001600160a01b0316919061294c565b610f768d6001600160a01b03166394cc699e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f6f91906141e6565b33886129d3565b955080471115611013575f33610f8c834761422c565b6040515f81818185875af1925050503d805f8114610fc5576040519150601f19603f3d011682016040523d82523d5f602084013e610fca565b606091505b50509050808015610fdb5750814710155b6110115760405162461bcd60e51b81526020600482015260076024820152660a89e9e9aaa86960cb1b6044820152606401610920565b505b61102b338685156110245785612b90565b6001612b90565b61103c338584156110245784612b90565b5050505050979650505050505050565b611054611c79565b6103e881111561108a5760405162461bcd60e51b81526020600482015260016024820152602160f91b6044820152606401610920565b6001600160a01b039091165f90815260016020526040902055565b80515f5b81811015611140578281815181106110c3576110c361423f565b60200260200101516001600160a01b031663d279c1916110e03390565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024015f604051808303815f87803b15801561111e575f5ffd5b505af1158015611130573d5f5f3e3d5ffd5b5050600190920191506110a99050565b505050565b61114d611c79565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015611191573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111b59190614201565b116111be575f5ffd5b6108cd6111d25f546001600160a01b031690565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611214573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112389190614201565b6001600160a01b0384169190611c48565b5f846001600160a01b0316632acada4d6040518163ffffffff1660e01b81526004015f60405180830381865afa158015611285573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526112ac9190810190614253565b90505f815167ffffffffffffffff8111156112c9576112c9613edc565b6040519080825280602002602001820160405280156112f2578160200160208202803683370190505b5060405163f3e0ffbf60e01b81526001600160a01b0387811660048301529192505f9188169063f3e0ffbf90602401602060405180830381865afa15801561133c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113609190614201565b90505f876001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113c39190614201565b156113e657816113d7600160601b8861432f565b6113e1919061435a565b6113ec565b600160601b5b84519091505f5b818110156116d0575f8a6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611438573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061145c9190614201565b15611507576115028b6001600160a01b031663f3e0ffbf8985815181106114855761148561423f565b6020908102919091010151516040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156114d3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114f79190614201565b85600160601b612c21565b6115ad565b8a6001600160a01b031663e4b549578b8b8a868151811061152a5761152a61423f565b6020908102919091010151516040516001600160e01b031960e086901b1681526001600160a01b0393841660048201526024810192909252919091166044820152606401602060405180830381865afa158015611589573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ad9190614201565b90508682815181106115c1576115c161423f565b6020908102919091010151516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611610573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116349190614201565b8683815181106116465761164661423f565b602090810291909101015261168d3330838a86815181106116695761166961423f565b60200260200101515f01516001600160a01b0316611844909392919063ffffffff16565b6116c78b828985815181106116a4576116a461423f565b60200260200101515f01516001600160a01b031661294c9092919063ffffffff16565b506001016113f3565b506040516370a0823160e01b81523060048201525f906001600160a01b038b16906370a0823190602401602060405180830381865afa158015611715573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117399190614201565b60405163b08d033360e01b81526001600160a01b038b81166004830152602482018b9052604482018a9052919250908b169063b08d0333906064015f604051808303815f87803b15801561178b575f5ffd5b505af115801561179d573d5f5f3e3d5ffd5b505050506117ab6106613390565b5f5b828110156117fd576117f5338883815181106117cb576117cb61423f565b60200260200101515f01518884815181106117e8576117e861423f565b6020026020010151612b90565b6001016117ad565b5050505050505050505050565b611812611c79565b6001600160a01b03811661183b57604051631e4fbdf760e01b81525f6004820152602401610920565b6108cd81611ff3565b6040516001600160a01b0384811660248301528381166044830152606482018390526118ab9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050612c5d565b50505050565b5f5f876001600160a01b0316634f4ce61d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ef573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061191391906141e6565b604051639f4f974560e01b81526001600160a01b038a8116600483015280831660248301529192505f917f00000000000000000000000000000000000000000000000000000000000000001690639f4f974590604401602060405180830381865afa158015611984573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119a891906141e6565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156119ef573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a139190614201565b6040516305c2fbcf60e31b8152600481018a90529091506001600160a01b038a1690632e17de78906024015f604051808303815f87803b158015611a55575f5ffd5b505af1158015611a67573d5f5f3e3d5ffd5b50506040516370a0823160e01b81523060048201526001600160a01b038d1692506370a082319150602401602060405180830381865afa158015611aad573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ad19190614201565b6040516370a0823160e01b8152306004820152909450611b5d908b9083906001600160a01b038616906370a0823190602401602060405180830381865afa158015611b1e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b429190614201565b611b4c919061422c565b6001600160a01b038516919061294c565b6040516370a0823160e01b81523060048201526001600160a01b03808c169163f6823996918491908616906370a0823190602401602060405180830381865afa158015611bac573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bd09190614201565b611bda919061422c565b6040516001600160e01b031960e084901b1681526004810191909152602481018a905260448101899052606481018890526084015f604051808303815f87803b158015611c25575f5ffd5b505af1158015611c37573d5f5f3e3d5ffd5b505050505050509695505050505050565b6040516001600160a01b0383811660248301526044820183905261114091859182169063a9059cbb90606401611879565b5f546001600160a01b031633146109d95760405163118cdaa760e01b8152336004820152602401610920565b5f8080846002811115611cba57611cba614194565b03611de95760405163c661065760e01b81525f60048201526001600160a01b0384169063c6610657906024016020604051808303815f875af1158015611d02573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d2691906141e6565b60405163c661065760e01b8152600160048201529092506001600160a01b0384169063c6610657906024016020604051808303815f875af1158015611d6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d9191906141e6565b6001600160a01b038481165f908152600660209081526040808320878516845290915280822080546fffffffffffffffffffffffffffffffff1990811690915592841682529020805490911660011790559050611eae565b826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e25573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e4991906141e6565b9150826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e87573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eab91906141e6565b90505b5f6040518060600160405280866002811115611ecc57611ecc614194565b81526001600160a01b038087166020808401919091525f6040938401819052878316815260058252838120928716815291905220815181549293508392829060ff19166001836002811115611f2357611f23614194565b02179055506020828101518254610100600160a81b0319166101006001600160a01b0392831602178355604093840151600193840180546001600160a01b0319169183169190911790558581165f908152600583528481209188168152915291909120825181548493839160ff191690836002811115611fa557611fa5614194565b021790555060208201518154610100600160a81b0319166101006001600160a01b0392831602178255604090920151600190910180546001600160a01b031916919092161790555050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f6001600160a01b0385166120bf5761205a83612cc9565b92507f000000000000000000000000000000000000000000000000000000000000000094507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316036120bf575081612944565b6004545f906001600160a01b038087169116036120e857506003546001600160a01b0316935060015b6001600160a01b038516731bed97cbc3c24a4fb5c069c6e311a967386131f7148061212f57506001600160a01b03851673583019ff0f430721ada9cfb4fac8f06ca104d0b4145b156121d0577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b03161461219e5760405162461bcd60e51b81526020600482015260066024820152652ca2aa2424a760d11b6044820152606401610920565b6121c884846001600160a01b03881673583019ff0f430721ada9cfb4fac8f06ca104d0b414612e57565b915050612944565b6001600160a01b038616731bed97cbc3c24a4fb5c069c6e311a967386131f7148061221757506001600160a01b03861673583019ff0f430721ada9cfb4fac8f06ca104d0b4145b156122b1577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316146122875760405162461bcd60e51b81526020600482015260076024820152661651551213d55560ca1b6044820152606401610920565b6121c884846001600160a01b038916731bed97cbc3c24a4fb5c069c6e311a967386131f714612f37565b6001600160a01b038087165f90815260056020908152604080832093891683529290528181208251606081019093528054919291829060ff1660028111156122fb576122fb614194565b600281111561230c5761230c614194565b815281546001600160a01b036101009091048116602080840191909152600190930154811660409092019190915290820151919250166123e0576040805160028082526060820183525f9260208301908036833701905050905087815f815181106123795761237961423f565b60200260200101906001600160a01b031690816001600160a01b03168152505086816001815181106123ad576123ad61423f565b60200260200101906001600160a01b031690816001600160a01b0316815250506123d8818787612ff4565b9350506127c1565b60408101516001600160a01b031615155f8251600281111561240457612404614194565b0361246857602080830180516001600160a01b038082165f908152600680865260408083208f85168452875280832054955184168352908652808220928d16825291909452909220546124619291600f90810b91900b8989613424565b93506127bf565b60018251600281111561247d5761247d614194565b03612685575f82602001516001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124c3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124e791906141e6565b90505f826124f65760026124f9565b60035b60ff1667ffffffffffffffff81111561251457612514613edc565b60405190808252806020026020018201604052801561253d578160200160208202803683370190505b50905089815f815181106125535761255361423f565b60200260200101906001600160a01b031690816001600160a01b031681525050821561260157896001600160a01b0316826001600160a01b0316146125985781612603565b83602001516001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125d8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125fc91906141e6565b612603565b885b816001815181106126165761261661423f565b60200260200101906001600160a01b031690816001600160a01b03168152505082156126715788816002815181106126505761265061423f565b60200260200101906001600160a01b031690816001600160a01b0316815250505b61267c818989612ff4565b955050506127bf565b80156127a3575f82602001516001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126f091906141e6565b905061279b896127038560200151613514565b8b6001600160a01b0316846001600160a01b0316146127225783612786565b85602001516001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612762573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061278691906141e6565b6127938760400151613514565b8c8c8c61358b565b9450506127bf565b6127bc886127b48460200151613514565b89898961379a565b93505b505b816127cd575050612944565b600480546040516370a0823160e01b815230928101929092525f916001600160a01b03909116906370a0823190602401602060405180830381865afa158015612818573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061283c9190614201565b60045460035491925061285c916001600160a01b0390811691168661294c565b6004805460035460405163b08d033360e01b81526001600160a01b0391821693810193909352602483018790525f6044840152169063b08d0333906064015f604051808303815f87803b1580156128b1575f5ffd5b505af11580156128c3573d5f5f3e3d5ffd5b5050600480546040516370a0823160e01b815230928101929092528493506001600160a01b031691506370a0823190602401602060405180830381865afa158015612910573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129349190614201565b61293e919061422c565b93505050505b949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa158015612999573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129bd9190614201565b90506118ab84846129ce8585614379565b613c8f565b6040516370a0823160e01b815230600482015281905f906001600160a01b038616906370a0823190602401602060405180830381865afa158015612a19573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a3d9190614201565b1115612aa5576040516356e4bb9760e11b81526001600160a01b0384811660048301526024820184905285169063adc9772e906044015f604051808303815f87803b158015612a8a575f5ffd5b505af1158015612a9c573d5f5f3e3d5ffd5b50505050612b89565b6040516356e4bb9760e11b8152306004820152602481018390526001600160a01b0385169063adc9772e906044015f604051808303815f87803b158015612aea575f5ffd5b505af1158015612afc573d5f5f3e3d5ffd5b50506040516370a0823160e01b8152306004820152600192506001600160a01b03871691506370a0823190602401602060405180830381865afa158015612b45573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b699190614201565b612b73919061422c565b9050612b896001600160a01b0385168483611c48565b9392505050565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015612bd4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bf89190614201565b9050818111156118ab576118ab84612c10848461422c565b6001600160a01b0386169190611c48565b5f612c2d848484613d1e565b90505f8280612c3e57612c3e614346565b8486091115612b89575f198110612c53575f5ffd5b6001019392505050565b5f5f60205f8451602086015f885af180612c7c576040513d5f823e3d81fd5b50505f513d91508115612c93578060011415612ca0565b6001600160a01b0384163b155b156118ab57604051635274afe760e01b81526001600160a01b0385166004820152602401610920565b6040516370a0823160e01b81523060048201525f9081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015612d2f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d539190614201565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004015f604051808303818588803b158015612dae575f5ffd5b505af1158015612dc0573d5f5f3e3d5ffd5b50506040516370a0823160e01b81523060048201528493507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506370a082319150602401602060405180830381865afa158015612e29573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e4d9190614201565b612b89919061422c565b5f5f612e7b7369accb968b19a53790f43e57558f5e443a91af225f60018888613424565b9050821561294457612eb6731bed97cbc3c24a4fb5c069c6e311a967386131f773583019ff0f430721ada9cfb4fac8f06ca104d0b48361294c565b604051636e553f6560e01b81526004810182905230602482015273583019ff0f430721ada9cfb4fac8f06ca104d0b490636e553f65906044016020604051808303815f875af1158015612f0b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f2f9190614201565b915050612b89565b5f5f8215612f46575083612fc9565b604051635d043b2960e11b8152600481018690523060248201819052604482015273583019ff0f430721ada9cfb4fac8f06ca104d0b49063ba087652906064016020604051808303815f875af1158015612fa2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fc69190614201565b90505b612feb7369accb968b19a53790f43e57558f5e443a91af2260015f8488613424565b95945050505050565b82515f90600314818161302157856001815181106130145761301461423f565b602002602001015161303d565b856002815181106130345761303461423f565b60200260200101515b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa158015613084573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130a89190614201565b90506131017f000000000000000000000000000000000000000000000000000000000000000087895f815181106130e1576130e161423f565b60200260200101516001600160a01b031661294c9092919063ffffffff16565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166383e4b89f885f815181106131425761314261423f565b60200260200101518960018151811061315d5761315d61423f565b602002602001015189876131715789613173565b5f5b6040516001600160e01b031960e087901b1681526001600160a01b0394851660048201529390921660248401526044830152606482015230608482015260a4016020604051808303815f875af11580156131cf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131f39190614201565b5082156133a7575f8760018151811061320e5761320e61423f565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561325c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132809190614201565b90506132ba7f0000000000000000000000000000000000000000000000000000000000000000828a6001815181106130e1576130e161423f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166383e4b89f896001815181106132fc576132fc61423f565b60200260200101518a6002815181106133175761331761423f565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604481018490526064810189905230608482015260a4016020604051808303815f875af1158015613380573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133a49190614201565b50505b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa1580156133eb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061340f9190614201565b613419919061422c565b979650505050505050565b60405163c661065760e01b81526fffffffffffffffffffffffffffffffff851660048201525f9061348390879085906001600160a01b0383169063c6610657906024016020604051808303815f875af1158015610ed8573d5f5f3e3d5ffd5b60405163ddc1f59d60e01b8152600f86810b600483015285900b602482015260448101849052606481018390523060848201526001600160a01b0387169063ddc1f59d9060a4016020604051808303815f875af11580156134e6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061350a9190614201565b9695505050505050565b5f4661a4b11461358357816001600160a01b031663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa15801561355a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061357e919061438c565b613585565b5f5b92915050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa1580156135d1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135f59190614201565b905061361f6001600160a01b038a1673e592427a0aece92de3edee1f18e0157c058615648661294c565b6040516bffffffffffffffffffffffff1960608b811b821660208401526001600160e81b031960e88c811b821660348601528b831b841660378601528a901b16604b84015287901b16604e8201525f9060620160408051601f1981840301815260a08301825280835230602084015242838301526060830188905260808301879052905163c04b8d5960e01b815290925073e592427a0aece92de3edee1f18e0157c058615649163c04b8d59916136d991906004016143ae565b6020604051808303815f875af11580156136f5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137199190614201565b506040516370a0823160e01b815230600482015282906001600160a01b038816906370a0823190602401602060405180830381865afa15801561375e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137829190614201565b61378c919061422c565b9a9950505050505050505050565b60405163e3ddd77960e01b81526001600160a01b038681166004830152848116602483015261271060448301525f9182917f0000000000000000000000000000000000000000000000000000000000000000169063e3ddd77990606401602060405180830381865afa925050508015613830575060408051601f3d908101601f1916820190925261382d918101906141e6565b60015b6138d257604051630a8e060f60e01b81526001600160a01b038881166004830152868116602483015260c860448301527f00000000000000000000000000000000000000000000000000000000000000001690630a8e060f90606401602060405180830381865afa1580156138a7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138cb91906141e6565b90506138d5565b90505b825f03613a50575f856001600160a01b0316886001600160a01b0316106138fc57856138fe565b875b604051637fb4f79d60e01b81526001600160a01b0384811660048301529192505f917f0000000000000000000000000000000000000000000000000000000000000000169063d4bf1334908290637fb4f79d90602401602060405180830381865afa15801561396f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061399391906141e6565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156139d5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139f99190614201565b9050816001600160a01b0316896001600160a01b031614613a325780613a23600160601b8861432f565b613a2d919061435a565b613a4b565b600160601b613a41878361432f565b613a4b919061435a565b945050505b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015613a94573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ab89190614201565b6001600160a01b0383165f9081526001602052604081205491925090613ae057600254613af9565b6001600160a01b0383165f908152600160205260409020545b9050613b2f6001600160a01b038a167f00000000000000000000000000000000000000000000000000000000000000008861294c565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016638d5752d68a898b8a6103e8613b6f888261422c565b613b79908d61432f565b613b83919061435a565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015262ffffff9091166044840152606483015260848201523060a482015260c4016020604051808303815f875af1158015613beb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c0f9190614201565b506040516370a0823160e01b815230600482015282906001600160a01b038916906370a0823190602401602060405180830381865afa158015613c54573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c789190614201565b613c82919061422c565b9998505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052613ce08482613dc8565b6118ab576040516001600160a01b0384811660248301525f6044830152613d1491869182169063095ea7b390606401611879565b6118ab8482612c5d565b5f80805f19858709858702925082811083820303915050805f03613d52575f8411613d47575f5ffd5b508290049050612b89565b808411613d5d575f5ffd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f5f5f5f60205f8651602088015f8a5af192503d91505f51905082801561350a57508115613df9578060011461350a565b50505050506001600160a01b03163b151590565b6001600160a01b03811681146108cd575f5ffd5b5f5f5f5f5f60a08688031215613e35575f5ffd5b8535613e4081613e0d565b97602087013597506040870135966060810135965060800135945092505050565b5f5f60408385031215613e72575f5ffd5b8235613e7d81613e0d565b91506020830135613e8d81613e0d565b809150509250929050565b803560038110613ea6575f5ffd5b919050565b5f5f60408385031215613ebc575f5ffd5b613e7d83613e98565b5f60208284031215613ed5575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715613f1357613f13613edc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613f4257613f42613edc565b604052919050565b5f5f5f83850360a0811215613f5d575f5ffd5b8435613f6881613e0d565b93506020850135613f7881613e0d565b92506060603f1982011215613f8b575f5ffd5b506040516060810167ffffffffffffffff81118282101715613faf57613faf613edc565b8060405250613fc060408601613e98565b81526060850135613fd081613e0d565b60208201526080850135613fe381613e0d565b604082015292959194509192509050565b5f5f5f5f5f5f5f60e0888a03121561400a575f5ffd5b873561401581613e0d565b965060208801359550604088013561402c81613e0d565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b5f5f60408385031215614065575f5ffd5b823561407081613e0d565b946020939093013593505050565b5f67ffffffffffffffff82111561409757614097613edc565b5060051b60200190565b5f602082840312156140b1575f5ffd5b813567ffffffffffffffff8111156140c7575f5ffd5b8201601f810184136140d7575f5ffd5b80356140ea6140e58261407e565b613f19565b8082825260208201915060208360051b85010192508683111561410b575f5ffd5b6020840193505b8284101561350a57833561412581613e0d565b825260209384019390910190614112565b5f60208284031215614146575f5ffd5b8135612b8981613e0d565b5f5f5f5f60808587031215614164575f5ffd5b843561416f81613e0d565b9350602085013561417f81613e0d565b93969395505050506040820135916060013590565b634e487b7160e01b5f52602160045260245ffd5b60608101600385106141c857634e487b7160e01b5f52602160045260245ffd5b9381526001600160a01b039283166020820152911660409091015290565b5f602082840312156141f6575f5ffd5b8151612b8981613e0d565b5f60208284031215614211575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561358557613585614218565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215614263575f5ffd5b815167ffffffffffffffff811115614279575f5ffd5b8201601f81018413614289575f5ffd5b80516142976140e58261407e565b80828252602082019150602060a084028501019250868311156142b8575f5ffd5b6020840193505b8284101561350a5760a084880312156142d6575f5ffd5b6142de613ef0565b84516142e981613e0d565b81526020858101519082015260408086015190820152606085015161430d81613e0d565b606082015260808581015190820152825260a0909301926020909101906142bf565b808202811582820484141761358557613585614218565b634e487b7160e01b5f52601260045260245ffd5b5f8261437457634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561358557613585614218565b5f6020828403121561439c575f5ffd5b815162ffffff81168114612b89575f5ffd5b602081525f825160a0602084015280518060c0850152806020830160e086015e5f60e0828601015260018060a01b0360208601511660408501526040850151606085015260608501516080850152608085015160a085015260e0601f19601f830116850101925050509291505056fea26469706673582212203e8ecbc53df6f20b846d3346650c0131a84c6f382240c38a553c137de8e261e964736f6c634300081c00330000000000000000000000005baf7ffaf04c7afe1d22da65baf534f1a545833f000000000000000000000000254d69ead3c20940f4005b8c164c210a6d7db7c4