0 txs
1k 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)
startUnwinding
nonpayablefunction startUnwinding(uint256 _shares, uint32 _unwindingEpochs)
unpause
nonpayablefunction unpause()
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
0x6080604052348015600e575f5ffd5b505f8054610100600160a81b031916610100179055613be3806100305f395ff3fe6080604052600436106101c5575f3560e01c80637df3927e116100f2578063bf40fac111610092578063d591509611610062578063d5915096146104f5578063d95ce53b14610514578063ed4254ec14610533578063f2f4eb2614610552575f5ffd5b8063bf40fac11461046a578063c00716ea14610489578063c1d9fe3e146104a8578063c23544ad146104c7575f5ffd5b80639b2ea4bd116100cd5780639b2ea4bd14610403578063a16ba4e014610422578063a5a85b8d14610436578063bf0673d214610455575f5ffd5b80637df3927e146103b057806380009630146103d05780638456cb59146103ef575f5ffd5b80633f4ba83a116101685780635c975abb116101385780635c975abb14610310578063699f200f146103325780637b4aedcf1461037e5780637b96eef114610391575f5ffd5b80633f4ba83a146102ab57806340c10f19146102bf5780634a6bdbbe146102de5780634ec78381146102f1575f5ffd5b806326cf8338116101a357806326cf83381461023b5780632b83cccd1461025a5780632e1a7d4d14610279578063365f1c0014610298575f5ffd5b806319ab453c146101c95780631a11dc4c146101ea578063230ae89c14610209575b5f5ffd5b3480156101d4575f5ffd5b506101e86101e336600461326b565b610573565b005b3480156101f5575f5ffd5b506101e861020436600461329e565b61059c565b348015610214575f5ffd5b506102286102233660046132c8565b61066c565b6040519081526020015b60405180910390f35b348015610246575f5ffd5b506102286102553660046132f2565b610926565b348015610265575f5ffd5b5061022861027436600461332d565b610be0565b348015610284575f5ffd5b506101e861029336600461335f565b610e38565b6102286102a63660046133bb565b610f00565b3480156102b6575f5ffd5b506101e861104e565b3480156102ca575f5ffd5b506102286102d93660046132c8565b611126565b6102286102ec36600461343b565b611293565b3480156102fc575f5ffd5b506101e861030b36600461350e565b6113e0565b34801561031b575f5ffd5b505f5460ff165b6040519015158152602001610232565b34801561033d575f5ffd5b5061036661034c36600461335f565b60016020525f90815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610232565b61022861038c3660046133bb565b611550565b34801561039c575f5ffd5b506101e86103ab3660046135e9565b61160d565b6103c36103be366004613620565b61174c565b604051610232919061368d565b3480156103db575f5ffd5b506101e86103ea36600461326b565b6119e7565b3480156103fa575f5ffd5b506101e8611ac0565b34801561040e575f5ffd5b506101e861041d36600461378f565b611b98565b34801561042d575f5ffd5b506101e8611d1e565b348015610441575f5ffd5b506101e861045036600461335f565b611de5565b348015610460575f5ffd5b5061022860035481565b348015610475575f5ffd5b506103666104843660046137d3565b611f38565b348015610494575f5ffd5b506101e86104a336600461329e565b611f81565b3480156104b3575f5ffd5b506101e86104c236600461384e565b6121a8565b3480156104d2575f5ffd5b506103226104e136600461326b565b60026020525f908152604090205460ff1681565b348015610500575f5ffd5b506101e861050f3660046138e0565b61226a565b34801561051f575f5ffd5b5061022861052e3660046132f2565b61249f565b34801561053e575f5ffd5b506101e861054d36600461391a565b612736565b34801561055d575f5ffd5b505f5461010090046001600160a01b0316610366565b5f5461010090046001600160a01b03161561059057610590613957565b610599816128d3565b50565b6105a4612942565b6105ac61297e565b6105de604051806040016040528060118152602001703637b1b5b4b733a1b7b73a3937b63632b960791b815250611f38565b6040517f25c95a680000000000000000000000000000000000000000000000000000000081523360048201526024810184905263ffffffff831660448201526001600160a01b0391909116906325c95a68906064015f604051808303815f87803b15801561064a575f5ffd5b505af115801561065c573d5f5f3e3d5ffd5b50505050610668612a04565b5050565b5f610675612942565b61067d61297e565b5f6106ad6040518060400160405280600e81526020016d36b4b73a21b7b73a3937b63632b960911b815250611f38565b90505f6106dc6040518060400160405280600b81526020016a39ba30b5b2b22a37b5b2b760a91b815250611f38565b90505f61070c6040518060400160405280600c81526020016b3932b1b2b4b83a2a37b5b2b760a11b815250611f38565b90505f610734604051806040016040528060048152602001635553444360e01b815250611f38565b905061074b6001600160a01b038216333089612a2e565b60405163095ea7b360e01b81526001600160a01b0385811660048301526024820188905282169063095ea7b3906044016020604051808303815f875af1158015610797573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bb919061396b565b506040516340c10f1960e01b8152306004820152602481018790525f906001600160a01b038616906340c10f19906044016020604051808303815f875af1158015610808573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061082c9190613986565b60405163095ea7b360e01b81526001600160a01b038681166004830152602482018390529192509084169063095ea7b3906044016020604051808303815f875af115801561087c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a0919061396b565b50604051636e553f6560e01b8152600481018290526001600160a01b038981166024830152851690636e553f65906044016020604051808303815f875af11580156108ed573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109119190613986565b50945050505050610920612a04565b92915050565b5f61092f612942565b61093761297e565b5f6109676040518060400160405280600e81526020016d36b4b73a21b7b73a3937b63632b960911b815250611f38565b90505f6109976040518060400160405280600c81526020016b3932b1b2b4b83a2a37b5b2b760a11b815250611f38565b90505f6109cc604051806040016040528060118152602001703637b1b5b4b733a1b7b73a3937b63632b960791b815250611f38565b90505f6109f4604051806040016040528060048152602001635553444360e01b815250611f38565b9050610a0b6001600160a01b03821633308a612a2e565b60405163095ea7b360e01b81526001600160a01b0385811660048301526024820189905282169063095ea7b3906044016020604051808303815f875af1158015610a57573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a7b919061396b565b506040516340c10f1960e01b8152306004820152602481018890525f906001600160a01b038616906340c10f19906044016020604051808303815f875af1158015610ac8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aec9190613986565b60405163095ea7b360e01b81526001600160a01b038581166004830152602482018390529192509085169063095ea7b3906044016020604051808303815f875af1158015610b3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b60919061396b565b50604051633b50953b60e21b81526004810182905263ffffffff881660248201526001600160a01b038a8116604483015284169063ed4254ec906064015f604051808303815f87803b158015610bb4575f5ffd5b505af1158015610bc6573d5f5f3e3d5ffd5b5092975050505050505050610bd9612a04565b9392505050565b5f610be9612942565b610bf161297e565b610bf9612ab0565b5f610c276040518060400160405280600c81526020016b3932b1b2b4b83a2a37b5b2b760a11b815250611f38565b90505f610c686040518060400160405280601081526020017f72656465656d436f6e74726f6c6c657200000000000000000000000000000000815250611f38565b6040516323b872dd60e01b8152336004820152306024820152604481018790529091506001600160a01b038316906323b872dd906064016020604051808303815f875af1158015610cbb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cdf919061396b565b5060405163095ea7b360e01b81526001600160a01b0382811660048301526024820187905283169063095ea7b3906044016020604051808303815f875af1158015610d2c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d50919061396b565b506040517f1e9a69500000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152602482018790525f9190831690631e9a6950906044016020604051808303815f875af1158015610db9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ddd9190613986565b9050848181811015610e29576040517f5ad00e04000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044015b60405180910390fd5b50909350505050610bd9612a04565b610e40612942565b610e4861297e565b610e50612ab0565b610e82604051806040016040528060118152602001703637b1b5b4b733a1b7b73a3937b63632b960791b815250611f38565b6040517ff3fef3a3000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b03919091169063f3fef3a3906044015f604051808303815f87803b158015610ee2575f5ffd5b505af1158015610ef4573d5f5f3e3d5ffd5b50505050610599612a04565b5f610f09612942565b610f1161297e565b5f5f610f208989898989612b79565b915091505f610f516040518060400160405280600b81526020016a39ba30b5b2b22a37b5b2b760a91b815250611f38565b60405163095ea7b360e01b81526001600160a01b038083166004830152602482018690529192509083169063095ea7b3906044016020604051808303815f875af1158015610fa1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc5919061396b565b50604051636e553f6560e01b8152600481018490526001600160a01b038681166024830152821690636e553f65906044016020604051808303815f875af1158015611012573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110369190613986565b509192505050611044612a04565b9695505050505050565b5f54604051632474521560e21b81527fe7276a2a84d8de556657ec9cf93a55a7d66f096e529d0582ed08e9e2208b92b5600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa1580156110bf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e3919061396b565b61111e5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610e20565b610599612feb565b5f61112f612942565b61113761297e565b5f61115d604051806040016040528060048152602001635553444360e01b815250611f38565b90505f61118f6040518060400160405280600e81526020016d36b4b73a21b7b73a3937b63632b960911b815250611f38565b90506111a66001600160a01b038316333087612a2e565b60405163095ea7b360e01b81526001600160a01b0382811660048301526024820186905283169063095ea7b3906044016020604051808303815f875af11580156111f2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611216919061396b565b506040516340c10f1960e01b81526001600160a01b038681166004830152602482018690528216906340c10f19906044016020604051808303815f875af1158015611263573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112879190613986565b92505050610920612a04565b5f61129c612942565b6112a461297e565b5f5f6112b38a8a8a8a8a612b79565b915091505f6112ea604051806040016040528060118152602001703637b1b5b4b733a1b7b73a3937b63632b960791b815250611f38565b60405163095ea7b360e01b81526001600160a01b038083166004830152602482018690529192509083169063095ea7b3906044016020604051808303815f875af115801561133a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061135e919061396b565b50604051633b50953b60e21b81526004810184905263ffffffff871660248201526001600160a01b03868116604483015282169063ed4254ec906064015f604051808303815f87803b1580156113b2575f5ffd5b505af11580156113c4573d5f5f3e3d5ffd5b5094955050505050506113d5612a04565b979650505050505050565b6113e8612942565b6113f061297e565b5f61142f6040518060400160405280601081526020017f616c6c6f636174696f6e566f74696e6700000000000000000000000000000000815250611f38565b90505f5b8881101561153c57816001600160a01b0316632610409b338c8c8581811061145d5761145d61399d565b9050602002016020810190611472919061326b565b8b8b868181106114845761148461399d565b905060200201602081019061149991906139b1565b8a8a878181106114ab576114ab61399d565b90506020028101906114bd91906139ca565b8a8a898181106114cf576114cf61399d565b90506020028101906114e191906139ca565b6040518863ffffffff1660e01b81526004016115039796959493929190613a7d565b5f604051808303815f87803b15801561151a575f5ffd5b505af115801561152c573d5f5f3e3d5ffd5b5050600190920191506114339050565b5050611546612a04565b5050505050505050565b5f611559612942565b61156161297e565b5f5f6115708989898989612b79565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152602482018490529294509092509082169063a9059cbb906044016020604051808303815f875af11580156115dc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611600919061396b565b5090915050611044612a04565b5f54604051632474521560e21b81527f3947e2f542c6c46c543fa4f79cbd1e27fea37ed249bc3caf992570d19123642e600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa15801561167e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116a2919061396b565b6116dd5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610e20565b6001600160a01b0383165f81815260026020908152604091829020805460ff1916861515908117909155825142815291820193909352908101919091527faf11e799c0dfe70b6ee7eeeb1e99889edf753033f557a3a5568838bdc770a08b9060600160405180910390a1505050565b5f54604051632474521560e21b81527f1a6838efa4183e08fe3607359d1259272af9d4716f65e1a7b5921f78fd5a3c6a6004820181905233602483015260609290916101009091046001600160a01b0316906391d1485490604401602060405180830381865afa1580156117c2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117e6919061396b565b6118215760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610e20565b8267ffffffffffffffff81111561183a5761183a6136f0565b60405190808252806020026020018201604052801561186d57816020015b60608152602001906001900390816118585790505b5091505f5b838110156119df575f85858381811061188d5761188d61399d565b905060200281019061189f9190613adb565b6118ad90602081019061326b565b90505f8686848181106118c2576118c261399d565b90506020028101906118d49190613adb565b602001359050365f8888868181106118ee576118ee61399d565b90506020028101906119009190613adb565b61190e906040810190613af9565b915091505f5f856001600160a01b031685858560405161192f929190613b3c565b5f6040518083038185875af1925050503d805f8114611969576040519150601f19603f3d011682016040523d82523d5f602084013e61196e565b606091505b50915091508181906119ad576040517f4ad176bb000000000000000000000000000000000000000000000000000000008152600401610e209190613b4b565b50808988815181106119c1576119c161399d565b60200260200101819052505050505050508080600101915050611872565b505092915050565b5f54604051632474521560e21b81527f1a6838efa4183e08fe3607359d1259272af9d4716f65e1a7b5921f78fd5a3c6a600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015611a58573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a7c919061396b565b611ab75760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610e20565b610668826128d3565b5f54604051632474521560e21b81527ffcb9fcbfa83b897fb2d5cf4b58962164105c1e71489a37ef3ae0db3fdce576f6600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015611b31573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b55919061396b565b611b905760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610e20565b61059961303c565b5f54604051632474521560e21b81527f1a6838efa4183e08fe3607359d1259272af9d4716f65e1a7b5921f78fd5a3c6a600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015611c09573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c2d919061396b565b611c685760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610e20565b8160015f85604051602001611c7d9190613b4b565b6040516020818303038152906040528051906020012081526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555082604051611cd19190613b5d565b604080519182900382204283526001600160a01b0385166020840152917f34765092fb4826a2f48dae7ee370790341f5fe0147f013fca4108e6ea65a68ed910160405180910390a2505050565b611d26612942565b611d2e61297e565b611d6c6040518060400160405280601081526020017f72656465656d436f6e74726f6c6c657200000000000000000000000000000000815250611f38565b6040517fc0598b0d0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03919091169063c0598b0d906024015f604051808303815f87803b158015611dc5575f5ffd5b505af1158015611dd7573d5f5f3e3d5ffd5b50505050611de3612a04565b565b5f54604051632474521560e21b81527f3947e2f542c6c46c543fa4f79cbd1e27fea37ed249bc3caf992570d19123642e600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015611e56573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e7a919061396b565b611eb55760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610e20565b662386f26fc10000821115611ef6576040517f6b3ff80700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600382905560408051428152602081018490527f675607ea61b02df8e5abbbe4772c0b60bb371fa80782206f2efa1b31e37311eb910160405180910390a15050565b5f60015f83604051602001611f4d9190613b4b565b60408051601f198184030181529181528151602092830120835290820192909252015f20546001600160a01b031692915050565b611f89612942565b611f9161297e565b5f611fc4604051806040016040528060118152602001703637b1b5b4b733a1b7b73a3937b63632b960791b815250611f38565b60405163e7dda2eb60e01b815263ffffffff841660048201529091505f906001600160a01b0383169063e7dda2eb90602401602060405180830381865afa158015612011573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120359190613b73565b6040516323b872dd60e01b8152336004820152306024820152604481018690529091506001600160a01b038216906323b872dd906064016020604051808303815f875af1158015612088573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120ac919061396b565b5060405163095ea7b360e01b81526001600160a01b0383811660048301526024820186905282169063095ea7b3906044016020604051808303815f875af11580156120f9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061211d919061396b565b506040517f7f866a0d0000000000000000000000000000000000000000000000000000000081526004810185905263ffffffff841660248201523360448201526001600160a01b03831690637f866a0d906064015f604051808303815f87803b158015612188575f5ffd5b505af115801561219a573d5f5f3e3d5ffd5b505050505050610668612a04565b6121b0612942565b6121b861297e565b6121f66040518060400160405280601081526020017f616c6c6f636174696f6e566f74696e6700000000000000000000000000000000815250611f38565b6001600160a01b0316632610409b338888888888886040518863ffffffff1660e01b815260040161222d9796959493929190613a7d565b5f604051808303815f87803b158015612244575f5ffd5b505af1158015612256573d5f5f3e3d5ffd5b50505050612262612a04565b505050505050565b612272612942565b61227a61297e565b5f6122ad604051806040016040528060118152602001703637b1b5b4b733a1b7b73a3937b63632b960791b815250611f38565b60405163e7dda2eb60e01b815263ffffffff861660048201529091505f906001600160a01b0383169063e7dda2eb90602401602060405180830381865afa1580156122fa573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061231e9190613b73565b6040516323b872dd60e01b8152336004820152306024820152604481018590529091506001600160a01b038216906323b872dd906064016020604051808303815f875af1158015612371573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612395919061396b565b5060405163095ea7b360e01b81526001600160a01b0383811660048301526024820185905282169063095ea7b3906044016020604051808303815f875af11580156123e2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612406919061396b565b506040517fc4acfb8f0000000000000000000000000000000000000000000000000000000081526004810184905263ffffffff8087166024830152851660448201523360648201526001600160a01b0383169063c4acfb8f906084015b5f604051808303815f87803b15801561247a575f5ffd5b505af115801561248c573d5f5f3e3d5ffd5b50505050505061249a612a04565b505050565b5f6124a8612942565b6124b061297e565b5f6124de6040518060400160405280600c81526020016b3932b1b2b4b83a2a37b5b2b760a11b815250611f38565b90505f61250d6040518060400160405280600b81526020016a39ba30b5b2b22a37b5b2b760a91b815250611f38565b90505f612542604051806040016040528060118152602001703637b1b5b4b733a1b7b73a3937b63632b960791b815250611f38565b6040516323b872dd60e01b8152336004820152306024820152604481018890529091506001600160a01b038316906323b872dd906064016020604051808303815f875af1158015612595573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125b9919061396b565b506040517fba08765200000000000000000000000000000000000000000000000000000000815260048101879052306024820181905260448201525f906001600160a01b0384169063ba087652906064016020604051808303815f875af1158015612626573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061264a9190613986565b60405163095ea7b360e01b81526001600160a01b038481166004830152602482018390529192509085169063095ea7b3906044016020604051808303815f875af115801561269a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126be919061396b565b50604051633b50953b60e21b81526004810182905263ffffffff871660248201526001600160a01b03898116604483015283169063ed4254ec906064015f604051808303815f87803b158015612712575f5ffd5b505af1158015612724573d5f5f3e3d5ffd5b50929650505050505050610bd9612a04565b61273e612942565b61274661297e565b5f6127746040518060400160405280600c81526020016b3932b1b2b4b83a2a37b5b2b760a11b815250611f38565b90505f6127a9604051806040016040528060118152602001703637b1b5b4b733a1b7b73a3937b63632b960791b815250611f38565b6040516323b872dd60e01b8152336004820152306024820152604481018790529091506001600160a01b038316906323b872dd906064016020604051808303815f875af11580156127fc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612820919061396b565b5060405163095ea7b360e01b81526001600160a01b0382811660048301526024820187905283169063095ea7b3906044016020604051808303815f875af115801561286d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612891919061396b565b50604051633b50953b60e21b81526004810186905263ffffffff851660248201526001600160a01b03848116604483015282169063ed4254ec90606401612463565b5f80546001600160a01b038381166101008181027fffffffffffffffffffffff0000000000000000000000000000000000000000ff851617855560405193049190911692909183917f9209b7c8c06dcfd261686a663e7c55989337b18d59da5433c6f2835fb697092091a35050565b5f5460ff1615611de3576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c156129d7576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611de360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b90613078565b611de35f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f006129fe565b6040516001600160a01b038481166024830152838116604483015260648201839052612aaa9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061307f565b50505050565b5f612ade6040518060400160405280600c81526020016b7969656c6453686172696e6760a01b815250611f38565b90505f816001600160a01b031663f843336c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b1d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b419190613986565b1215610599576040517f3929972400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383165f90815260026020526040812054819060ff16612bcc576040517f1f3eeae700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03871673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14612c1957612c056001600160a01b038816333089612a2e565b612c196001600160a01b0388168688613104565b5f856001600160a01b0316348686604051612c35929190613b3c565b5f6040518083038185875af1925050503d805f8114612c6f576040519150601f19603f3d011682016040523d82523d5f602084013e612c74565b606091505b5050905080612caf576040517f81ceff3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612cdf6040518060400160405280600e81526020016d36b4b73a21b7b73a3937b63632b960911b815250611f38565b90505f612d07604051806040016040528060048152602001635553444360e01b815250611f38565b90505f612d376040518060400160405280600c81526020016b3932b1b2b4b83a2a37b5b2b760a11b815250611f38565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091505f906001600160a01b038416906370a0823190602401602060405180830381865afa158015612d97573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dbb9190613986565b60405163095ea7b360e01b81526001600160a01b038681166004830152602482018390529192509084169063095ea7b3906044016020604051808303815f875af1158015612e0b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e2f919061396b565b506040516340c10f1960e01b8152306004820152602481018290525f906001600160a01b038616906340c10f19906044016020604051808303815f875af1158015612e7c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ea09190613986565b6003549091508015612f8a575f612eb783836131a8565b9050612ec38184613b8e565b9250846001600160a01b031663a9059cbb612f016040518060400160405280600c81526020016b7969656c6453686172696e6760a01b815250611f38565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af1158015612f63573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f87919061396b565b50505b5060408051428152602081018e90529081018290526001600160a01b038e169033907f864d8445691e89cf27c9d9cc6155ad638a9833f28365127ad89aa779a6d3cf839060600160405180910390a39c919b50909950505050505050505050565b612ff36131bc565b5f805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b613044612942565b5f805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861301f3390565b80825d5050565b5f5f60205f8451602086015f885af18061309e576040513d5f823e3d81fd5b50505f513d915081156130b55780600114156130c2565b6001600160a01b0384163b155b15612aaa576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610e20565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b17905261316a84826131f7565b612aaa576040516001600160a01b0384811660248301525f604483015261319e91869182169063095ea7b390606401612a63565b612aaa848261307f565b5f610bd98383670de0b6b3a764000061323c565b5f5460ff16611de3576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f5f5f60205f8651602088015f8a5af192503d91505f519050828015611044575081156132285780600114611044565b50505050506001600160a01b03163b151590565b5f825f190484118302158202613250575f5ffd5b5091020490565b6001600160a01b0381168114610599575f5ffd5b5f6020828403121561327b575f5ffd5b8135610bd981613257565b803563ffffffff81168114613299575f5ffd5b919050565b5f5f604083850312156132af575f5ffd5b823591506132bf60208401613286565b90509250929050565b5f5f604083850312156132d9575f5ffd5b82356132e481613257565b946020939093013593505050565b5f5f5f60608486031215613304575f5ffd5b833561330f81613257565b92506020840135915061332460408501613286565b90509250925092565b5f5f5f6060848603121561333f575f5ffd5b833561334a81613257565b95602085013595506040909401359392505050565b5f6020828403121561336f575f5ffd5b5035919050565b5f5f83601f840112613386575f5ffd5b50813567ffffffffffffffff81111561339d575f5ffd5b6020830191508360208285010111156133b4575f5ffd5b9250929050565b5f5f5f5f5f5f60a087890312156133d0575f5ffd5b86356133db81613257565b95506020870135945060408701356133f281613257565b9350606087013567ffffffffffffffff81111561340d575f5ffd5b61341989828a01613376565b909450925050608087013561342d81613257565b809150509295509295509295565b5f5f5f5f5f5f5f60c0888a031215613451575f5ffd5b873561345c81613257565b965060208801359550604088013561347381613257565b9450606088013567ffffffffffffffff81111561348e575f5ffd5b61349a8a828b01613376565b90955093506134ad905060808901613286565b915060a08801356134bd81613257565b8091505092959891949750929550565b5f5f83601f8401126134dd575f5ffd5b50813567ffffffffffffffff8111156134f4575f5ffd5b6020830191508360208260051b85010111156133b4575f5ffd5b5f5f5f5f5f5f5f5f6080898b031215613525575f5ffd5b883567ffffffffffffffff81111561353b575f5ffd5b6135478b828c016134cd565b909950975050602089013567ffffffffffffffff811115613566575f5ffd5b6135728b828c016134cd565b909750955050604089013567ffffffffffffffff811115613591575f5ffd5b61359d8b828c016134cd565b909550935050606089013567ffffffffffffffff8111156135bc575f5ffd5b6135c88b828c016134cd565b999c989b5096995094979396929594505050565b8015158114610599575f5ffd5b5f5f604083850312156135fa575f5ffd5b823561360581613257565b91506020830135613615816135dc565b809150509250929050565b5f5f60208385031215613631575f5ffd5b823567ffffffffffffffff811115613647575f5ffd5b613653858286016134cd565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156136e457603f198786030184526136cf85835161365f565b945060209384019391909101906001016136b3565b50929695505050505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112613713575f5ffd5b813567ffffffffffffffff81111561372d5761372d6136f0565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561375c5761375c6136f0565b604052818152838201602001851015613773575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156137a0575f5ffd5b823567ffffffffffffffff8111156137b6575f5ffd5b6137c285828601613704565b925050602083013561361581613257565b5f602082840312156137e3575f5ffd5b813567ffffffffffffffff8111156137f9575f5ffd5b61380584828501613704565b949350505050565b5f5f83601f84011261381d575f5ffd5b50813567ffffffffffffffff811115613834575f5ffd5b6020830191508360208260061b85010111156133b4575f5ffd5b5f5f5f5f5f5f60808789031215613863575f5ffd5b863561386e81613257565b955061387c60208801613286565b9450604087013567ffffffffffffffff811115613897575f5ffd5b6138a389828a0161380d565b909550935050606087013567ffffffffffffffff8111156138c2575f5ffd5b6138ce89828a0161380d565b979a9699509497509295939492505050565b5f5f5f606084860312156138f2575f5ffd5b6138fb84613286565b925061390960208501613286565b929592945050506040919091013590565b5f5f5f6060848603121561392c575f5ffd5b8335925061393c60208501613286565b9150604084013561394c81613257565b809150509250925092565b634e487b7160e01b5f52600160045260245ffd5b5f6020828403121561397b575f5ffd5b8151610bd9816135dc565b5f60208284031215613996575f5ffd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156139c1575f5ffd5b610bd982613286565b5f5f8335601e198436030181126139df575f5ffd5b83018035915067ffffffffffffffff8211156139f9575f5ffd5b6020019150600681901b36038213156133b4575f5ffd5b8183526020830192505f815f5b84811015613a73578135613a3081613257565b6001600160a01b0316865260208201356bffffffffffffffffffffffff8116808214613a5a575f5ffd5b6020880152506040958601959190910190600101613a1d565b5093949350505050565b6001600160a01b03881681526001600160a01b038716602082015263ffffffff8616604082015260a060608201525f613aba60a083018688613a10565b8281036080840152613acd818587613a10565b9a9950505050505050505050565b5f8235605e19833603018112613aef575f5ffd5b9190910192915050565b5f5f8335601e19843603018112613b0e575f5ffd5b83018035915067ffffffffffffffff821115613b28575f5ffd5b6020019150368190038213156133b4575f5ffd5b818382375f9101908152919050565b602081525f610bd9602083018461365f565b5f82518060208501845e5f920191825250919050565b5f60208284031215613b83575f5ffd5b8151610bd981613257565b8181038181111561092057634e487b7160e01b5f52601160045260245ffdfea26469706673582212205396857dcb397e2fe24bcf08b16b62a20f31251d08e33dbdfcbcb239627056cf64736f6c634300081c0033