0 txs
321 calls
constructor
constructor(address _finder, (address admin, address maintainer) _roles)
functions
collateralToInterestToken
viewfunction collateralToInterestToken(address _pool, uint256 _collateralAmount) view returns (uint256 interestTokenAmount, address interestTokenAddr)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getAccumulatedInterest
viewfunction getAccumulatedInterest(address _pool) view returns (uint256 poolInterest, uint256 commissionInterest, uint256 buybackInterest, uint256 collateralDeposited)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRoleMember
viewfunction getRoleMember(bytes32 role, uint256 index) view returns (address)
getRoleMemberCount
viewfunction getRoleMemberCount(bytes32 role) view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
interestTokenToCollateral
viewfunction interestTokenToCollateral(address _pool, uint256 _interestTokenAmount) view returns (uint256 collateralAmount, address interestTokenAddr)
MAINTAINER_ROLE
viewfunction MAINTAINER_ROLE() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
addSwapProtocol
nonpayablefunction addSwapProtocol(address _swapModule)
batchBuyback
nonpayablefunction batchBuyback(address[] _pools, uint256[] _amounts, address _collateralAddress, bytes _swapParams)
batchClaimCommission
nonpayablefunction batchClaimCommission(address[] _pools, uint256[] _amounts)
claimLendingRewards
nonpayablefunction claimLendingRewards(address[] _pools)
deposit
nonpayablefunction deposit(uint256 _amount) returns (tuple returnValues)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
migrateLendingModule
nonpayablefunction migrateLendingModule(string _newLendingID, address _newInterestBearingToken, uint256 _interestTokenAmount) returns (tuple)
migratePool
nonpayablefunction migratePool(address _migrationPool, address _newPool) returns (uint256 sourceCollateralAmount, uint256 actualCollateralAmount)
removeSwapProtocol
nonpayablefunction removeSwapProtocol(address _swapModule)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setLendingModule
nonpayablefunction setLendingModule(string _id, tuple _lendingInfo)
setShares
nonpayablefunction setShares(address _pool, uint64 _daoInterestShare, uint64 _jrtBuybackShare)
setSwapModule
nonpayablefunction setSwapModule(address _collateral, address _swapModule)
updateAccumulatedInterest
nonpayablefunction updateAccumulatedInterest() returns (tuple returnValues)
withdraw
nonpayablefunction withdraw(uint256 _interestTokenAmount, address _recipient) returns (tuple returnValues)
events
BatchBuyback
event BatchBuyback(uint256 indexed collateralIn, uint256 JRTOut, address receiver)
BatchCommissionClaim
event BatchCommissionClaim(uint256 indexed collateralOut, address receiver)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
errors
No errors.
creation bytecode
0x610100604052603060a0818152906200459560c03980516200002a91600391602090910190620002a4565b50604051806060016040528060348152602001620045c56034913980516200005b91600491602090910190620002a4565b503480156200006957600080fd5b5060405162004619380380620046198339810160408190526200008c9162000363565b600260009081556001600160a01b038316608052620000ac90806200010a565b620000c8600080516020620045f983398151915260006200010a565b8051620000d89060009062000157565b620000fd600080516020620045f983398151915282602001516200015760201b60201c565b505060016000556200043e565b6000828152600160208190526040808320909101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6200016e82826200019a60201b620023ef1760201c565b600082815260026020908152604090912062000195918390620023fd620001aa821b17901c565b505050565b620001a68282620001ca565b5050565b6000620001c1836001600160a01b03841662000252565b90505b92915050565b60008281526001602090815260408083206001600160a01b038516845290915290205460ff16620001a65760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b60008181526001830160205260408120546200029b57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001c4565b506000620001c4565b828054620002b29062000401565b90600052602060002090601f016020900481019282620002d6576000855562000321565b82601f10620002f157805160ff191683800117855562000321565b8280016001018555821562000321579182015b828111156200032157825182559160200191906001019062000304565b506200032f92915062000333565b5090565b5b808211156200032f576000815560010162000334565b6001600160a01b03811681146200036057600080fd5b50565b60008082840360608112156200037857600080fd5b835162000385816200034a565b92506040601f19820112156200039a57600080fd5b50604080519081016001600160401b0381118282101715620003cc57634e487b7160e01b600052604160045260246000fd5b6040526020840151620003df816200034a565b81526040840151620003f1816200034a565b6020820152919491935090915050565b600181811c908216806200041657607f821691505b602082108114156200043857634e487b7160e01b600052602260045260246000fd5b50919050565b6080516141186200047d6000396000818161079101528181610b4b015281816112f80152818161173301528181611c81015261260101526141186000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806391d14854116100de578063ca15c87311610097578063db456b6211610071578063db456b6214610431578063de3627c714610444578063eead906a14610457578063f87422541461045f57600080fd5b8063ca15c873146103f8578063d547741f1461040b578063d612ea331461041e57600080fd5b806391d148541461037457806399dce61b14610387578063a217fddf146103b7578063a2be10bd146103bf578063aa566a62146103d2578063b6b55f25146103e557600080fd5b8063366694131161014b5780636c924f2f116101255780636c924f2f146102db57806374e44a97146102ee578063772b7e97146103215780639010d07c1461034957600080fd5b8063366694131461028057806338f6c371146102b5578063658c9a09146102c857600080fd5b8062f714ce1461019257806301ffc9a7146101f0578063220ea31d14610213578063248a9ca3146102285780632f2ff15d1461025a57806336568abe1461026d575b600080fd5b6101a56101a03660046131a0565b610474565b6040516101e79190600060a082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015292915050565b60405180910390f35b6102036101fe3660046131d0565b6106ac565b60405190151581526020016101e7565b610226610221366004613286565b6106d7565b005b61024c610236366004613334565b6000908152600160208190526040909120015490565b6040519081526020016101e7565b6102266102683660046131a0565b610d23565b61022661027b3660046131a0565b610d4a565b61029361028e366004613405565b610d6c565b60408051825181526020808401519082015291810151908201526060016101e7565b6102266102c33660046134a1565b61115e565b6102266102d63660046134cf565b611235565b6102266102e9366004613525565b6114e1565b6103016102fc366004613570565b6115c9565b6040805194855260208501939093529183015260608201526080016101e7565b61033461032f3660046134a1565b61172b565b604080519283526020830191909152016101e7565b61035c61035736600461358d565b61198d565b6040516001600160a01b0390911681526020016101e7565b6102036103823660046131a0565b6119ac565b61039a6103953660046135af565b6119d7565b604080519283526001600160a01b039091166020830152016101e7565b61024c600081565b6102266103cd366004613570565b611b13565b6102266103e03660046135db565b611be2565b6101a56103f3366004613334565b611e0a565b61024c610406366004613334565b611fdd565b6102266104193660046131a0565b611ff4565b61039a61042c3660046135af565b611ffe565b61022661043f366004613570565b6120d7565b610226610452366004613646565b61216f565b6101a5612208565b61024c60008051602061400683398151915281565b6104a66040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b600260005414156104d25760405162461bcd60e51b81526004016104c9906136aa565b60405180910390fd5b6002600090815580806104e3612412565b925092509250600061057a6040518060a001604052806067815260200161402660679139853386602001518b8b6040516024016105249594939291906137a9565b60408051601f19818403018152908290529161053f916137fb565b6040519081900390206020820180516001600160e01b03166001600160e01b031990921691909117905284516001600160a01b0316906124f5565b90506000818060200190518101906105929190613817565b905060006105ad82600001518760e001518860a0015161251a565b9050836001600160a01b031663120b8e5033846020015184600001518a602001516105d89190613888565b6105e291906138a0565b84602001518a604001516105f69190613888565b85604001518b6060015161060a9190613888565b6040518563ffffffff1660e01b815260040161062994939291906138b7565b600060405180830381600087803b15801561064357600080fd5b505af1158015610657573d6000803e3d6000fd5b5050506020808401516040808b01919091528085015160608b015283518a5290830151908301516106889250613888565b60208089019190915295909501516080870152505060016000555091949350505050565b60006001600160e01b03198216635a05180f60e01b14806106d157506106d18261259c565b92915050565b6106ef600080516020614006833981519152336119ac565b61070b5760405162461bcd60e51b81526004016104c9906138dd565b8584146107495760405162461bcd60e51b815260206004820152600c60248201526b125b9d985b1a590818d85b1b60a21b60448201526064016104c9565b60006107536125d1565b6040516302abf57960e61b815275213abcb130b1b5a83937b3b930b6a932b1b2b4bb32b960511b600482015290915060009081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aafd5e409060240160206040518083038186803b1580156107d357600080fd5b505afa1580156107e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080b9190613924565b905060005b60ff81168a1115610b245760008b8b8360ff1681811061083257610832613941565b90506020020160208101906108479190613570565b905060008a8a8460ff1681811061086057610860613941565b6040516313d21cdf60e01b81526001600160a01b038681166004830152602090920293909301359350600092839250908916906313d21cdf9060240160006040518083038186803b1580156108b457600080fd5b505afa1580156108c8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108f091908101906139f7565b915091508a6001600160a01b031682608001516001600160a01b03161461094f5760405162461bcd60e51b8152602060048201526013602482015272086ded8d8c2e8cae4c2d840dad2e6dac2e8c6d606b1b60448201526064016104c9565b600061095b8585611ffe565b5060405163152a13cd60e31b8152600481018290529091506001600160a01b0386169063a9509e6890602401602060405180830381600087803b1580156109a157600080fd5b505af11580156109b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d99190613abc565b90506000610a166040518060a0016040528060678152602001614026606791398588866020015186306040516024016105249594939291906137a9565b9050600081806020019051810190610a2e9190613817565b905080604001518a610a409190613888565b99506000610a5b82600001518760e001518860a0015161251a565b90508b6001600160a01b031663120b8e508983600001518960200151610a819190613888565b856020015185602001518b60400151610a9a9190613888565b610aa491906138a0565b85604001518b60600151610ab89190613888565b6040518563ffffffff1660e01b8152600401610ad794939291906138b7565b600060405180830381600087803b158015610af157600080fd5b505af1158015610b05573d6000803e3d6000fd5b5050505050505050505050508080610b1c90613ad5565b915050610810565b506040516302abf57960e61b81526a2530b93b34b9aa37b5b2b760a91b60048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063aafd5e409060240160206040518083038186803b158015610b9557600080fd5b505afa158015610ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcd9190613924565b90506000610cbe6003848a85888c8c604051602401610bf196959493929190613b1e565b60408051601f198184030181529082905291610c0c91613b66565b60408051918290039091206020830180516001600160e01b03166001600160e01b0319909216919091179052516326a966c160e11b81526001600160a01b038b81166004830152881690634d52cd829060240160206040518083038186803b158015610c7757600080fd5b505afa158015610c8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610caf9190613924565b6001600160a01b0316906124f5565b9050837f15bc7538235a26bbf90ff27a286d54cc1f91d523cbf888e6a739fd36621ec50d82806020019051810190610cf69190613abc565b604080519182526001600160a01b03871660208301520160405180910390a2505050505050505050505050565b610d2d8282612688565b6000828152600260205260409020610d4590826123fd565b505050565b610d5482826126af565b6000828152600260205260409020610d459082612729565b610d9060405180606001604052806000815260200160008152602001600081525090565b60026000541415610db35760405162461bcd60e51b81526004016104c9906136aa565b600260009081558080610dc4612412565b925092509250600083602001519050610df760405180606001604052806000815260200160008152602001600081525090565b6000610e886040518060a001604052806067815260200161402660679139873388602001518c30604051602401610e329594939291906137a9565b60408051601f198184030181529082905291610e4d916137fb565b6040519081900390206020820180516001600160e01b03166001600160e01b031990921691909117905286516001600160a01b0316906124f5565b905080806020019051810190610e9e9190613817565b9150506000610eba82600001518760e001518860a0015161251a565b9050600081602001518760400151610ed29190613888565b9050600082604001518860600151610eea9190613888565b604051630120b8e560e41b81529091506001600160a01b0387169063120b8e5090610f20903390600090819081906004016138b7565b600060405180830381600087803b158015610f3a57600080fd5b505af1158015610f4e573d6000803e3d6000fd5b50505050610f6d60408051808201909152600081526060602082015290565b866001600160a01b031663ee3b32698e338f6040518463ffffffff1660e01b8152600401610f9d93929190613c02565b600060405180830381600087803b158015610fb757600080fd5b505af1158015610fcb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ff391908101906139f7565b809250819a505050600061108e60405180608001604052806056815260200161408d605691398b84602001518960400151336040516024016110389493929190613c35565b60408051601f198184030181529082905291611053916137fb565b6040519081900390206020820180516001600160e01b03166001600160e01b031990921691909117905283516001600160a01b0316906124f5565b90506000818060200190518101906110a69190613817565b90506000848683602001516110bb91906138a0565b6110c591906138a0565b604051630120b8e560e41b81529091506001600160a01b038b169063120b8e50906110fa90339085908b908b906004016138b7565b600060405180830381600087803b15801561111457600080fd5b505af1158015611128573d6000803e3d6000fd5b5050604080516060810182529b8c52985160208c01525050958801959095525050600160005550929a9950505050505050505050565b611176600080516020614006833981519152336119ac565b6111925760405162461bcd60e51b81526004016104c9906138dd565b600260005414156111b55760405162461bcd60e51b81526004016104c9906136aa565b600260009081556111c46125d1565b6040516338f6c37160e01b81526001600160a01b0385811660048301528481166024830152919250908216906338f6c37190604401600060405180830381600087803b15801561121357600080fd5b505af1158015611227573d6000803e3d6000fd5b505060016000555050505050565b61124d600080516020614006833981519152336119ac565b6112695760405162461bcd60e51b81526004016104c9906138dd565b6002600054141561128c5760405162461bcd60e51b81526004016104c9906136aa565b6002600090815561129b6125d1565b60408051808201909152600080825260208201529091506040805180820190915260008152606060208201526040516302abf57960e61b8152752632b73234b733a932bbb0b93239a932b1b2b4bb32b960511b60048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063aafd5e409060240160206040518083038186803b15801561134257600080fd5b505afa158015611356573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137a9190613924565b905060005b60ff811686111561122757846001600160a01b0316632155162388888460ff168181106113ae576113ae613941565b90506020020160208101906113c39190613570565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160006040518083038186803b15801561140257600080fd5b505afa158015611416573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261143e9190810190613c7b565b9094509250868660ff831681811061145857611458613941565b905060200201602081019061146d9190613570565b6001600160a01b0316634f9b84778486856040518463ffffffff1660e01b815260040161149c93929190613ce2565b600060405180830381600087803b1580156114b657600080fd5b505af11580156114ca573d6000803e3d6000fd5b5050505080806114d990613ad5565b91505061137f565b6114f9600080516020614006833981519152336119ac565b6115155760405162461bcd60e51b81526004016104c9906138dd565b600260005414156115385760405162461bcd60e51b81526004016104c9906136aa565b600260009081556115476125d1565b604051636c924f2f60e01b81526001600160a01b0386811660048301526001600160401b0380871660248401528516604483015291925090821690636c924f2f906064015b600060405180830381600087803b1580156115a657600080fd5b505af11580156115ba573d6000803e3d6000fd5b50506001600055505050505050565b60008060008060006115d96125d1565b6040516313d21cdf60e01b81526001600160a01b0388811660048301529192506000918291908416906313d21cdf9060240160006040518083038186803b15801561162357600080fd5b505afa158015611637573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261165f91908101906139f7565b91509150600081600001516001600160a01b03166317e386468a8585602001516040518463ffffffff1660e01b815260040161169d93929190613d3a565b60206040518083038186803b1580156116b557600080fd5b505afa1580156116c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ed9190613abc565b90506000611704828560e001518660a0015161251a565b805160408201516020928301519690920151909c919b509499509397509295505050505050565b6000806117577f000000000000000000000000000000000000000000000000000000000000000061273e565b6002600054141561177a5760405162461bcd60e51b81526004016104c9906136aa565b600260009081556117896125d1565b604051632155162360e01b81526001600160a01b03878116600483015291925060009182919084169063215516239060240160006040518083038186803b1580156117d357600080fd5b505afa1580156117e7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261180f9190810190613c7b565b91509150600061185a6004898986600001518760200151876020015160405160240161183f959493929190613d6b565b60408051601f19818403018152908290529161105391613b66565b9050600080828060200190518101906118739190613db2565b604051637d9d518b60e01b81526001600160a01b038d8116600483015292945090925090871690637d9d518b9060240160206040518083038186803b1580156118bb57600080fd5b505afa1580156118cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f39190613abc565b975081611900828a613888565b61190a91906138a0565b6040516340ec3c6160e11b81526001600160a01b038c811660048301528b8116602483015260448201839052919850908716906381d878c290606401600060405180830381600087803b15801561196057600080fd5b505af1158015611974573d6000803e3d6000fd5b5050505050505050505060016000819055509250929050565b60008281526002602052604081206119a590836128ac565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60008060006119e46125d1565b604051632155162360e01b81526001600160a01b03878116600483015291925060009182919084169063215516239060240160006040518083038186803b158015611a2e57600080fd5b505afa158015611a42573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a6a9190810190613c7b565b9150915080600001516001600160a01b0316633ca5578c878460000151856020015185602001516040518563ffffffff1660e01b8152600401611ab09493929190613dd6565b60206040518083038186803b158015611ac857600080fd5b505afa158015611adc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b009190613abc565b9450816020015193505050509250929050565b611b2b600080516020614006833981519152336119ac565b611b475760405162461bcd60e51b81526004016104c9906138dd565b60026000541415611b6a5760405162461bcd60e51b81526004016104c9906136aa565b60026000908155611b796125d1565b60405163a2be10bd60e01b81526001600160a01b0384811660048301529192509082169063a2be10bd906024015b600060405180830381600087803b158015611bc157600080fd5b505af1158015611bd5573d6000803e3d6000fd5b5050600160005550505050565b611bfa600080516020614006833981519152336119ac565b611c165760405162461bcd60e51b81526004016104c9906138dd565b828114611c545760405162461bcd60e51b815260206004820152600c60248201526b125b9d985b1a590818d85b1b60a21b60448201526064016104c9565b6040516302abf57960e61b81527121b7b6b6b4b9b9b4b7b72932b1b2b4bb32b960711b60048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063aafd5e409060240160206040518083038186803b158015611ccb57600080fd5b505afa158015611cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d039190613924565b90506000805b60ff8116861115611dc357600085858360ff16818110611d2b57611d2b613941565b905060200201351115611db157611d8787878360ff16818110611d5057611d50613941565b9050602002016020810190611d659190613570565b86868460ff16818110611d7a57611d7a613941565b90506020020135856128b8565b84848260ff16818110611d9c57611d9c613941565b9050602002013582611dae9190613888565b91505b80611dbb81613ad5565b915050611d09565b506040516001600160a01b038316815281907f47592ec9d9991a137422beab7c67c9dde0899a7b5cc3c7df0812979abf5be8ac9060200160405180910390a2505050505050565b611e3c6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b60026000541415611e5f5760405162461bcd60e51b81526004016104c9906136aa565b600260009081558080611e70612412565b9250925092506000611eac60405180608001604052806056815260200161408d6056913960208501516040516105249188918b90602401613e08565b9050600081806020019051810190611ec49190613817565b90506000611edf82600001518760e001518860a0015161251a565b9050836001600160a01b031663120b8e5033836000015185602001518a60200151611f0a9190613888565b611f149190613888565b84602001518a60400151611f289190613888565b85604001518b60600151611f3c9190613888565b6040518563ffffffff1660e01b8152600401611f5b94939291906138b7565b600060405180830381600087803b158015611f7557600080fd5b505af1158015611f89573d6000803e3d6000fd5b5050506020808401516040808b01919091528085015160608b015283518a529083015190830151611fba9250613888565b602080890191909152959095015160808701525050600160005550919392505050565b60008181526002602052604081206106d190612b00565b610d548282612b0a565b600080600061200b6125d1565b604051632155162360e01b81526001600160a01b03878116600483015291925060009182919084169063215516239060240160006040518083038186803b15801561205557600080fd5b505afa158015612069573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120919190810190613c7b565b9150915080600001516001600160a01b031663156b8523878460000151856020015185602001516040518563ffffffff1660e01b8152600401611ab09493929190613dd6565b6120ef600080516020614006833981519152336119ac565b61210b5760405162461bcd60e51b81526004016104c9906138dd565b6002600054141561212e5760405162461bcd60e51b81526004016104c9906136aa565b6002600090815561213d6125d1565b604051636da2b5b160e11b81526001600160a01b0384811660048301529192509082169063db456b6290602401611ba7565b612187600080516020614006833981519152336119ac565b6121a35760405162461bcd60e51b81526004016104c9906138dd565b600260005414156121c65760405162461bcd60e51b81526004016104c9906136aa565b600260009081556121d56125d1565b60405163de3627c760e01b81529091506001600160a01b0382169063de3627c79061158c90879087908790600401613e3c565b61223a6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6002600054141561225d5760405162461bcd60e51b81526004016104c9906136aa565b60026000908155808061226e612412565b925092509250600082600001516001600160a01b031663b108ba2c338686602001516040518463ffffffff1660e01b81526004016122ae93929190613d3a565b602060405180830381600087803b1580156122c857600080fd5b505af11580156122dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123009190613abc565b90506000612317828660e001518760a0015161251a565b9050826001600160a01b031663120b8e50338360000151886020015161233d9190613888565b846020015189604001516123519190613888565b85604001518a606001516123659190613888565b6040518563ffffffff1660e01b815260040161238494939291906138b7565b600060405180830381600087803b15801561239e57600080fd5b505af11580156123b2573d6000803e3d6000fd5b5050825188525050604081015160208201516123ce9190613888565b60208088019190915294909401516080860152505060016000555090919050565b6123f98282612b31565b5050565b60006119a5836001600160a01b038416612b9c565b60408051610100810182526000808252602080830182905282840182905260608084018390526080840183905260a0840183905260c0840183905260e08401839052845180860190955291845283015290600061246d6125d1565b6040516313d21cdf60e01b81523360048201529091506001600160a01b038216906313d21cdf9060240160006040518083038186803b1580156124af57600080fd5b505afa1580156124c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124eb91908101906139f7565b9094909350909150565b60606119a58383604051806060016040528060278152602001613fdf60279139612beb565b61253e60405180606001604052806000815260200160008152602001600081525090565b83612548576119a5565b600061255d856001600160401b038616612cbf565b9050612572816001600160401b038516612cbf565b6020830181905261258390826138a0565b604083015261259281866138a0565b8252509392505050565b60006001600160e01b03198216637965db0b60e01b14806106d157506301ffc9a760e01b6001600160e01b03198316146106d1565b6040516302abf57960e61b8152742632b73234b733a9ba37b930b3b2a6b0b730b3b2b960591b60048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063aafd5e409060240160206040518083038186803b15801561264b57600080fd5b505afa15801561265f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126839190613924565b905090565b600082815260016020819052604090912001546126a58133612cde565b610d458383612b31565b6001600160a01b038116331461271f5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016104c9565b6123f98282612d42565b60006119a5836001600160a01b038416612da9565b6040516302abf57960e61b815270466163746f727956657273696f6e696e6760781b60048201526000906001600160a01b0383169063aafd5e409060240160206040518083038186803b15801561279457600080fd5b505afa1580156127a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127cc9190613924565b604051636d2721a360e11b81526a506f6f6c466163746f727960a81b60048201529091506000906001600160a01b0383169063da4e43469060240160206040518083038186803b15801561281f57600080fd5b505afa158015612833573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128579190613ec5565b905061287282826a506f6f6c466163746f727960a81b612e9c565b610d455760405162461bcd60e51b815260206004820152600b60248201526a139bdd08185b1b1bddd95960aa1b60448201526064016104c9565b60006119a58383612f8a565b60006128c26125d1565b6040516313d21cdf60e01b81526001600160a01b0386811660048301529192506000918291908416906313d21cdf9060240160006040518083038186803b15801561290c57600080fd5b505afa158015612920573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261294891908101906139f7565b9150915060006129588787611ffe565b5060405163152a13cd60e31b8152600481018290529091506001600160a01b0388169063a9509e6890602401602060405180830381600087803b15801561299e57600080fd5b505af11580156129b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d69190613abc565b90506000612a136040518060a001604052806067815260200161402660679139858a8660200151868b6040516024016105249594939291906137a9565b9050600081806020019051810190612a2b9190613817565b90506000612a4682600001518760e001518860a0015161251a565b9050866001600160a01b031663120b8e508b83600001518960200151612a6c9190613888565b84602001518a60400151612a809190613888565b866020015186604001518c60600151612a999190613888565b612aa391906138a0565b6040518563ffffffff1660e01b8152600401612ac294939291906138b7565b600060405180830381600087803b158015612adc57600080fd5b505af1158015612af0573d6000803e3d6000fd5b5050505050505050505050505050565b60006106d1825490565b60008281526001602081905260409091200154612b278133612cde565b610d458383612d42565b612b3b82826119ac565b6123f95760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000818152600183016020526040812054612be3575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106d1565b5060006106d1565b6060833b612c4a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016104c9565b600080856001600160a01b031685604051612c6591906137fb565b600060405180830381855af49150503d8060008114612ca0576040519150601f19603f3d011682016040523d82523d6000602084013e612ca5565b606091505b5091509150612cb5828286612fb4565b9695505050505050565b6000670de0b6b3a7640000612cd48385613ee8565b6119a59190613f07565b612ce882826119ac565b6123f957612d00816001600160a01b03166014612fed565b612d0b836020612fed565b604051602001612d1c929190613f29565b60408051601f198184030181529082905262461bcd60e51b82526104c991600401613f9e565b612d4c82826119ac565b156123f95760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008181526001830160205260408120548015612e92576000612dcd6001836138a0565b8554909150600090612de1906001906138a0565b9050818114612e46576000866000018281548110612e0157612e01613941565b9060005260206000200154905080876000018481548110612e2457612e24613941565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612e5757612e57613fb1565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506106d1565b60009150506106d1565b60008060005b8460ff168260ff161015612f8157604051636839980160e11b81526004810185905260ff821660248201526001600160a01b0387169063d07330029060440160206040518083038186803b158015612ef957600080fd5b505afa925050508015612f29575060408051601f3d908101601f19168201909252612f2691810190613924565b60015b612f3257612f6f565b336001600160a01b0382161415612f4d576001935050612f81565b82612f5781613ad5565b9350508560ff168360ff161415612f6d57600093505b505b80612f7981613ad5565b915050612ea2565b50509392505050565b6000826000018281548110612fa157612fa1613941565b9060005260206000200154905092915050565b60608315612fc35750816119a5565b825115612fd35782518084602001fd5b8160405162461bcd60e51b81526004016104c99190613f9e565b60606000612ffc836002613ee8565b613007906002613888565b6001600160401b0381111561301e5761301e61334d565b6040519080825280601f01601f191660200182016040528015613048576020820181803683370190505b509050600360fc1b8160008151811061306357613063613941565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061309257613092613941565b60200101906001600160f81b031916908160001a90535060006130b6846002613ee8565b6130c1906001613888565b90505b6001811115613139576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106130f5576130f5613941565b1a60f81b82828151811061310b5761310b613941565b60200101906001600160f81b031916908160001a90535060049490941c9361313281613fc7565b90506130c4565b5083156119a55760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016104c9565b6001600160a01b038116811461319d57600080fd5b50565b600080604083850312156131b357600080fd5b8235915060208301356131c581613188565b809150509250929050565b6000602082840312156131e257600080fd5b81356001600160e01b0319811681146119a557600080fd5b60008083601f84011261320c57600080fd5b5081356001600160401b0381111561322357600080fd5b6020830191508360208260051b850101111561323e57600080fd5b9250929050565b60008083601f84011261325757600080fd5b5081356001600160401b0381111561326e57600080fd5b60208301915083602082850101111561323e57600080fd5b60008060008060008060006080888a0312156132a157600080fd5b87356001600160401b03808211156132b857600080fd5b6132c48b838c016131fa565b909950975060208a01359150808211156132dd57600080fd5b6132e98b838c016131fa565b909750955060408a013591506132fe82613188565b9093506060890135908082111561331457600080fd5b506133218a828b01613245565b989b979a50959850939692959293505050565b60006020828403121561334657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156133855761338561334d565b60405290565b60405161010081016001600160401b03811182821017156133855761338561334d565b604051601f8201601f191681016001600160401b03811182821017156133d6576133d661334d565b604052919050565b60006001600160401b038211156133f7576133f761334d565b50601f01601f191660200190565b60008060006060848603121561341a57600080fd5b83356001600160401b0381111561343057600080fd5b8401601f8101861361344157600080fd5b803561345461344f826133de565b6133ae565b81815287602083850101111561346957600080fd5b81602084016020830137600060208383010152809550505050602084013561349081613188565b929592945050506040919091013590565b600080604083850312156134b457600080fd5b82356134bf81613188565b915060208301356131c581613188565b600080602083850312156134e257600080fd5b82356001600160401b038111156134f857600080fd5b613504858286016131fa565b90969095509350505050565b6001600160401b038116811461319d57600080fd5b60008060006060848603121561353a57600080fd5b833561354581613188565b9250602084013561355581613510565b9150604084013561356581613510565b809150509250925092565b60006020828403121561358257600080fd5b81356119a581613188565b600080604083850312156135a057600080fd5b50508035926020909101359150565b600080604083850312156135c257600080fd5b82356135cd81613188565b946020939093013593505050565b600080600080604085870312156135f157600080fd5b84356001600160401b038082111561360857600080fd5b613614888389016131fa565b9096509450602087013591508082111561362d57600080fd5b5061363a878288016131fa565b95989497509550505050565b60008060006040848603121561365b57600080fd5b83356001600160401b038082111561367257600080fd5b61367e87838801613245565b9095509350602086013591508082111561369757600080fd5b5084016040818703121561356557600080fd5b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b80518252602081015160208301526040810151604083015260608101516060830152608081015160018060a01b03808216608085015260a083015191506001600160401b0380831660a08601528160c08501511660c08601528060e08501511660e08601525050505050565b60005b83811015613768578181015183820152602001613750565b83811115613777576000848401525b50505050565b6000815180845261379581602086016020860161374d565b601f01601f19169290920160200192915050565b60006101806137b883896136e1565b6001600160a01b0387811661010085015261012084018290526137dd8285018861377d565b92508561014085015280851661016085015250509695505050505050565b6000825161380d81846020870161374d565b9190910192915050565b60006060828403121561382957600080fd5b604051606081018181106001600160401b038211171561384b5761384b61334d565b80604052508251815260208301516020820152604083015160408201528091505092915050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561389b5761389b613872565b500190565b6000828210156138b2576138b2613872565b500390565b6001600160a01b0394909416845260208401929092526040830152606082015260800190565b6020808252601d908201527f53656e646572206d75737420626520746865206d61696e7461696e6572000000604082015260600190565b805161391f81613188565b919050565b60006020828403121561393657600080fd5b81516119a581613188565b634e487b7160e01b600052603260045260246000fd5b805161391f81613510565b60006040828403121561397457600080fd5b61397c613363565b9050815161398981613188565b815260208201516001600160401b038111156139a457600080fd5b8201601f810184136139b557600080fd5b80516139c361344f826133de565b8181528560208385010111156139d857600080fd5b6139e982602083016020860161374d565b602084015250909392505050565b600080828403610120811215613a0c57600080fd5b61010080821215613a1c57600080fd5b613a2461338b565b915084518252602085015160208301526040850151604083015260608501516060830152613a5460808601613914565b6080830152613a6560a08601613957565b60a0830152613a7660c08601613914565b60c0830152613a8760e08601613957565b60e08301528401519092506001600160401b03811115613aa657600080fd5b613ab285828601613962565b9150509250929050565b600060208284031215613ace57600080fd5b5051919050565b600060ff821660ff811415613aec57613aec613872565b60010192915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0387811682528681166020830152851660408201526060810184905260a060808201819052600090613b5a9083018486613af5565b98975050505050505050565b600080835481600182811c915080831680613b8257607f831692505b6020808410821415613ba257634e487b7160e01b86526022600452602486fd5b818015613bb65760018114613bc757613bf4565b60ff19861689528489019650613bf4565b60008a81526020902060005b86811015613bec5781548b820152908501908301613bd3565b505084890196505b509498975050505050505050565b606081526000613c15606083018661377d565b6001600160a01b0394851660208401529290931660409091015292915050565b6000610160613c4483886136e1565b80610100840152613c578184018761377d565b61012084019590955250506001600160a01b03919091166101409091015292915050565b6000808284036060811215613c8f57600080fd5b6040811215613c9d57600080fd5b50613ca6613363565b8351613cb181613188565b81526020840151613cc181613188565b602082015260408401519092506001600160401b03811115613aa657600080fd5b60808152600060018060a01b038086511660808401526020860151604060a0850152613d1160c085018261377d565b925050808551166020840152806020860151166040840152808416606084015250949350505050565b6001600160a01b03841681526000610140613d5860208401866136e1565b80610120840152612cb58184018561377d565b6001600160a01b038681168252858116602083015284811660408301528316606082015260a060808201819052600090613da79083018461377d565b979650505050505050565b60008060408385031215613dc557600080fd5b505080516020909101519092909150565b8481526001600160a01b03848116602083015283166040820152608060608201819052600090612cb59083018461377d565b6000610140613e1783876136e1565b80610100840152613e2a8184018661377d565b91505082610120830152949350505050565b604081526000613e50604083018587613af5565b82810360208401528335613e6381613188565b6001600160a01b03168152602084013536859003601e19018112613e8657600080fd5b840180356001600160401b03811115613e9e57600080fd5b803603861315613ead57600080fd5b60406020840152613b5a604084018260208501613af5565b600060208284031215613ed757600080fd5b815160ff811681146119a557600080fd5b6000816000190483118215151615613f0257613f02613872565b500290565b600082613f2457634e487b7160e01b600052601260045260246000fd5b500490565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613f6181601785016020880161374d565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613f9281602884016020880161374d565b01602801949350505050565b6020815260006119a5602083018461377d565b634e487b7160e01b600052603160045260246000fd5b600081613fd657613fd6613872565b50600019019056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564126303c860ea810f85e857ad8768056e2eebc24b7796655ff3107e4af18e3f1e77697468647261772828627974657333322c75696e743235362c75696e743235362c75696e743235362c616464726573732c75696e7436342c616464726573732c75696e743634292c616464726573732c62797465732c75696e743235362c61646472657373296465706f7369742828627974657333322c75696e743235362c75696e743235362c75696e743235362c616464726573732c75696e7436342c616464726573732c75696e743634292c62797465732c75696e7432353629a264697066735822122010722fde9ac9aa3a36d3a34f8e4eedb756ee05f4c3ee6cb32d8b2692ed1a3c4764736f6c6343000809003373776170546f4a525428616464726573732c616464726573732c616464726573732c75696e743235362c627974657329746f74616c5472616e7366657228616464726573732c616464726573732c616464726573732c616464726573732c627974657329126303c860ea810f85e857ad8768056e2eebc24b7796655ff3107e4af18e3f1e0000000000000000000000008f0bf7dd7d235a5d784dd68f8e14e14964418ee5000000000000000000000000c198a2babd2f00e968a296684e238e7b34123b5400000000000000000000000088e350b6681a8fcf9ab17455206034c09cbb1c14