0 txs
1 call
constructor
No constructor.
functions
authority
viewfunction authority() view returns (address)
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
claimableInterest
viewfunction claimableInterest(uint256 tokenId) view returns (uint256 interestClaimable, uint256 totalInterestClaimed)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getOfferings
viewfunction getOfferings(uint256 amountLoan, uint256 lockDuration) view returns (uint256 conversionPrice, uint256 conversionAmount, uint256 fixedInterestRate)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
lastId
viewfunction lastId() view returns (uint256)
loanToken
viewfunction loanToken() view returns (address)
loanTokenDecimals
viewfunction loanTokenDecimals() view returns (uint256)
loanTrackingToken
viewfunction loanTrackingToken() view returns (address)
MAX_LOCK_DURATION
viewfunction MAX_LOCK_DURATION() view returns (uint256)
MAX_ORACLE_STALENESS
viewfunction MAX_ORACLE_STALENESS() view returns (uint256)
MIN_LOCK_DURATION
viewfunction MIN_LOCK_DURATION() view returns (uint256)
name
viewfunction name() view returns (string)
oracle
viewfunction oracle() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
positions
viewfunction positions(uint256 tokenId) view returns (tuple position)
rzr
viewfunction rzr() view returns (address)
rzrTrackingToken
viewfunction rzrTrackingToken() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenByIndex
viewfunction tokenByIndex(uint256 index) view returns (uint256)
tokenOfOwnerByIndex
viewfunction tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalConvertible
viewfunction totalConvertible() view returns (uint256)
totalStaked
viewfunction totalStaked() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
twapOracle
viewfunction twapOracle() view returns (address)
variables
viewfunction variables() view returns (tuple vars)
approve
nonpayablefunction approve(address to, uint256 tokenId)
claimInterest
nonpayablefunction claimInterest(uint256 tokenId) returns (uint256 interestClaimed, uint256 totalInterestClaimed)
convert
nonpayablefunction convert(uint256 tokenId)
execute
nonpayablefunction execute(address target, bytes data)
initialize
nonpayablefunction initialize(address _loanToken, address _rzr, address _debtTrackingToken, address _conversionTrackingToken, address _oracle, address _twapOracle, address _authority, tuple __vars)
redeem
nonpayablefunction redeem(uint256 tokenId)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setAuthority
nonpayablefunction setAuthority(address _newAuthority)
setFeeMProjectId
nonpayablefunction setFeeMProjectId(address registry, uint256 projectID)
setVariables
nonpayablefunction setVariables(uint256 _minConversionPremium, uint256 _maxConversionPremium, uint256 _minFixedInterestRate, uint256 _maxFixedInterestRate, uint256 _supplyCap, uint256 _debtCap)
split
nonpayablefunction split(uint256 tokenId, uint256 percentageE18)
stake
nonpayablefunction stake(uint256 amount, uint256 lockDuration, address receiver) returns (uint256 tokenId, uint256 conversionPrice, uint256 conversionAmount, uint256 fixedInterestRate, uint256 fixedInterestRateAmount)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
updateOracle
nonpayablefunction updateOracle(address _oracle, address _twapOracle)
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
AuthorityUpdated
event AuthorityUpdated(address indexed authority)
Converted
event Converted(address indexed user, uint256 indexed tokenId, uint256 amountStaked, uint256 amountConvertible, uint256 twapPrice)
Initialized
event Initialized(uint64 version)
InterestClaimed
event InterestClaimed(address indexed user, uint256 indexed tokenId, uint256 interestClaimed)
PositionSplit
event PositionSplit(address indexed user, uint256 indexed originalTokenId, uint256 indexed newTokenId, uint256 originalAmountStaked, uint256 newAmountStaked, uint256 originalAmountConvertible, uint256 newAmountConvertible, uint256 percentageE18)
PositionTransferred
event PositionTransferred(address indexed from, address indexed to, uint256 indexed tokenId, uint256 amountStaked, uint256 amountConvertible)
Redeemed
event Redeemed(address indexed user, uint256 indexed tokenId, uint256 amountStaked, uint256 amountConvertible, uint256 interestAccumulated)
Staked
event Staked(address indexed user, uint256 indexed tokenId, uint256 amountStaked, uint256 amountConvertible, uint256 lockDuration, uint256 priceEntry, uint256 priceConversion, uint256 fixedInterestPerSecond)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
VariablesUpdated
event VariablesUpdated(uint256 minConversionPremium, uint256 maxConversionPremium, uint256 minFixedInterestRate, uint256 maxFixedInterestRate, uint256 supplyCap, uint256 debtCap)
errors
ERC721EnumerableForbiddenBatchMint
error ERC721EnumerableForbiddenBatchMint()
ERC721IncorrectOwner
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner)
ERC721InsufficientApproval
error ERC721InsufficientApproval(address operator, uint256 tokenId)
ERC721InvalidApprover
error ERC721InvalidApprover(address approver)
ERC721InvalidOperator
error ERC721InvalidOperator(address operator)
ERC721InvalidOwner
error ERC721InvalidOwner(address owner)
ERC721InvalidReceiver
error ERC721InvalidReceiver(address receiver)
ERC721InvalidSender
error ERC721InvalidSender(address sender)
ERC721NonexistentToken
error ERC721NonexistentToken(uint256 tokenId)
ERC721OutOfBoundsIndex
error ERC721OutOfBoundsIndex(address owner, uint256 index)
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
creation bytecode
0x60e0604052630784ce0060805262278d0060a0526201518060c05234801561002657600080fd5b5060805160a05160c0516149386100806000396000818161050e01528181612e1c01526132f201526000818161059601526119d401526000818161049301528181611843015281816119ff015261305601526149386000f3fe608060405234801561001057600080fd5b50600436106102ff5760003560e01c806370a082311161019c5780639b23e5a5116100ee578063bf7e214f11610097578063db006a7511610071578063db006a751461077e578063e985e9c514610791578063eaa05002146107ec57600080fd5b8063bf7e214f1461074f578063c1292cc314610762578063c87b56dd1461076b57600080fd5b8063b0b0b2ca116100c8578063b0b0b2ca146106d5578063b88d4fde146106e8578063be45a26f146106fb57600080fd5b80639b23e5a51461069c578063a22cb465146106af578063a3908e1b146106c257600080fd5b8063817b1cd2116101505780639043292a1161012a5780639043292a1461060d57806395d89b411461062057806399fbab881461062857600080fd5b8063817b1cd2146105de57806383d998ae146105e757806386c31624146105fa57600080fd5b806378b4330f1161018157806378b4330f146105915780637a9e5e4b146105b85780637dc0d1d0146105cb57600080fd5b806370a08231146105435780637628a37d1461055657600080fd5b80632e1c4c30116102555780634f1bfc9e116102095780635bcbbdda116101e35780635bcbbdda146104f65780635dc565c2146105095780636352211e1461053057600080fd5b80634f1bfc9e1461048e5780634f6ccce7146104b55780635883f032146104c857600080fd5b80632f745c591161023a5780632f745c591461045557806342842e0e146104685780634b19becc1461047b57600080fd5b80632e1c4c301461041a5780632eb375ea1461042d57600080fd5b80630f93b45e116102b75780631cff79cd116102915780631cff79cd146103eb57806323b872dd146103fe57806326d8064f1461041157600080fd5b80630f93b45e1461039457806310d39558146103a757806318160ddd146103ba57600080fd5b806306fdde03116102e857806306fdde0314610357578063081812fc1461036c578063095ea7b31461037f57600080fd5b806301ffc9a71461030457806306d378171461032c575b600080fd5b610317610312366004613f97565b6107f5565b60405190151581526020015b60405180910390f35b60015461033f906001600160a01b031681565b6040516001600160a01b039091168152602001610323565b61035f610839565b6040516103239190614004565b61033f61037a366004614017565b6108ef565b61039261038d366004614045565b610937565b005b6103926103a2366004614045565b610946565b6103926103b5366004614071565b610a69565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed02545b604051908152602001610323565b6103926103f9366004614182565b610b8c565b61039261040c3660046141d2565b610ce5565b6103dd60095481565b610392610428366004614213565b610d89565b61044061043b366004614017565b6110b2565b60408051928352602083019190915201610323565b6103dd610463366004614045565b61121f565b6103926104763660046141d2565b6112be565b610392610489366004614327565b6112d9565b6103dd7f000000000000000000000000000000000000000000000000000000000000000081565b6103dd6104c3366004614017565b61174e565b6104db6104d6366004614327565b611803565b60408051938452602084019290925290820152606001610323565b60025461033f906001600160a01b031681565b6103dd7f000000000000000000000000000000000000000000000000000000000000000081565b61033f61053e366004614017565b6118d3565b6103dd610551366004614349565b6118de565b610569610564366004614366565b611965565b604080519586526020860194909452928401919091526060830152608082015260a001610323565b6103dd7f000000000000000000000000000000000000000000000000000000000000000081565b6103926105c6366004614349565b611e2e565b60055461033f906001600160a01b031681565b6103dd60085481565b6103926105f536600461439f565b611ee1565b610440610608366004614017565b611fc3565b60065461033f906001600160a01b031681565b61035f611fd9565b61063b610636366004614017565b61202a565b6040516103239190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b60035461033f906001600160a01b031681565b6103926106bd3660046143e6565b6120e0565b6103926106d0366004614017565b6120eb565b60045461033f906001600160a01b031681565b6103926106f6366004614414565b6125a8565b6107036125c0565b6040516103239190600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b60005461033f906001600160a01b031681565b6103dd60075481565b61035f610779366004614017565b612636565b61039261078c366004614017565b61269e565b61031761079f36600461439f565b6001600160a01b0391821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020908152604080832093909416825291909152205460ff1690565b6103dd600a5481565b60006001600160e01b031982167f780e9d63000000000000000000000000000000000000000000000000000000001480610833575061083382612a11565b92915050565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300805460609190819061086b90614480565b80601f016020809104026020016040519081016040528092919081815260200182805461089790614480565b80156108e45780601f106108b9576101008083540402835291602001916108e4565b820191906000526020600020905b8154815290600101906020018083116108c757829003601f168201915b505050505091505090565b60006108fa82612aac565b5060008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260409020546001600160a01b0316610833565b610942828233612b04565b5050565b600054604051631c86b03760e31b81523360048201526001600160a01b039091169063e43581b890602401602060405180830381865afa15801561098e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b291906144ba565b6109f25760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b6040517f1e60fd14000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b03831690631e60fd1490602401600060405180830381600087803b158015610a4d57600080fd5b505af1158015610a61573d6000803e3d6000fd5b505050505050565b600054604051631c86b03760e31b81523360048201526001600160a01b039091169063e43581b890602401602060405180830381865afa158015610ab1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad591906144ba565b610b105760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064016109e9565b600c869055600d859055600e849055600f839055601082905560118190556040805187815260208101879052908101859052606081018490526080810183905260a081018290527f60eb65fb0b9b991eabd040af33ec3648d4c35b0834e357b884c41d7ac7b95b4b9060c00160405180910390a1505050505050565b600054604051631c86b03760e31b81523360048201526001600160a01b039091169063e43581b890602401602060405180830381865afa158015610bd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf891906144ba565b610c335760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064016109e9565b6000826001600160a01b031682604051610c4d91906144d7565b6000604051808303816000865af19150503d8060008114610c8a576040519150601f19603f3d011682016040523d82523d6000602084013e610c8f565b606091505b5050905080610ce05760405162461bcd60e51b815260206004820152600e60248201527f45786563757465206661696c656400000000000000000000000000000000000060448201526064016109e9565b505050565b6001600160a01b038216610d0f57604051633250574960e11b8152600060048201526024016109e9565b6000610d1c838333612b11565b9050836001600160a01b0316816001600160a01b031614610d83576040517f64283d7b0000000000000000000000000000000000000000000000000000000081526001600160a01b03808616600483015260248201849052821660448201526064016109e9565b50505050565b60026000610d95612cd9565b805490915068010000000000000000900460ff1680610dc25750805467ffffffffffffffff808416911610155b15610df9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80547fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001667ffffffffffffffff83161768010000000000000000178155604080518082018252601081527f525a5220436f6e7665727469626c6573000000000000000000000000000000006020808301919091528251808401909352600883527f63525a522d504f5300000000000000000000000000000000000000000000000090830152610ea791612d02565b610eaf612d14565b610eb884611ed5565b6001805473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b038d81169182179093556002805483168d85161790556003805483168c85161790556004805483168b85161781556005805484168b86161790556006805490931693891693909317909155604080517f313ce5670000000000000000000000000000000000000000000000000000000081529051919263313ce5679282820192602092908290030181865afa158015610f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9d91906144f3565b610fa890601261452c565b610fb390600a61462c565b600a558251600c556020830151600d556040830151600e556060830151600f55608083015160105560a08301516011556000610ff6670de0b6b3a7640000612d26565b116110435760405162461bcd60e51b815260206004820152600d60248201527f496e76616c69642070726963650000000000000000000000000000000000000060448201526064016109e9565b80547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16815560405167ffffffffffffffff831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050505050565b6000806110bd612e97565b6000838152600b602052604090206110d484612f18565b9093509150826111265760405162461bcd60e51b815260206004820152601460248201527f4e6f20696e74657265737420746f20636c61696d00000000000000000000000060448201526064016109e9565b600381018290556001546001600160a01b031663a9059cbb611147866118d3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018690526044016020604051808303816000875af1158015611194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b891906144ba565b50604051838152849033907fd97872e737006a28639b9771e8c5b348e8bc19f39f0e0ad43ed2c997d03cd70d9060200160405180910390a35061121a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b915091565b60007f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0061124b846118de565b8310611295576040517fa57d13dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602481018490526044016109e9565b6001600160a01b0384166000908152602091825260408082208583529092522054905092915050565b610ce0838383604051806020016040528060008152506125a8565b6112e1612e97565b81336112ec826118d3565b6001600160a01b031614806113505750611350611308826118d3565b6001600160a01b031660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020908152604080832033845290915290205460ff1690565b61139c5760405162461bcd60e51b815260206004820152601560248201527f4e6f74206f776e6572206f7220617070726f766564000000000000000000000060448201526064016109e9565b6000821180156113b35750670de0b6b3a764000082105b6113ff5760405162461bcd60e51b815260206004820152601260248201527f496e76616c69642070657263656e74616765000000000000000000000000000060448201526064016109e9565b6000838152600b60205260409020805461145b5760405162461bcd60e51b815260206004820152601760248201527f506f736974696f6e20646f6573206e6f7420657869737400000000000000000060448201526064016109e9565b6000670de0b6b3a7640000848360000154611476919061463b565b6114809190614652565b90506000670de0b6b3a764000085846001015461149d919061463b565b6114a79190614652565b90506000670de0b6b3a76400008685600301546114c4919061463b565b6114ce9190614652565b9050600083116115205760405162461bcd60e51b815260206004820152601660248201527f53706c697420616d6f756e7420746f6f20736d616c6c0000000000000000000060448201526064016109e9565b8354600090611530908590614674565b1161157d5760405162461bcd60e51b815260206004820152601a60248201527f52656d61696e696e6720616d6f756e7420746f6f20736d616c6c00000000000060448201526064016109e9565b828460000160008282546115919190614674565b92505081905550818460010160008282546115ac9190614674565b92505081905550808460030160008282546115c79190614674565b9250508190555060006007600081546115df90614687565b9190508190559050604051806101000160405280858152602001848152602001866002015481526020018381526020018660040154815260200186600501548152602001866006015481526020018660070154815250600b6000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701559050506116a53382612fd4565b8088336001600160a01b03167f6fb14f6bc1a46b8f424db186bf6108da21b526ade6cb46536ddf3ef2b513583e8789600001546116e291906146a1565b88888b600101546116f391906146a1565b6040805193845260208401929092529082015260608101889052608081018c905260a00160405180910390a450505050505061094260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60007f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed006117997f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed025490565b83106117db576040517fa57d13dc00000000000000000000000000000000000000000000000000000000815260006004820152602481018490526044016109e9565b8060020183815481106117f0576117f06146b4565b9060005260206000200154915050919050565b600080600080600a5486611817919061463b565b9050600061182c670de0b6b3a7640000612d26565b600d54600c5491925060009161186c91906118678a7f0000000000000000000000000000000000000000000000000000000000000000614674565b613052565b9050670de0b6b3a764000061188182826146a1565b61188b908461463b565b6118959190614652565b9550856118aa84670de0b6b3a764000061463b565b6118b49190614652565b600f54600e549196506118c79189613052565b93505050509250925092565b600061083382612aac565b60007f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793006001600160a01b038316611944576040517f89c62b64000000000000000000000000000000000000000000000000000000008152600060048201526024016109e9565b6001600160a01b039092166000908152600390920160205250604090205490565b6000806000806000611975612e97565b600061198089612d26565b9050600089116119d25760405162461bcd60e51b815260206004820152600e60248201527f496e76616c696420616d6f756e7400000000000000000000000000000000000060448201526064016109e9565b7f00000000000000000000000000000000000000000000000000000000000000008810158015611a2257507f00000000000000000000000000000000000000000000000000000000000000008811155b611a6e5760405162461bcd60e51b815260206004820152601560248201527f496e76616c6964206c6f636b206475726174696f6e000000000000000000000060448201526064016109e9565b611a788989611803565b6001546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018e90529398509196509450600093506001600160a01b0316906323b872dd906064016020604051808303816000875af1158015611af2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1691906144ba565b506040518061010001604052808a81526020018581526020018481526020016000815260200189815260200142815260200186815260200182815250600b6000600760008154611b6590614687565b918290555081526020808201929092526040908101600020835181559183015160018301558201516002820155606082015160038201556080820151600482015560a0820151600582015560c0820151600682015560e09091015160079182015554611bd2908890612fd4565b8860086000828254611be491906146a1565b925050819055508360096000828254611bfd91906146a1565b9091555050601154600854111580611c155750601154155b611c615760405162461bcd60e51b815260206004820152601060248201527f446562742063617020726561636865640000000000000000000000000000000060448201526064016109e9565b601054600954111580611c745750601054155b611cc05760405162461bcd60e51b815260206004820152601260248201527f537570706c79206361702072656163686564000000000000000000000000000060448201526064016109e9565b6003546040516340c10f1960e01b81526001600160a01b038981166004830152602482018c9052909116906340c10f1990604401600060405180830381600087803b158015611d0e57600080fd5b505af1158015611d22573d6000803e3d6000fd5b5050600480546040516340c10f1960e01b81526001600160a01b038c81169382019390935260248101899052911692506340c10f199150604401600060405180830381600087803b158015611d7657600080fd5b505af1158015611d8a573d6000803e3d6000fd5b5050600754604080518d8152602081018990529081018c9052606081018590526080810189905260a081018790529092506001600160a01b038a1691507f65e30a25cf4fa69f5b3c0c90ce490ccd66468c3a85256f7451eadc615eee35ba9060c00160405180910390a3600754955050611e2360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b939792965093509350565b600054604051631c86b03760e31b81523360048201526001600160a01b039091169063e43581b890602401602060405180830381865afa158015611e76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9a91906144ba565b611ed55760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064016109e9565b611ede816130a6565b50565b600054604051631c86b03760e31b81523360048201526001600160a01b039091169063e43581b890602401602060405180830381865afa158015611f29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4d91906144ba565b611f885760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064016109e9565b600580546001600160a01b0393841673ffffffffffffffffffffffffffffffffffffffff199182161790915560068054929093169116179055565b600080611fcf83612f18565b9094909350915050565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930180546060917f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793009161086b90614480565b61207260405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600b6020908152604091829020825161010081018452815481526001820154928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b6109423383836130fb565b6120f3612e97565b80336120fe826118d3565b6001600160a01b0316148061211a575061211a611308826118d3565b6121665760405162461bcd60e51b815260206004820152601560248201527f4e6f74206f776e6572206f7220617070726f766564000000000000000000000060448201526064016109e9565b6000828152600b602052604081209061217d6131f5565b82549091506121ce5760405162461bcd60e51b815260206004820152601760248201527f506f736974696f6e20646f6573206e6f7420657869737400000000000000000060448201526064016109e9565b62093a808260050154426121e29190614674565b10156122305760405162461bcd60e51b815260206004820152601660248201527f4e6f7420656e6f7567682074696d65207061737365640000000000000000000060448201526064016109e9565b816006015481116122835760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420636f6e76657273696f6e207072696365000000000000000060448201526064016109e9565b815460018301546122938661336c565b6000868152600b60205260408120818155600181018290556002810182905560038101829055600481018290556005810182905560068101829055600701819055600880548492906122e6908490614674565b9250508190555080600960008282546122ff9190614674565b9091555050600154600054604080517f61d027b300000000000000000000000000000000000000000000000000000000815290516001600160a01b039384169363a9059cbb9316916361d027b39160048083019260209291908290030181865afa158015612371573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239591906146ca565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044016020604051808303816000875af11580156123e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240691906144ba565b50600354604051632770a7eb60e21b8152336004820152602481018490526001600160a01b0390911690639dc29fac90604401600060405180830381600087803b15801561245357600080fd5b505af1158015612467573d6000803e3d6000fd5b50506002546040516340c10f1960e01b8152336004820152602481018590526001600160a01b0390911692506340c10f199150604401600060405180830381600087803b1580156124b757600080fd5b505af11580156124cb573d6000803e3d6000fd5b505060048054604051632770a7eb60e21b81523392810192909252602482018590526001600160a01b03169250639dc29fac9150604401600060405180830381600087803b15801561251c57600080fd5b505af1158015612530573d6000803e3d6000fd5b505060408051858152602081018590529081018690528892503391507f80aaefaf59d70d6ed6ecae25018f99e73b43f7dc60af403d422b060c6c1df02c906060015b60405180910390a35050505050611ede60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6125b3848484610ce5565b610d8333858585856133a7565b6125f96040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506040805160c081018252600c548152600d546020820152600e5491810191909152600f546060820152601054608082015260115460a082015290565b606061264182612aac565b50600061264c613502565b9050600081511161266c5760405180602001604052806000815250612697565b8061267684613522565b6040516020016126879291906146e7565b6040516020818303038152906040525b9392505050565b6126a6612e97565b80336126b1826118d3565b6001600160a01b031614806126cd57506126cd611308826118d3565b6127195760405162461bcd60e51b815260206004820152601560248201527f4e6f74206f776e6572206f7220617070726f766564000000000000000000000060448201526064016109e9565b6000828152600b602052604090206004810154600582015461273b9042614674565b10156127895760405162461bcd60e51b815260206004820152601660248201527f4e6f7420656e6f7567682074696d65207061737365640000000000000000000060448201526064016109e9565b80546127d75760405162461bcd60e51b815260206004820152601760248201527f506f736974696f6e20646f6573206e6f7420657869737400000000000000000060448201526064016109e9565b805460018201546002830154600584015460048501546000926127fe9286924291906135c0565b90506128098661336c565b6000868152600b602052604081208181556001810182905560028101829055600381018290556004810182905560058101829055600681018290556007018190556008805485929061285c908490614674565b9250508190555081600960008282546128759190614674565b90915550506001546001600160a01b031663a9059cbb3361289684876146a1565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156128e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061290591906144ba565b50600354604051632770a7eb60e21b8152336004820152602481018590526001600160a01b0390911690639dc29fac90604401600060405180830381600087803b15801561295257600080fd5b505af1158015612966573d6000803e3d6000fd5b505060048054604051632770a7eb60e21b81523392810192909252602482018690526001600160a01b03169250639dc29fac9150604401600060405180830381600087803b1580156129b757600080fd5b505af11580156129cb573d6000803e3d6000fd5b505060408051868152602081018690529081018490528892503391507f76cd0cedf979345ca241ce6de696a520a8efc860c6c10d9db2a7953307c237fc90606001612572565b60006001600160e01b031982167f80ac58cd000000000000000000000000000000000000000000000000000000001480612a7457506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061083357507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b0319831614610833565b60008181527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260408120546001600160a01b03168061083357604051637e27328960e01b8152600481018490526024016109e9565b610ce083838360016136a8565b6000612b1e848484613834565b90506001600160a01b03811615801590612b4057506001600160a01b03841615155b15612697576000838152600b6020526040902080546001909101548115612be9576003546040517f161710ef0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301528881166024830152604482018590529091169063161710ef90606401600060405180830381600087803b158015612bd057600080fd5b505af1158015612be4573d6000803e3d6000fd5b505050505b8015612c7957600480546040517f161710ef0000000000000000000000000000000000000000000000000000000081526001600160a01b038681169382019390935288831660248201526044810184905291169063161710ef90606401600060405180830381600087803b158015612c6057600080fd5b505af1158015612c74573d6000803e3d6000fd5b505050505b84866001600160a01b0316846001600160a01b03167fc908e301a4c77d091f3c2b176f892ca1cd8792a2428bb54cd87a26388f9cd2418585604051612cc8929190918252602082015260400190565b60405180910390a450509392505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610833565b612d0a61393f565b610942828261397d565b612d1c61393f565b612d246139c0565b565b6005546040517f078a4245000000000000000000000000000000000000000000000000000000008152600481018390526000918291829182916001600160a01b039091169063078a424590602401606060405180830381865afa158015612d91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db59190614716565b925092509250826000148015612dcb5750600082115b612e175760405162461bcd60e51b815260206004820152600d60248201527f496e76616c69642070726963650000000000000000000000000000000000000060448201526064016109e9565b612e417f000000000000000000000000000000000000000000000000000000000000000042614674565b8111612e8f5760405162461bcd60e51b815260206004820152600b60248201527f5374616c6520707269636500000000000000000000000000000000000000000060448201526064016109e9565b509392505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612f12576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000818152600b602052604081208054829190612f775760405162461bcd60e51b815260206004820152601760248201527f506f736974696f6e20646f6573206e6f7420657869737400000000000000000060448201526064016109e9565b612f948160000154826002015442846005015485600401546135c0565b9150806003015482612fa69190614674565b925050915091565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6001600160a01b038216612ffe57604051633250574960e11b8152600060048201526024016109e9565b600061300c83836000612b11565b90506001600160a01b03811615610ce0576040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600060048201526024016109e9565b60007f0000000000000000000000000000000000000000000000000000000000000000826130808587614674565b61308a919061463b565b6130949190614652565b61309e90846146a1565b949350505050565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117825560405190917f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad91a250565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793006001600160a01b038316613167576040517f5b08ba180000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016109e9565b6001600160a01b03848116600081815260058401602090815260408083209488168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6006546040517f078a4245000000000000000000000000000000000000000000000000000000008152670de0b6b3a764000060048201526000918291829182916001600160a01b039091169063078a424590602401606060405180830381865afa158015613267573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061328b9190614716565b9250925092508260001480156132a15750600082115b6132ed5760405162461bcd60e51b815260206004820152600d60248201527f496e76616c69642070726963650000000000000000000000000000000000000060448201526064016109e9565b6133177f000000000000000000000000000000000000000000000000000000000000000042614674565b81116133655760405162461bcd60e51b815260206004820152600b60248201527f5374616c6520707269636500000000000000000000000000000000000000000060448201526064016109e9565b5092915050565b600061337b6000836000612b11565b90506001600160a01b03811661094257604051637e27328960e01b8152600481018390526024016109e9565b6001600160a01b0383163b156134fb576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063150b7a0290613402908890889087908790600401614744565b6020604051808303816000875af192505050801561343d575060408051601f3d908101601f1916820190925261343a91810190614785565b60015b6134a6573d80801561346b576040519150601f19603f3d011682016040523d82523d6000602084013e613470565b606091505b50805160000361349e57604051633250574960e11b81526001600160a01b03851660048201526024016109e9565b805181602001fd5b6001600160e01b031981167f150b7a020000000000000000000000000000000000000000000000000000000014610a6157604051633250574960e11b81526001600160a01b03851660048201526024016109e9565b5050505050565b60606040518060600160405280602b81526020016148d8602b9139905090565b6060600061352f836139c8565b600101905060008167ffffffffffffffff81111561354f5761354f6140b4565b6040519080825280601f01601f191660200182016040528015613579576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508415612e8f57613583565b6000806301e13380670de0b6b3a76400006135db888a61463b565b6135e59190614652565b6135ef9190614652565b905060006136066136008688614674565b85613aaa565b90506000613614828461463b565b6001546040517fc6e6f592000000000000000000000000000000000000000000000000000000008152600481018390529192506001600160a01b03169063c6e6f59290602401602060405180830381865afa158015613677573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061369b91906147a2565b9998505050505050505050565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930081806136dd57506001600160a01b03831615155b156137f65760006136ed85612aac565b90506001600160a01b038416158015906137195750836001600160a01b0316816001600160a01b031614155b801561376a57506001600160a01b0380821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079305602090815260408083209388168352929052205460ff16155b156137ac576040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016109e9565b82156137f45784866001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b6000938452600401602052505060409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600080613842858585613ac0565b90506001600160a01b0381166138dd576138d8847f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed02805460008381527f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0360205260408120829055600182018355919091527fa42f15e5d656f8155fd7419d740a6073999f19cd6e061449ce4a257150545bf20155565b613900565b846001600160a01b0316816001600160a01b031614613900576139008185613c0e565b6001600160a01b03851661391c5761391784613cbc565b61309e565b846001600160a01b0316816001600160a01b03161461309e5761309e8585613db7565b613947613e24565b612d24576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61398561393f565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300806139b18482614802565b5060018101610d838382614802565b612fae61393f565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613a11577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310613a3d576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310613a5b57662386f26fc10000830492506010015b6305f5e1008310613a73576305f5e100830492506008015b6127108310613a8757612710830492506004015b60648310613a99576064830492506002015b600a83106108335760010192915050565b6000818310613ab95781612697565b5090919050565b60008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260408120547f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300906001600160a01b0390811690841615613b2e57613b2e818587613e43565b6001600160a01b03811615613b6e57613b4b6000866000806136a8565b6001600160a01b0381166000908152600383016020526040902080546000190190555b6001600160a01b03861615613b9f576001600160a01b03861660009081526003830160205260409020805460010190555b6000858152600283016020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a495945050505050565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed006000613c3a846118de565b60008481526001840160209081526040808320546001600160a01b03891684529186905290912091925090818314613c94576000838152602082815260408083205485845281842081905583526001870190915290208290555b6000948552600190930160209081526040808620869055928552929092528220919091555050565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed02547f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0090600090613d0f90600190614674565b6000848152600384016020526040812054600285018054939450909284908110613d3b57613d3b6146b4565b9060005260206000200154905080846002018381548110613d5e57613d5e6146b4565b600091825260208083209091019290925582815260038601909152604080822084905586825281205560028401805480613d9a57613d9a6148c1565b600190038181906000526020600020016000905590555050505050565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0060006001613de5856118de565b613def9190614674565b6001600160a01b0390941660009081526020838152604080832087845282528083208690559482526001909301909252502055565b6000613e2e612cd9565b5468010000000000000000900460ff16919050565b613e4e838383613ec0565b610ce0576001600160a01b038316613e7c57604051637e27328960e01b8152600481018290526024016109e9565b6040517f177e802f0000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602481018290526044016109e9565b60006001600160a01b0383161580159061309e5750826001600160a01b0316846001600160a01b03161480613f3957506001600160a01b0380851660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079305602090815260408083209387168352929052205460ff165b8061309e57505060009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260409020546001600160a01b03908116911614919050565b6001600160e01b031981168114611ede57600080fd5b600060208284031215613fa957600080fd5b813561269781613f81565b60005b83811015613fcf578181015183820152602001613fb7565b50506000910152565b60008151808452613ff0816020860160208601613fb4565b601f01601f19169290920160200192915050565b6020815260006126976020830184613fd8565b60006020828403121561402957600080fd5b5035919050565b6001600160a01b0381168114611ede57600080fd5b6000806040838503121561405857600080fd5b823561406381614030565b946020939093013593505050565b60008060008060008060c0878903121561408a57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b634e487b7160e01b600052604160045260246000fd5b60405160c0810167ffffffffffffffff811182821017156140ed576140ed6140b4565b60405290565b600082601f83011261410457600080fd5b813567ffffffffffffffff81111561411e5761411e6140b4565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561414d5761414d6140b4565b60405281815283820160200185101561416557600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561419557600080fd5b82356141a081614030565b9150602083013567ffffffffffffffff8111156141bc57600080fd5b6141c8858286016140f3565b9150509250929050565b6000806000606084860312156141e757600080fd5b83356141f281614030565b9250602084013561420281614030565b929592945050506040919091013590565b600080600080600080600080888a036101a081121561423157600080fd5b893561423c81614030565b985060208a013561424c81614030565b975060408a013561425c81614030565b965060608a013561426c81614030565b955060808a013561427c81614030565b945060a08a013561428c81614030565b935060c08a013561429c81614030565b925060c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20820112156142ce57600080fd5b506142d76140ca565b60e08a013581526101008a013560208201526101208a013560408201526101408a013560608201526101608a013560808201526101809099013560a08a0152509598949750929591949093909190565b6000806040838503121561433a57600080fd5b50508035926020909101359150565b60006020828403121561435b57600080fd5b813561269781614030565b60008060006060848603121561437b57600080fd5b8335925060208401359150604084013561439481614030565b809150509250925092565b600080604083850312156143b257600080fd5b82356143bd81614030565b915060208301356143cd81614030565b809150509250929050565b8015158114611ede57600080fd5b600080604083850312156143f957600080fd5b823561440481614030565b915060208301356143cd816143d8565b6000806000806080858703121561442a57600080fd5b843561443581614030565b9350602085013561444581614030565b925060408501359150606085013567ffffffffffffffff81111561446857600080fd5b614474878288016140f3565b91505092959194509250565b600181811c9082168061449457607f821691505b6020821081036144b457634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156144cc57600080fd5b8151612697816143d8565b600082516144e9818460208701613fb4565b9190910192915050565b60006020828403121561450557600080fd5b815160ff8116811461269757600080fd5b634e487b7160e01b600052601160045260246000fd5b60ff828116828216039081111561083357610833614516565b6001815b60018411156145805780850481111561456457614564614516565b600184161561457257908102905b60019390931c928002614549565b935093915050565b60008261459757506001610833565b816145a457506000610833565b81600181146145ba57600281146145c4576145e0565b6001915050610833565b60ff8411156145d5576145d5614516565b50506001821b610833565b5060208310610133831016604e8410600b8410161715614603575081810a610833565b6146106000198484614545565b806000190482111561462457614624614516565b029392505050565b600061269760ff841683614588565b808202811582820484141761083357610833614516565b60008261466f57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561083357610833614516565b6000600019820361469a5761469a614516565b5060010190565b8082018082111561083357610833614516565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156146dc57600080fd5b815161269781614030565b600083516146f9818460208801613fb4565b83519083019061470d818360208801613fb4565b01949350505050565b60008060006060848603121561472b57600080fd5b5050815160208301516040909301519094929350919050565b6001600160a01b03851681526001600160a01b038416602082015282604082015260806060820152600061477b6080830184613fd8565b9695505050505050565b60006020828403121561479757600080fd5b815161269781613f81565b6000602082840312156147b457600080fd5b5051919050565b601f821115610ce057806000526020600020601f840160051c810160208510156147e25750805b601f840160051c820191505b818110156134fb57600081556001016147ee565b815167ffffffffffffffff81111561481c5761481c6140b4565b6148308161482a8454614480565b846147bb565b6020601f821160018114614864576000831561484c5750848201515b600019600385901b1c1916600184901b1784556134fb565b600084815260208120601f198516915b828110156148945787850151825560209485019460019092019101614874565b50848210156148b25786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052603160045260246000fdfe68747470733a2f2f7572692e72657a657276652e6d6f6e65792f6170692f636f6e7665727469626c65732fa2646970667358221220048afacc7749ccb781d9c7f5ac87c746bbf6eeb1538ec18e90bce11b3b78930464736f6c634300081c0033