0 txs
3.6k calls
constructor
constructor()
functions
addresses
viewfunction addresses(bytes32) view returns (address)
core
viewfunction core() view returns (address)
enabledRouters
viewfunction enabledRouters(address) view returns (bool)
getAddress
viewfunction getAddress(string _name) view returns (address)
paused
viewfunction paused() view returns (bool)
zapFee
viewfunction zapFee() view returns (uint256)
cancelUnwinding
nonpayablefunction cancelUnwinding(uint256 _unwindingTimestamp, uint32 _newUnwindingEpochs)
claimRedemption
nonpayablefunction claimRedemption()
createPosition
nonpayablefunction createPosition(uint256 _amount, uint32 _unwindingEpochs, address _recipient)
emergencyAction
payablefunction emergencyAction(tuple[] calls) payable returns (bytes[] returnData)
increaseUnwindingEpochs
nonpayablefunction increaseUnwindingEpochs(uint32 _oldUnwindingEpochs, uint32 _newUnwindingEpochs, uint256 _shares)
init
nonpayablefunction init(address _core)
mint
nonpayablefunction mint(address _to, uint256 _amount) returns (uint256)
mintAndLock
nonpayablefunction mintAndLock(address _to, uint256 _amount, uint32 _unwindingEpochs) returns (uint256)
mintAndStake
nonpayablefunction mintAndStake(address _to, uint256 _amount) returns (uint256)
multiVote
nonpayablefunction multiVote(address[] _assets, uint32[] _unwindingEpochs, tuple[][] _liquidVotes, tuple[][] _illiquidVotes)
pause
nonpayablefunction pause()
redeem
nonpayablefunction redeem(address _to, uint256 _amount, uint256 _minAssetsOut) returns (uint256)
setAddress
nonpayablefunction setAddress(string _name, address _address)
setCore
nonpayablefunction setCore(address newCore)
setEnabledRouter
nonpayablefunction setEnabledRouter(address _router, bool _enabled)
setZapFee
nonpayablefunction setZapFee(uint256 _zapFee)
stake
nonpayablefunction stake(address _to, uint256 _receiptTokens) returns (uint256)
startUnwinding
nonpayablefunction startUnwinding(uint256 _shares, uint32 _unwindingEpochs)
unpause
nonpayablefunction unpause()
unstake
nonpayablefunction unstake(address _to, uint256 _stakedTokens) returns (uint256)
unstakeAndLock
nonpayablefunction unstakeAndLock(address _to, uint256 _amount, uint32 _unwindingEpochs) returns (uint256)
vote
nonpayablefunction vote(address _asset, uint32 _unwindingEpochs, tuple[] _liquidVotes, tuple[] _illiquidVotes)
withdraw
nonpayablefunction withdraw(uint256 _unwindingTimestamp)
zapIn
payablefunction zapIn(address _token, uint256 _amount, address _router, bytes _routerData, address _to) payable returns (uint256)
zapInAndLock
payablefunction zapInAndLock(address _token, uint256 _amount, address _router, bytes _routerData, uint32 _unwindingEpochs, address _to) payable returns (uint256)
zapInAndStake
payablefunction zapInAndStake(address _token, uint256 _amount, address _router, bytes _routerData, address _to) payable returns (uint256)
events
AddressSet
event AddressSet(uint256 timestamp, string indexed name, address _address)
CoreUpdate
event CoreUpdate(address indexed oldCore, address indexed newCore)
Paused
event Paused(address account)
SetEnabledRouter
event SetEnabledRouter(uint256 timestamp, address router, bool enabled)
Unpaused
event Unpaused(address account)
ZapFeeSet
event ZapFeeSet(uint256 timestamp, uint256 zapFee)
ZapIn
event ZapIn(uint256 timestamp, address indexed user, address indexed token, uint256 amount, uint256 receiptTokens)
errors
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
InvalidZapFee
error InvalidZapFee()
InvalidZapRouter
error InvalidZapRouter()
MinAssetsOutError
error MinAssetsOutError(uint256 min, uint256 actual)
PendingLossesUnapplied
error PendingLossesUnapplied()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
SwapFailed
error SwapFailed()
UnderlyingCallReverted
error UnderlyingCallReverted(bytes returnData)
creation bytecode
0x6080604052348015600e575f5ffd5b505f8054610100600160a81b03191661010017905561421b806100305f395ff3fe6080604052600436106101db575f3560e01c806380009630116100fd578063c00716ea11610092578063d591509611610062578063d591509614610549578063d95ce53b14610568578063ed4254ec14610587578063f2f4eb26146105a6575f5ffd5b8063c00716ea146104be578063c1d9fe3e146104dd578063c23544ad146104fc578063c2a672e01461052a575f5ffd5b8063a5a85b8d116100cd578063a5a85b8d1461044c578063adc9772e1461046b578063bf0673d21461048a578063bf40fac11461049f575f5ffd5b806380009630146103e65780638456cb59146104055780639b2ea4bd14610419578063a16ba4e014610438575f5ffd5b806340c10f1911610173578063699f200f11610143578063699f200f146103485780637b4aedcf146103945780637b96eef1146103a75780637df3927e146103c6575f5ffd5b806340c10f19146102d55780634a6bdbbe146102f45780634ec78381146103075780635c975abb14610326575f5ffd5b80632b83cccd116101ae5780632b83cccd146102705780632e1a7d4d1461028f578063365f1c00146102ae5780633f4ba83a146102c1575f5ffd5b806319ab453c146101df5780631a11dc4c14610200578063230ae89c1461021f57806326cf833814610251575b5f5ffd5b3480156101ea575f5ffd5b506101fe6101f93660046138a3565b6105c7565b005b34801561020b575f5ffd5b506101fe61021a3660046138d6565b6105f0565b34801561022a575f5ffd5b5061023e610239366004613900565b6106a7565b6040519081526020015b60405180910390f35b34801561025c575f5ffd5b5061023e61026b36600461392a565b610a88565b34801561027b575f5ffd5b5061023e61028a366004613965565b610d43565b34801561029a575f5ffd5b506101fe6102a9366004613997565b610f5c565b61023e6102bc3660046139f3565b61100b565b3480156102cc575f5ffd5b506101fe61127f565b3480156102e0575f5ffd5b5061023e6102ef366004613900565b611357565b61023e610302366004613a73565b6114c4565b348015610312575f5ffd5b506101fe610321366004613b46565b611611565b348015610331575f5ffd5b505f5460ff165b6040519015158152602001610248565b348015610353575f5ffd5b5061037c610362366004613997565b60016020525f90815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610248565b61023e6103a23660046139f3565b611774565b3480156103b2575f5ffd5b506101fe6103c1366004613c21565b611818565b6103d96103d4366004613c58565b611957565b6040516102489190613cc5565b3480156103f1575f5ffd5b506101fe6104003660046138a3565b611bd9565b348015610410575f5ffd5b506101fe611cb2565b348015610424575f5ffd5b506101fe610433366004613dc7565b611d8a565b348015610443575f5ffd5b506101fe611f10565b348015610457575f5ffd5b506101fe610466366004613997565b611fb1565b348015610476575f5ffd5b5061023e610485366004613900565b6120eb565b348015610495575f5ffd5b5061023e60035481565b3480156104aa575f5ffd5b5061037c6104b9366004613e0b565b6123ec565b3480156104c9575f5ffd5b506101fe6104d83660046138d6565b612435565b3480156104e8575f5ffd5b506101fe6104f7366004613e86565b612643565b348015610507575f5ffd5b506103386105163660046138a3565b60026020525f908152604090205460ff1681565b348015610535575f5ffd5b5061023e610544366004613900565b6126f8565b348015610554575f5ffd5b506101fe610563366004613f18565b61295d565b348015610573575f5ffd5b5061023e61058236600461392a565b612b79565b348015610592575f5ffd5b506101fe6105a1366004613f52565b612e6a565b3480156105b1575f5ffd5b505f5461010090046001600160a01b031661037c565b5f5461010090046001600160a01b0316156105e4576105e4613f8f565b6105ed81613007565b50565b6105f861306c565b61060061308f565b610632604051806040016040528060118152602001703637b1b5b4b733a1b7b73a3937b63632b960791b8152506123ec565b6040516304b92b4d60e31b81523360048201526024810184905263ffffffff831660448201526001600160a01b0391909116906325c95a68906064015f604051808303815f87803b158015610685575f5ffd5b505af1158015610697573d5f5f3e3d5ffd5b505050506106a36130fc565b5050565b5f6106b061306c565b6106b861308f565b5f6106e86040518060400160405280600e81526020016d36b4b73a21b7b73a3937b63632b960911b8152506123ec565b90505f6107176040518060400160405280600b81526020016a39ba30b5b2b22a37b5b2b760a91b8152506123ec565b90505f6107476040518060400160405280600c81526020016b3932b1b2b4b83a2a37b5b2b760a11b8152506123ec565b90505f61076f604051806040016040528060048152602001635553444360e01b8152506123ec565b90505f61079f6040518060400160405280600c81526020016b7969656c6453686172696e6760a01b8152506123ec565b90506107b66001600160a01b03831633308a613126565b60405163095ea7b360e01b81526001600160a01b0386811660048301526024820189905283169063095ea7b3906044016020604051808303815f875af1158015610802573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108269190613fa3565b506040516340c10f1960e01b8152306004820152602481018890525f906001600160a01b038716906340c10f19906044016020604051808303815f875af1158015610873573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108979190613fbe565b9050816001600160a01b0316631d6e11f26040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156108d1575f5ffd5b505af11580156108e3573d5f5f3e3d5ffd5b5050604051630341728760e01b8152600160048201526001600160a01b0385169250630341728791506024015f604051808303815f87803b158015610926575f5ffd5b505af1158015610938573d5f5f3e3d5ffd5b505060405163095ea7b360e01b81526001600160a01b038881166004830152602482018590528716925063095ea7b391506044016020604051808303815f875af1158015610988573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ac9190613fa3565b50604051636e553f6560e01b8152600481018290526001600160a01b038a81166024830152861690636e553f65906044016020604051808303815f875af11580156109f9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a1d9190613fbe565b50604051630341728760e01b81525f60048201526001600160a01b038316906303417287906024015f604051808303815f87803b158015610a5c575f5ffd5b505af1158015610a6e573d5f5f3e3d5ffd5b509298505050505050505050610a826130fc565b92915050565b5f610a9161306c565b610a9961308f565b5f610ac96040518060400160405280600e81526020016d36b4b73a21b7b73a3937b63632b960911b8152506123ec565b90505f610af96040518060400160405280600c81526020016b3932b1b2b4b83a2a37b5b2b760a11b8152506123ec565b90505f610b2e604051806040016040528060118152602001703637b1b5b4b733a1b7b73a3937b63632b960791b8152506123ec565b90505f610b56604051806040016040528060048152602001635553444360e01b8152506123ec565b9050610b6d6001600160a01b03821633308a613126565b60405163095ea7b360e01b81526001600160a01b0385811660048301526024820189905282169063095ea7b3906044016020604051808303815f875af1158015610bb9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bdd9190613fa3565b506040516340c10f1960e01b8152306004820152602481018890525f906001600160a01b038616906340c10f19906044016020604051808303815f875af1158015610c2a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4e9190613fbe565b60405163095ea7b360e01b81526001600160a01b038581166004830152602482018390529192509085169063095ea7b3906044015b6020604051808303815f875af1158015610c9f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc39190613fa3565b50604051633b50953b60e21b81526004810182905263ffffffff881660248201526001600160a01b038a8116604483015284169063ed4254ec906064015f604051808303815f87803b158015610d17575f5ffd5b505af1158015610d29573d5f5f3e3d5ffd5b5092975050505050505050610d3c6130fc565b9392505050565b5f610d4c61306c565b610d5461308f565b610d5c613193565b5f610d8a6040518060400160405280600c81526020016b3932b1b2b4b83a2a37b5b2b760a11b8152506123ec565b90505f610dbe6040518060400160405280601081526020016f3932b232b2b6a1b7b73a3937b63632b960811b8152506123ec565b6040516323b872dd60e01b8152336004820152306024820152604481018790529091506001600160a01b038316906323b872dd906064016020604051808303815f875af1158015610e11573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e359190613fa3565b5060405163095ea7b360e01b81526001600160a01b0382811660048301526024820187905283169063095ea7b3906044016020604051808303815f875af1158015610e82573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea69190613fa3565b506040516301e9a69560e41b81526001600160a01b038781166004830152602482018790525f9190831690631e9a6950906044016020604051808303815f875af1158015610ef6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f1a9190613fbe565b9050848181811015610f4d576040516316b4038160e21b8152600481019290925260248201526044015b60405180910390fd5b50909350505050610d3c6130fc565b610f6461306c565b610f6c61308f565b610f74613193565b610fa6604051806040016040528060118152602001703637b1b5b4b733a1b7b73a3937b63632b960791b8152506123ec565b60405163f3fef3a360e01b8152336004820152602481018390526001600160a01b03919091169063f3fef3a3906044015f604051808303815f87803b158015610fed575f5ffd5b505af1158015610fff573d5f5f3e3d5ffd5b505050506105ed6130fc565b5f61101461306c565b61101c61308f565b5f5f61102b8989898989613243565b915091505f61105c6040518060400160405280600b81526020016a39ba30b5b2b22a37b5b2b760a91b8152506123ec565b90505f61108c6040518060400160405280600c81526020016b7969656c6453686172696e6760a01b8152506123ec565b9050806001600160a01b0316631d6e11f26040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156110c6575f5ffd5b505af11580156110d8573d5f5f3e3d5ffd5b5050604051630341728760e01b8152600160048201526001600160a01b0384169250630341728791506024015f604051808303815f87803b15801561111b575f5ffd5b505af115801561112d573d5f5f3e3d5ffd5b505060405163095ea7b360e01b81526001600160a01b038581166004830152602482018890528616925063095ea7b391506044016020604051808303815f875af115801561117d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111a19190613fa3565b50604051636e553f6560e01b8152600481018590526001600160a01b038781166024830152831690636e553f65906044016020604051808303815f875af11580156111ee573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112129190613fbe565b50604051630341728760e01b81525f60048201526001600160a01b038216906303417287906024015f604051808303815f87803b158015611251575f5ffd5b505af1158015611263573d5f5f3e3d5ffd5b509596505050505050506112756130fc565b9695505050505050565b5f54604051632474521560e21b81527fe7276a2a84d8de556657ec9cf93a55a7d66f096e529d0582ed08e9e2208b92b5600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa1580156112f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113149190613fa3565b61134f5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610f44565b6105ed61366a565b5f61136061306c565b61136861308f565b5f61138e604051806040016040528060048152602001635553444360e01b8152506123ec565b90505f6113c06040518060400160405280600e81526020016d36b4b73a21b7b73a3937b63632b960911b8152506123ec565b90506113d76001600160a01b038316333087613126565b60405163095ea7b360e01b81526001600160a01b0382811660048301526024820186905283169063095ea7b3906044016020604051808303815f875af1158015611423573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114479190613fa3565b506040516340c10f1960e01b81526001600160a01b038681166004830152602482018690528216906340c10f19906044016020604051808303815f875af1158015611494573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114b89190613fbe565b92505050610a826130fc565b5f6114cd61306c565b6114d561308f565b5f5f6114e48a8a8a8a8a613243565b915091505f61151b604051806040016040528060118152602001703637b1b5b4b733a1b7b73a3937b63632b960791b8152506123ec565b60405163095ea7b360e01b81526001600160a01b038083166004830152602482018690529192509083169063095ea7b3906044016020604051808303815f875af115801561156b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061158f9190613fa3565b50604051633b50953b60e21b81526004810184905263ffffffff871660248201526001600160a01b03868116604483015282169063ed4254ec906064015f604051808303815f87803b1580156115e3575f5ffd5b505af11580156115f5573d5f5f3e3d5ffd5b5094955050505050506116066130fc565b979650505050505050565b61161961306c565b61162161308f565b5f6116536040518060400160405280601081526020016f616c6c6f636174696f6e566f74696e6760801b8152506123ec565b90505f5b8881101561176057816001600160a01b0316632610409b338c8c8581811061168157611681613fd5565b905060200201602081019061169691906138a3565b8b8b868181106116a8576116a8613fd5565b90506020020160208101906116bd9190613fe9565b8a8a878181106116cf576116cf613fd5565b90506020028101906116e19190614002565b8a8a898181106116f3576116f3613fd5565b90506020028101906117059190614002565b6040518863ffffffff1660e01b815260040161172797969594939291906140b5565b5f604051808303815f87803b15801561173e575f5ffd5b505af1158015611750573d5f5f3e3d5ffd5b5050600190920191506116579050565b505061176a6130fc565b5050505050505050565b5f61177d61306c565b61178561308f565b5f5f6117948989898989613243565b60405163a9059cbb60e01b81526001600160a01b038781166004830152602482018490529294509092509082169063a9059cbb906044016020604051808303815f875af11580156117e7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061180b9190613fa3565b50909150506112756130fc565b5f54604051632474521560e21b81527f3947e2f542c6c46c543fa4f79cbd1e27fea37ed249bc3caf992570d19123642e600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015611889573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118ad9190613fa3565b6118e85760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610f44565b6001600160a01b0383165f81815260026020908152604091829020805460ff1916861515908117909155825142815291820193909352908101919091527faf11e799c0dfe70b6ee7eeeb1e99889edf753033f557a3a5568838bdc770a08b9060600160405180910390a1505050565b5f54604051632474521560e21b81527f1a6838efa4183e08fe3607359d1259272af9d4716f65e1a7b5921f78fd5a3c6a6004820181905233602483015260609290916101009091046001600160a01b0316906391d1485490604401602060405180830381865afa1580156119cd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119f19190613fa3565b611a2c5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610f44565b8267ffffffffffffffff811115611a4557611a45613d28565b604051908082528060200260200182016040528015611a7857816020015b6060815260200190600190039081611a635790505b5091505f5b83811015611bd1575f858583818110611a9857611a98613fd5565b9050602002810190611aaa9190614113565b611ab89060208101906138a3565b90505f868684818110611acd57611acd613fd5565b9050602002810190611adf9190614113565b602001359050365f888886818110611af957611af9613fd5565b9050602002810190611b0b9190614113565b611b19906040810190614131565b915091505f5f856001600160a01b0316858585604051611b3a929190614174565b5f6040518083038185875af1925050503d805f8114611b74576040519150601f19603f3d011682016040523d82523d5f602084013e611b79565b606091505b5091509150818190611b9f57604051634ad176bb60e01b8152600401610f449190614183565b5080898881518110611bb357611bb3613fd5565b60200260200101819052505050505050508080600101915050611a7d565b505092915050565b5f54604051632474521560e21b81527f1a6838efa4183e08fe3607359d1259272af9d4716f65e1a7b5921f78fd5a3c6a600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015611c4a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c6e9190613fa3565b611ca95760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610f44565b6106a382613007565b5f54604051632474521560e21b81527ffcb9fcbfa83b897fb2d5cf4b58962164105c1e71489a37ef3ae0db3fdce576f6600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015611d23573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d479190613fa3565b611d825760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610f44565b6105ed6136bb565b5f54604051632474521560e21b81527f1a6838efa4183e08fe3607359d1259272af9d4716f65e1a7b5921f78fd5a3c6a600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015611dfb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e1f9190613fa3565b611e5a5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610f44565b8160015f85604051602001611e6f9190614183565b6040516020818303038152906040528051906020012081526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555082604051611ec39190614195565b604080519182900382204283526001600160a01b0385166020840152917f34765092fb4826a2f48dae7ee370790341f5fe0147f013fca4108e6ea65a68ed910160405180910390a2505050565b611f1861306c565b611f2061308f565b611f516040518060400160405280601081526020016f3932b232b2b6a1b7b73a3937b63632b960811b8152506123ec565b60405163c0598b0d60e01b81523360048201526001600160a01b03919091169063c0598b0d906024015f604051808303815f87803b158015611f91575f5ffd5b505af1158015611fa3573d5f5f3e3d5ffd5b50505050611faf6130fc565b565b5f54604051632474521560e21b81527f3947e2f542c6c46c543fa4f79cbd1e27fea37ed249bc3caf992570d19123642e600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015612022573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120469190613fa3565b6120815760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610f44565b662386f26fc100008211156120a957604051636b3ff80760e01b815260040160405180910390fd5b600382905560408051428152602081018490527f675607ea61b02df8e5abbbe4772c0b60bb371fa80782206f2efa1b31e37311eb910160405180910390a15050565b5f6120f461306c565b6120fc61308f565b5f6121296040518060400160405280600b81526020016a39ba30b5b2b22a37b5b2b760a91b8152506123ec565b90505f6121596040518060400160405280600c81526020016b3932b1b2b4b83a2a37b5b2b760a11b8152506123ec565b90505f6121896040518060400160405280600c81526020016b7969656c6453686172696e6760a01b8152506123ec565b6040516323b872dd60e01b8152336004820152306024820152604481018790529091506001600160a01b038316906323b872dd906064016020604051808303815f875af11580156121dc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122009190613fa3565b5060405163095ea7b360e01b81526001600160a01b0384811660048301526024820187905283169063095ea7b3906044016020604051808303815f875af115801561224d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122719190613fa3565b50806001600160a01b0316631d6e11f26040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156122aa575f5ffd5b505af11580156122bc573d5f5f3e3d5ffd5b5050604051630341728760e01b8152600160048201526001600160a01b0384169250630341728791506024015f604051808303815f87803b1580156122ff575f5ffd5b505af1158015612311573d5f5f3e3d5ffd5b5050604051636e553f6560e01b8152600481018890526001600160a01b0389811660248301525f935086169150636e553f65906044016020604051808303815f875af1158015612363573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123879190613fbe565b604051630341728760e01b81525f60048201529091506001600160a01b038316906303417287906024015f604051808303815f87803b1580156123c8575f5ffd5b505af11580156123da573d5f5f3e3d5ffd5b50929650505050505050610a826130fc565b5f60015f836040516020016124019190614183565b60408051601f198184030181529181528151602092830120835290820192909252015f20546001600160a01b031692915050565b61243d61306c565b61244561308f565b5f612478604051806040016040528060118152602001703637b1b5b4b733a1b7b73a3937b63632b960791b8152506123ec565b60405163e7dda2eb60e01b815263ffffffff841660048201529091505f906001600160a01b0383169063e7dda2eb90602401602060405180830381865afa1580156124c5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124e991906141ab565b6040516323b872dd60e01b8152336004820152306024820152604481018690529091506001600160a01b038216906323b872dd906064016020604051808303815f875af115801561253c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125609190613fa3565b5060405163095ea7b360e01b81526001600160a01b0383811660048301526024820186905282169063095ea7b3906044016020604051808303815f875af11580156125ad573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125d19190613fa3565b50604051637f866a0d60e01b81526004810185905263ffffffff841660248201523360448201526001600160a01b03831690637f866a0d906064015f604051808303815f87803b158015612623575f5ffd5b505af1158015612635573d5f5f3e3d5ffd5b5050505050506106a36130fc565b61264b61306c565b61265361308f565b6126846040518060400160405280601081526020016f616c6c6f636174696f6e566f74696e6760801b8152506123ec565b6001600160a01b0316632610409b338888888888886040518863ffffffff1660e01b81526004016126bb97969594939291906140b5565b5f604051808303815f87803b1580156126d2575f5ffd5b505af11580156126e4573d5f5f3e3d5ffd5b505050506126f06130fc565b505050505050565b5f61270161306c565b61270961308f565b5f6127366040518060400160405280600b81526020016a39ba30b5b2b22a37b5b2b760a91b8152506123ec565b90505f6127666040518060400160405280600c81526020016b7969656c6453686172696e6760a01b8152506123ec565b6040516323b872dd60e01b8152336004820152306024820152604481018690529091506001600160a01b038316906323b872dd906064016020604051808303815f875af11580156127b9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127dd9190613fa3565b50806001600160a01b0316631d6e11f26040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612816575f5ffd5b505af1158015612828573d5f5f3e3d5ffd5b5050604051630341728760e01b8152600160048201526001600160a01b0384169250630341728791506024015f604051808303815f87803b15801561286b575f5ffd5b505af115801561287d573d5f5f3e3d5ffd5b5050604051635d043b2960e11b8152600481018790526001600160a01b0388811660248301523060448301525f93508516915063ba087652906064016020604051808303815f875af11580156128d5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128f99190613fbe565b604051630341728760e01b81525f60048201529091506001600160a01b038316906303417287906024015f604051808303815f87803b15801561293a575f5ffd5b505af115801561294c573d5f5f3e3d5ffd5b509295505050505050610a826130fc565b61296561306c565b61296d61308f565b5f6129a0604051806040016040528060118152602001703637b1b5b4b733a1b7b73a3937b63632b960791b8152506123ec565b60405163e7dda2eb60e01b815263ffffffff861660048201529091505f906001600160a01b0383169063e7dda2eb90602401602060405180830381865afa1580156129ed573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a1191906141ab565b6040516323b872dd60e01b8152336004820152306024820152604481018590529091506001600160a01b038216906323b872dd906064016020604051808303815f875af1158015612a64573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a889190613fa3565b5060405163095ea7b360e01b81526001600160a01b0383811660048301526024820185905282169063095ea7b3906044016020604051808303815f875af1158015612ad5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612af99190613fa3565b5060405163c4acfb8f60e01b81526004810184905263ffffffff8087166024830152851660448201523360648201526001600160a01b0383169063c4acfb8f906084015b5f604051808303815f87803b158015612b54575f5ffd5b505af1158015612b66573d5f5f3e3d5ffd5b505050505050612b746130fc565b505050565b5f612b8261306c565b612b8a61308f565b5f612bb86040518060400160405280600c81526020016b3932b1b2b4b83a2a37b5b2b760a11b8152506123ec565b90505f612be76040518060400160405280600b81526020016a39ba30b5b2b22a37b5b2b760a91b8152506123ec565b90505f612c1c604051806040016040528060118152602001703637b1b5b4b733a1b7b73a3937b63632b960791b8152506123ec565b90505f612c4c6040518060400160405280600c81526020016b7969656c6453686172696e6760a01b8152506123ec565b6040516323b872dd60e01b8152336004820152306024820152604481018990529091506001600160a01b038416906323b872dd906064016020604051808303815f875af1158015612c9f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cc39190613fa3565b50806001600160a01b0316631d6e11f26040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612cfc575f5ffd5b505af1158015612d0e573d5f5f3e3d5ffd5b5050604051630341728760e01b8152600160048201526001600160a01b0384169250630341728791506024015f604051808303815f87803b158015612d51575f5ffd5b505af1158015612d63573d5f5f3e3d5ffd5b5050604051635d043b2960e11b8152600481018a9052306024820181905260448201525f92506001600160a01b038616915063ba087652906064016020604051808303815f875af1158015612dba573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dde9190613fbe565b604051630341728760e01b81525f60048201529091506001600160a01b038316906303417287906024015f604051808303815f87803b158015612e1f575f5ffd5b505af1158015612e31573d5f5f3e3d5ffd5b505060405163095ea7b360e01b81526001600160a01b038681166004830152602482018590528816925063095ea7b39150604401610c83565b612e7261306c565b612e7a61308f565b5f612ea86040518060400160405280600c81526020016b3932b1b2b4b83a2a37b5b2b760a11b8152506123ec565b90505f612edd604051806040016040528060118152602001703637b1b5b4b733a1b7b73a3937b63632b960791b8152506123ec565b6040516323b872dd60e01b8152336004820152306024820152604481018790529091506001600160a01b038316906323b872dd906064016020604051808303815f875af1158015612f30573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f549190613fa3565b5060405163095ea7b360e01b81526001600160a01b0382811660048301526024820187905283169063095ea7b3906044016020604051808303815f875af1158015612fa1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fc59190613fa3565b50604051633b50953b60e21b81526004810186905263ffffffff851660248201526001600160a01b03848116604483015282169063ed4254ec90606401612b3d565b5f80546001600160a01b0383811661010081810274ffffffffffffffffffffffffffffffffffffffff0019851617855560405193049190911692909183917f9209b7c8c06dcfd261686a663e7c55989337b18d59da5433c6f2835fb697092091a35050565b5f5460ff1615611faf5760405163d93c066560e01b815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c156130cf57604051633ee5aeb560e01b815260040160405180910390fd5b611faf60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b906136f7565b611faf5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f006130f6565b6040516001600160a01b03848116602483015283811660448301526064820183905261318d9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506136fe565b50505050565b5f6131c16040518060400160405280600c81526020016b7969656c6453686172696e6760a01b8152506123ec565b90505f816001600160a01b031663f843336c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613200573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132249190613fbe565b12156105ed57604051630e4a65c960e21b815260040160405180910390fd5b6001600160a01b0383165f90815260026020526040812054819060ff1661327d57604051631f3eeae760e01b815260040160405180910390fd5b6001600160a01b03871673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146132ca576132b66001600160a01b038816333089613126565b6132ca6001600160a01b038816868861376a565b5f856001600160a01b03163486866040516132e6929190614174565b5f6040518083038185875af1925050503d805f8114613320576040519150601f19603f3d011682016040523d82523d5f602084013e613325565b606091505b50509050806133475760405163081ceff360e41b815260040160405180910390fd5b5f6133776040518060400160405280600e81526020016d36b4b73a21b7b73a3937b63632b960911b8152506123ec565b90505f61339f604051806040016040528060048152602001635553444360e01b8152506123ec565b90505f6133cf6040518060400160405280600c81526020016b3932b1b2b4b83a2a37b5b2b760a11b8152506123ec565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038416906370a0823190602401602060405180830381865afa158015613416573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061343a9190613fbe565b60405163095ea7b360e01b81526001600160a01b038681166004830152602482018390529192509084169063095ea7b3906044016020604051808303815f875af115801561348a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134ae9190613fa3565b506040516340c10f1960e01b8152306004820152602481018290525f906001600160a01b038616906340c10f19906044016020604051808303815f875af11580156134fb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061351f9190613fbe565b6003549091508015613609575f61353683836137f9565b905061354281846141c6565b9250846001600160a01b031663a9059cbb6135806040518060400160405280600c81526020016b7969656c6453686172696e6760a01b8152506123ec565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af11580156135e2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136069190613fa3565b50505b5060408051428152602081018e90529081018290526001600160a01b038e169033907f864d8445691e89cf27c9d9cc6155ad638a9833f28365127ad89aa779a6d3cf839060600160405180910390a39c919b50909950505050505050505050565b61367261380d565b5f805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6136c361306c565b5f805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861369e3390565b80825d5050565b5f5f60205f8451602086015f885af18061371d576040513d5f823e3d81fd5b50505f513d91508115613734578060011415613741565b6001600160a01b0384163b155b1561318d57604051635274afe760e01b81526001600160a01b0385166004820152602401610f44565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526137bb848261382f565b61318d576040516001600160a01b0384811660248301525f60448301526137ef91869182169063095ea7b39060640161315b565b61318d84826136fe565b5f610d3c8383670de0b6b3a7640000613874565b5f5460ff16611faf57604051638dfc202b60e01b815260040160405180910390fd5b5f5f5f5f60205f8651602088015f8a5af192503d91505f519050828015611275575081156138605780600114611275565b50505050506001600160a01b03163b151590565b5f825f190484118302158202613888575f5ffd5b5091020490565b6001600160a01b03811681146105ed575f5ffd5b5f602082840312156138b3575f5ffd5b8135610d3c8161388f565b803563ffffffff811681146138d1575f5ffd5b919050565b5f5f604083850312156138e7575f5ffd5b823591506138f7602084016138be565b90509250929050565b5f5f60408385031215613911575f5ffd5b823561391c8161388f565b946020939093013593505050565b5f5f5f6060848603121561393c575f5ffd5b83356139478161388f565b92506020840135915061395c604085016138be565b90509250925092565b5f5f5f60608486031215613977575f5ffd5b83356139828161388f565b95602085013595506040909401359392505050565b5f602082840312156139a7575f5ffd5b5035919050565b5f5f83601f8401126139be575f5ffd5b50813567ffffffffffffffff8111156139d5575f5ffd5b6020830191508360208285010111156139ec575f5ffd5b9250929050565b5f5f5f5f5f5f60a08789031215613a08575f5ffd5b8635613a138161388f565b9550602087013594506040870135613a2a8161388f565b9350606087013567ffffffffffffffff811115613a45575f5ffd5b613a5189828a016139ae565b9094509250506080870135613a658161388f565b809150509295509295509295565b5f5f5f5f5f5f5f60c0888a031215613a89575f5ffd5b8735613a948161388f565b9650602088013595506040880135613aab8161388f565b9450606088013567ffffffffffffffff811115613ac6575f5ffd5b613ad28a828b016139ae565b9095509350613ae59050608089016138be565b915060a0880135613af58161388f565b8091505092959891949750929550565b5f5f83601f840112613b15575f5ffd5b50813567ffffffffffffffff811115613b2c575f5ffd5b6020830191508360208260051b85010111156139ec575f5ffd5b5f5f5f5f5f5f5f5f6080898b031215613b5d575f5ffd5b883567ffffffffffffffff811115613b73575f5ffd5b613b7f8b828c01613b05565b909950975050602089013567ffffffffffffffff811115613b9e575f5ffd5b613baa8b828c01613b05565b909750955050604089013567ffffffffffffffff811115613bc9575f5ffd5b613bd58b828c01613b05565b909550935050606089013567ffffffffffffffff811115613bf4575f5ffd5b613c008b828c01613b05565b999c989b5096995094979396929594505050565b80151581146105ed575f5ffd5b5f5f60408385031215613c32575f5ffd5b8235613c3d8161388f565b91506020830135613c4d81613c14565b809150509250929050565b5f5f60208385031215613c69575f5ffd5b823567ffffffffffffffff811115613c7f575f5ffd5b613c8b85828601613b05565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015613d1c57603f19878603018452613d07858351613c97565b94506020938401939190910190600101613ceb565b50929695505050505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112613d4b575f5ffd5b813567ffffffffffffffff811115613d6557613d65613d28565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715613d9457613d94613d28565b604052818152838201602001851015613dab575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215613dd8575f5ffd5b823567ffffffffffffffff811115613dee575f5ffd5b613dfa85828601613d3c565b9250506020830135613c4d8161388f565b5f60208284031215613e1b575f5ffd5b813567ffffffffffffffff811115613e31575f5ffd5b613e3d84828501613d3c565b949350505050565b5f5f83601f840112613e55575f5ffd5b50813567ffffffffffffffff811115613e6c575f5ffd5b6020830191508360208260061b85010111156139ec575f5ffd5b5f5f5f5f5f5f60808789031215613e9b575f5ffd5b8635613ea68161388f565b9550613eb4602088016138be565b9450604087013567ffffffffffffffff811115613ecf575f5ffd5b613edb89828a01613e45565b909550935050606087013567ffffffffffffffff811115613efa575f5ffd5b613f0689828a01613e45565b979a9699509497509295939492505050565b5f5f5f60608486031215613f2a575f5ffd5b613f33846138be565b9250613f41602085016138be565b929592945050506040919091013590565b5f5f5f60608486031215613f64575f5ffd5b83359250613f74602085016138be565b91506040840135613f848161388f565b809150509250925092565b634e487b7160e01b5f52600160045260245ffd5b5f60208284031215613fb3575f5ffd5b8151610d3c81613c14565b5f60208284031215613fce575f5ffd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613ff9575f5ffd5b610d3c826138be565b5f5f8335601e19843603018112614017575f5ffd5b83018035915067ffffffffffffffff821115614031575f5ffd5b6020019150600681901b36038213156139ec575f5ffd5b8183526020830192505f815f5b848110156140ab5781356140688161388f565b6001600160a01b0316865260208201356bffffffffffffffffffffffff8116808214614092575f5ffd5b6020880152506040958601959190910190600101614055565b5093949350505050565b6001600160a01b03881681526001600160a01b038716602082015263ffffffff8616604082015260a060608201525f6140f260a083018688614048565b8281036080840152614105818587614048565b9a9950505050505050505050565b5f8235605e19833603018112614127575f5ffd5b9190910192915050565b5f5f8335601e19843603018112614146575f5ffd5b83018035915067ffffffffffffffff821115614160575f5ffd5b6020019150368190038213156139ec575f5ffd5b818382375f9101908152919050565b602081525f610d3c6020830184613c97565b5f82518060208501845e5f920191825250919050565b5f602082840312156141bb575f5ffd5b8151610d3c8161388f565b81810381811115610a8257634e487b7160e01b5f52601160045260245ffdfea2646970667358221220e6c217982e4410daac7312416fd258c0a03a7f871490ec46978a636e1096818b64736f6c634300081c0033