Debt Tokens
Debt tokens are interest-accruing tokens that are minted and burned on borrow
and repay
, representing the debt owed by the token holder. There are 2 types of debt tokens:
Stable debt tokens, representing a debt to the protocol with a stable interest rate
Variable debt tokens, representing a debt to the protocol with a variable interest rate
EIP20 Methods
Although debt tokens are modelled on the ERC20/EIP20 standard, they are non-transferrable. Therefore they do not implement any of the standard ERC20/EIP20 functions relating to transfer()
and allowance()
.
balanceOf()
will always return the most up to date accumulated debt of the user.
totalSupply()
will always return the most up to date total debt accrued by all protocol users for that specific type (stable vs variable) of debt token.
Shared Methods
UNDERLYING_ASSET_ADDRESS()
function UNDERLYING_ASSET_ADDRESS()
Returns the underlying asset of the debt token.
POOL()
function POOL()
Returns the address of the associated LendingPool
for the debt token.
approveDelegation**()**
function approveDelegation(address delegatee, uint256 amount)
Sets the amount
of allowance for delegatee
to borrow of a particular debt token.
Used in credit delegation.
delegatee
address
the user receiving the allowance
amount
uint256
the allowance amounts given to user
borrowAllowance**()**
function borrowAllowance(address fromUser, address toUser)
Returns the borrow allowance toUser
has been given by fromUser
.
Used in credit delegation.
fromUser
address
the user giving allowance
toUser
address
the user receiving the allowance
Returns the current allowance of toUser
for a particular debt token.
Stable Debt Methods
getSupplyData**()**
function getSupplyData()
Returns the supply / deposit data for the debt token.
Return values
uint256
principal supply
uint256
total supply
uint256
average borrow rate
uint40
timestamp for last supply update
getTotalSupplyAndAvgRate**()**
function getTotalSupplyAndAvgRate()
Returns the total supply and average stable rate of the token.
Return values
uint256
total supply
uint256
average stable rate
principalBalanceOf()
function principalBalanceOf(address user)
Returns the principal debt balance of the user
.
getUserLastUpdated**()**
function getUserLastUpdated(address user)
Returns the timestamp of the last action taken by user
as uint40
.
getAverageStableRate**()**
function getAverageStableRate()
Returns the average stable rate across all the stable rate debt in the protocol as uint256
.
getUserStableRate**()**
function getUserStableRate(address user)
Returns the stable rate of user
as uint256
.
Variable Debt Methods
scaledBalanceOf**()**
function scaledBalanceOf(address user)
Returns the principal debt balance of user
.
scaledTotalSupply**()**
function scaledTotalSupply()
Returns the scaled total supply of the variable debt token.
This represents sum(borrows/index) .
getScaledUserBalanceAndSupply**()**
function getScaledUserBalanceAndSupply(address user)
Returns the principal balance of the user
and principal total supply.
Return values
uint256
principal balance of user
uint256
principal total supply
ABI
StableDebtToken ABI
{
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "fromUser",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "toUser",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "BorrowAllowanceDelegated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "currentBalance",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "balanceIncrease",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "avgStableRate",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newTotalSupply",
"type": "uint256"
}
],
"name": "Burn",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint8",
"name": "version",
"type": "uint8"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "underlyingCollateral",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "underlyingAsset",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "pool",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "incentivesController",
"type": "address"
},
{
"indexed": false,
"internalType": "uint8",
"name": "debtTokenDecimals",
"type": "uint8"
},
{
"indexed": false,
"internalType": "string",
"name": "debtTokenName",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "debtTokenSymbol",
"type": "string"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "onBehalfOf",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "currentBalance",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "balanceIncrease",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newRate",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "avgStableRate",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newTotalSupply",
"type": "uint256"
}
],
"name": "Mint",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [],
"name": "POOL",
"outputs": [
{
"internalType": "contract ILendingPool",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UNDERLYING_ASSET_ADDRESS",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "delegatee",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approveDelegation",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "fromUser",
"type": "address"
},
{
"internalType": "address",
"name": "toUser",
"type": "address"
}
],
"name": "borrowAllowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "burn",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "subtractedValue",
"type": "uint256"
}
],
"name": "decreaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getAverageStableRate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getPoolIncentivesController",
"outputs": [
{
"internalType": "contract IPoolIncentivesController",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getSupplyData",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint40",
"name": "",
"type": "uint40"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getTotalSupplyAndAvgRate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getTotalSupplyLastUpdated",
"outputs": [
{
"internalType": "uint40",
"name": "",
"type": "uint40"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "getUserLastUpdated",
"outputs": [
{
"internalType": "uint40",
"name": "",
"type": "uint40"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "getUserStableRate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "addedValue",
"type": "uint256"
}
],
"name": "increaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "addressProvider",
"type": "address"
},
{
"internalType": "address",
"name": "underlyingCollateral",
"type": "address"
},
{
"internalType": "address",
"name": "underlyingAsset",
"type": "address"
},
{
"internalType": "uint256",
"name": "underlyingMaxTokenId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "underlyingMinTokenId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "debtTokenDecimals",
"type": "uint8"
},
{
"internalType": "string",
"name": "debtTokenName",
"type": "string"
},
{
"internalType": "string",
"name": "debtTokenSymbol",
"type": "string"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "address",
"name": "onBehalfOf",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "rate",
"type": "uint256"
}
],
"name": "mint",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "principalBalanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": {
"object": "0x608060405234801561001057600080fd5b5061001961001e565b6100de565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100dc576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b611df1806100ed6000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806390f6fcf2116100de578063b3f1c93d11610097578063dd62ed3e11610071578063dd62ed3e14610378578063e748489014610386578063e78c9b3b14610395578063f731e9be146103be57600080fd5b8063b3f1c93d1461033f578063c04a8a1014610352578063c634dfaa1461036557600080fd5b806390f6fcf2146102fd57806395d89b41146103055780639dc29fac1461030d578063a457c2d714610247578063a9059cbb14610320578063b16a19de1461032e57600080fd5b8063313ce5671161014b57806370a082311161012557806370a082311461026d5780637535d24614610280578063797743381461028857806379ce6b8c146102b757600080fd5b8063313ce5671461023257806339509351146102475780636bd76d241461025a57600080fd5b806306fdde0314610193578063095ea7b3146101b157806318160ddd146101d457806319ef9268146101ea5780631e5fa51f1461020a57806323b872dd1461021f575b600080fd5b61019b6103db565b6040516101a89190611885565b60405180910390f35b6101c46101bf3660046118b0565b61046d565b60405190151581526020016101a8565b6101dc6104b6565b6040519081526020016101a8565b6101f26104c8565b6040516001600160a01b0390911681526020016101a8565b61021d61021836600461197f565b6104d2565b005b6101c461022d366004611a47565b61069e565b60655460405160ff90911681526020016101a8565b6101c46102553660046118b0565b6106e2565b6101dc610268366004611a88565b61072d565b6101dc61027b366004611ac1565b61075a565b6101f26107d3565b6102906107dd565b6040805194855260208501939093529183015264ffffffffff1660608201526080016101a8565b6102e76102c5366004611ac1565b6001600160a01b03166000908152606d602052604090205464ffffffffff1690565b60405164ffffffffff90911681526020016101a8565b606c546101dc565b61019b610814565b61021d61031b3660046118b0565b610823565b6101c461022d3660046118b0565b6069546001600160a01b03166101f2565b6101c461034d366004611ade565b610af7565b61021d6103603660046118b0565b610e9c565b6101dc610373366004611ac1565b610f13565b6101dc610255366004611a88565b606f5464ffffffffff166102e7565b6101dc6103a3366004611ac1565b6001600160a01b03166000908152606e602052604090205490565b6103c6610f1e565b604080519283526020830191909152016101a8565b6060603680546103ea90611b24565b80601f016020809104026020016040519081016040528092919081815260200182805461041690611b24565b80156104635780601f1061043857610100808354040283529160200191610463565b820191906000526020600020905b81548152906001019060200180831161044657829003601f168201915b5050505050905090565b60405162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b60448201526000906064015b60405180910390fd5b60006104c3606c54610f37565b905090565b60006104c3610f82565b600054610100900460ff16158080156104f25750600054600160ff909116105b8061050c5750303b15801561050c575060005460ff166001145b61056f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104ad565b6000805460ff191660011790558015610592576000805461ff0019166101001790555b61059d838386610ff0565b606780546001600160a01b03808c166001600160a01b031992831617909255606880548b841690831617905560698054928a1692909116919091179055606a869055606b8590556105ec611012565b6001600160a01b0316876001600160a01b0316896001600160a01b03167fd59b5facb5e38ab634162423aec2545750f69daf91fe145954e2a2b449597d4c610632610f82565b8888886040516106459493929190611b5e565b60405180910390a48015610693576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b60405162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b60448201526000906064016104ad565b60405162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f5254454400000000000000000060448201526000906064016104ad565b6001600160a01b038083166000908152606660209081526040808320938516835292905220545b92915050565b6000806107668361105c565b6001600160a01b0384166000908152606e6020526040812054919250829003610793575060009392505050565b6001600160a01b0384166000908152606d60205260408120546107be90839064ffffffffff16611077565b90506107ca83826110bd565b95945050505050565b60006104c3611012565b6000806000806000606c5490506107f360355490565b6107fc82610f37565b606f54919790965091945064ffffffffff1692509050565b6060603780546103ea90611b24565b61082b611012565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b815250906108795760405162461bcd60e51b81526004016104ad9190611885565b5060008061088684611100565b925092505060006108956104b6565b6001600160a01b0386166000908152606e60205260408120549192509081908684116108c5576000606c5561093d565b6108cf848861115c565b915060006108e86108df86611168565b606c54906110bd565b905060006108ff6108f88a611168565b84906110bd565b9050818110610916576000606c819055945061093a565b61093261092285611168565b61092c848461115c565b90611178565b606c81905594505b50505b85870361097a576001600160a01b0388166000908152606e60209081526040808320839055606d9091529020805464ffffffffff191690556109a8565b6001600160a01b0388166000908152606d60205260409020805464ffffffffff19164264ffffffffff161790555b606f805464ffffffffff19164264ffffffffff1617905586851115610a495760006109d3868961115c565b90506109e08982876111ac565b6040805182815260208101899052908101879052606081018390526080810185905260a081018490526001600160a01b038a169081907fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f9060c00160405180910390a350610abe565b6000610a55888761115c565b9050610a6289828761124a565b604080518281526020810189905290810187905260608101859052608081018490526001600160a01b038a16907f44bd20a79e993bdcc7cbedf54a3b4d19fb78490124b6b90d04fe3242eea579e89060a00160405180910390a2505b6040518781526000906001600160a01b038a1690600080516020611d9c8339815191529060200160405180910390a35050505050505050565b6000610b01611012565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b81525090610b4f5760405162461bcd60e51b81526004016104ad9190611885565b50610b826040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b846001600160a01b0316866001600160a01b031614158015610c2c5750606760009054906101000a90046001600160a01b03166001600160a01b03166377532ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c169190611ba8565b6001600160a01b0316866001600160a01b031614155b15610c3c57610c3c8587866112a0565b600080610c4887611100565b9250925050610c556104b6565b808452606c546080850152610c6a90876113c0565b6020840152610c7886611168565b6040840152610cd6610c92610c8d84896113c0565b611168565b604085015161092c90610ca590896110bd565b610cd0610cb187611168565b6001600160a01b038d166000908152606e6020526040902054906110bd565b906113c0565b6060840181905260408051808201909152600381526234383560e81b6020820152906fffffffffffffffffffffffffffffffff1015610d285760405162461bcd60e51b81526004016104ad9190611885565b5060608301516001600160a01b0388166000908152606e6020908152604080832093909355606d8152919020805464ffffffffff421664ffffffffff199182168117909255606f80549091169091179055830151610dbe90610d8990611168565b61092c610da38660400151896110bd90919063ffffffff16565b610cd0610db38860000151611168565b6080890151906110bd565b606c8190556080840152610ddd87610dd688846113c0565b85516111ac565b6040518681526001600160a01b03881690600090600080516020611d9c8339815191529060200160405180910390a3866001600160a01b0316886001600160a01b03167fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f888585886060015189608001518a60200151604051610e8896959493929190958652602086019490945260408501929092526060840152608083015260a082015260c00190565b60405180910390a350159695505050505050565b3360008181526066602090815260408083206001600160a01b038781168086529190935292208490556069549192917fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e19116604080516001600160a01b039092168252602082018690520160405180910390a35050565b60006107548261105c565b606c546000908190610f2f81610f37565b939092509050565b600080610f4360355490565b905080600003610f565750600092915050565b606f54600090610f6e90859064ffffffffff166113cc565b9050610f7a82826110bd565b949350505050565b6067546040805163033df24d60e31b815290516000926001600160a01b0316916319ef92689160048083019260209291908290030181865afa158015610fcc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c39190611ba8565b610ffa83836113d9565b6065805460ff191660ff929092169190911790555050565b60675460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b9160048083019260209291908290030181865afa158015610fcc573d6000803e3d6000fd5b6001600160a01b031660009081526033602052604090205490565b60008061108b64ffffffffff841642611bdb565b90506b033b2e3c9fd0803ce80000006301e133806110a98387611bee565b6110b39190611c0d565b610f7a9190611c2f565b60006110f96b033b2e3c9fd0803ce80000006110f36110dc868661140e565b610cd060026b033b2e3c9fd0803ce8000000611c0d565b9061141a565b9392505050565b60008060008061110f8561105c565b90508060000361112a57600080600093509350935050611155565b600061113f826111398861075a565b9061115c565b90508161114c81836113c0565b90955093509150505b9193909250565b60006110f98284611bdb565b600061075482633b9aca0061140e565b600080611186600284611c0d565b9050610f7a836110f36111a5876b033b2e3c9fd0803ce800000061140e565b84906113c0565b60006111b78461105c565b90506111c38484611426565b60006111cd610f82565b90506001600160a01b03811615611243576040516318c39f1760e11b81526001600160a01b03868116600483015260248201859052604482018490528216906331873e2e90606401600060405180830381600087803b15801561122f57600080fd5b505af1158015610693573d6000803e3d6000fd5b5050505050565b60006112558461105c565b905082811015604051806040016040528060038152602001621a1c1b60e91b815250906112955760405162461bcd60e51b81526004016104ad9190611885565b506111c384846114dc565b6001600160a01b038084166000908152606660209081526040808320938616835292815290829020548251808401909352600383526235303360e81b918301919091528211156113035760405162461bcd60e51b81526004016104ad9190611885565b506001600160a01b038084166000908152606660209081526040808320938616835292905290812054611337908390611bdb565b6001600160a01b038086166000818152606660209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e16113996069546001600160a01b031690565b604080516001600160a01b039092168252602082018690520160405180910390a350505050565b60006110f98284611c2f565b60006110f9838342611500565b600054610100900460ff166114005760405162461bcd60e51b81526004016104ad90611c42565b61140a8282611629565b5050565b60006110f98284611bee565b60006110f98284611c0d565b600061143160355490565b9050600061143e8461105c565b905061144a848461166e565b6000611454610f82565b6001600160a01b0316146114d65761146a610f82565b6040516318c39f1760e11b81526001600160a01b038681166004830152602482018590526044820184905291909116906331873e2e90606401600060405180830381600087803b1580156114bd57600080fd5b505af11580156114d1573d6000803e3d6000fd5b505050505b50505050565b60006114e760355490565b905060006114f48461105c565b905061144a848461171d565b60008061151464ffffffffff851684611bdb565b905080600003611533576b033b2e3c9fd0803ce80000009150506110f9565b6000611540600183611bdb565b905060006002831161155357600061155e565b61155e600284611bdb565b905060006115706301e1338089611c0d565b9050600061157e82806110bd565b9050600061158c82846110bd565b9050600060028361159d888a611bee565b6115a79190611bee565b6115b19190611c0d565b90506000600683876115c38a8c611bee565b6115cd9190611bee565b6115d79190611bee565b6115e19190611c0d565b905080826115ef8a88611bee565b611605906b033b2e3c9fd0803ce8000000611c2f565b61160f9190611c2f565b6116199190611c2f565b9c9b505050505050505050505050565b600054610100900460ff166116505760405162461bcd60e51b81526004016104ad90611c42565b603661165c8382611cdb565b5060376116698282611cdb565b505050565b6001600160a01b0382166116c45760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104ad565b80603560008282546116d69190611c2f565b90915550506001600160a01b038216600081815260336020908152604080832080548601905551848152600080516020611d9c833981519152910160405180910390a35050565b6001600160a01b03821661177d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104ad565b6001600160a01b038216600090815260336020526040902054818110156117f15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104ad565b6001600160a01b0383166000818152603360209081526040808320868603905560358054879003905551858152919291600080516020611d9c833981519152910160405180910390a3505050565b6000815180845260005b8181101561186557602081850181015186830182015201611849565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006110f9602083018461183f565b6001600160a01b03811681146118ad57600080fd5b50565b600080604083850312156118c357600080fd5b82356118ce81611898565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261190357600080fd5b813567ffffffffffffffff8082111561191e5761191e6118dc565b604051601f8301601f19908116603f01168101908282118183101715611946576119466118dc565b8160405283815286602085880101111561195f57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600080600080610100898b03121561199c57600080fd5b88356119a781611898565b975060208901356119b781611898565b965060408901356119c781611898565b9550606089013594506080890135935060a089013560ff811681146119eb57600080fd5b925060c089013567ffffffffffffffff80821115611a0857600080fd5b611a148c838d016118f2565b935060e08b0135915080821115611a2a57600080fd5b50611a378b828c016118f2565b9150509295985092959890939650565b600080600060608486031215611a5c57600080fd5b8335611a6781611898565b92506020840135611a7781611898565b929592945050506040919091013590565b60008060408385031215611a9b57600080fd5b8235611aa681611898565b91506020830135611ab681611898565b809150509250929050565b600060208284031215611ad357600080fd5b81356110f981611898565b60008060008060808587031215611af457600080fd5b8435611aff81611898565b93506020850135611b0f81611898565b93969395505050506040820135916060013590565b600181811c90821680611b3857607f821691505b602082108103611b5857634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b038516815260ff84166020820152608060408201819052600090611b8b9083018561183f565b8281036060840152611b9d818561183f565b979650505050505050565b600060208284031215611bba57600080fd5b81516110f981611898565b634e487b7160e01b600052601160045260246000fd5b8181038181111561075457610754611bc5565b6000816000190483118215151615611c0857611c08611bc5565b500290565b600082611c2a57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561075457610754611bc5565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b601f82111561166957600081815260208120601f850160051c81016020861015611cb45750805b601f850160051c820191505b81811015611cd357828155600101611cc0565b505050505050565b815167ffffffffffffffff811115611cf557611cf56118dc565b611d0981611d038454611b24565b84611c8d565b602080601f831160018114611d3e5760008415611d265750858301515b600019600386901b1c1916600185901b178555611cd3565b600085815260208120601f198616915b82811015611d6d57888601518255948401946001909101908401611d4e565b5085821015611d8b5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212204f5f21f5925202fd57687ffc69e6cc118f51001ebb99222cf0b10110cd3e90ee64736f6c63430008100033",
"sourceMap": "1327:15512:160:-:0;;;1948:55;;;;;;;;;-1:-1:-1;1973:22:160;:20;:22::i;:::-;1327:15512;;5928:279:18;5996:13;;;;;;;5995:14;5987:66;;;;-1:-1:-1;;;5987:66:18;;216:2:187;5987:66:18;;;198:21:187;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:187;;;338:37;392:19;;5987:66:18;;;;;;;;6067:12;;6082:15;6067:12;;;:30;6063:138;;;6113:12;:30;;-1:-1:-1;;6113:30:18;6128:15;6113:30;;;;;;6162:28;;564:36:187;;;6162:28:18;;552:2:187;537:18;6162:28:18;;;;;;;6063:138;5928:279::o;422:184:187:-;1327:15512:160;;;;;;",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x608060405234801561001057600080fd5b506004361061018e5760003560e01c806390f6fcf2116100de578063b3f1c93d11610097578063dd62ed3e11610071578063dd62ed3e14610378578063e748489014610386578063e78c9b3b14610395578063f731e9be146103be57600080fd5b8063b3f1c93d1461033f578063c04a8a1014610352578063c634dfaa1461036557600080fd5b806390f6fcf2146102fd57806395d89b41146103055780639dc29fac1461030d578063a457c2d714610247578063a9059cbb14610320578063b16a19de1461032e57600080fd5b8063313ce5671161014b57806370a082311161012557806370a082311461026d5780637535d24614610280578063797743381461028857806379ce6b8c146102b757600080fd5b8063313ce5671461023257806339509351146102475780636bd76d241461025a57600080fd5b806306fdde0314610193578063095ea7b3146101b157806318160ddd146101d457806319ef9268146101ea5780631e5fa51f1461020a57806323b872dd1461021f575b600080fd5b61019b6103db565b6040516101a89190611885565b60405180910390f35b6101c46101bf3660046118b0565b61046d565b60405190151581526020016101a8565b6101dc6104b6565b6040519081526020016101a8565b6101f26104c8565b6040516001600160a01b0390911681526020016101a8565b61021d61021836600461197f565b6104d2565b005b6101c461022d366004611a47565b61069e565b60655460405160ff90911681526020016101a8565b6101c46102553660046118b0565b6106e2565b6101dc610268366004611a88565b61072d565b6101dc61027b366004611ac1565b61075a565b6101f26107d3565b6102906107dd565b6040805194855260208501939093529183015264ffffffffff1660608201526080016101a8565b6102e76102c5366004611ac1565b6001600160a01b03166000908152606d602052604090205464ffffffffff1690565b60405164ffffffffff90911681526020016101a8565b606c546101dc565b61019b610814565b61021d61031b3660046118b0565b610823565b6101c461022d3660046118b0565b6069546001600160a01b03166101f2565b6101c461034d366004611ade565b610af7565b61021d6103603660046118b0565b610e9c565b6101dc610373366004611ac1565b610f13565b6101dc610255366004611a88565b606f5464ffffffffff166102e7565b6101dc6103a3366004611ac1565b6001600160a01b03166000908152606e602052604090205490565b6103c6610f1e565b604080519283526020830191909152016101a8565b6060603680546103ea90611b24565b80601f016020809104026020016040519081016040528092919081815260200182805461041690611b24565b80156104635780601f1061043857610100808354040283529160200191610463565b820191906000526020600020905b81548152906001019060200180831161044657829003601f168201915b5050505050905090565b60405162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b60448201526000906064015b60405180910390fd5b60006104c3606c54610f37565b905090565b60006104c3610f82565b600054610100900460ff16158080156104f25750600054600160ff909116105b8061050c5750303b15801561050c575060005460ff166001145b61056f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104ad565b6000805460ff191660011790558015610592576000805461ff0019166101001790555b61059d838386610ff0565b606780546001600160a01b03808c166001600160a01b031992831617909255606880548b841690831617905560698054928a1692909116919091179055606a869055606b8590556105ec611012565b6001600160a01b0316876001600160a01b0316896001600160a01b03167fd59b5facb5e38ab634162423aec2545750f69daf91fe145954e2a2b449597d4c610632610f82565b8888886040516106459493929190611b5e565b60405180910390a48015610693576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b60405162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b60448201526000906064016104ad565b60405162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f5254454400000000000000000060448201526000906064016104ad565b6001600160a01b038083166000908152606660209081526040808320938516835292905220545b92915050565b6000806107668361105c565b6001600160a01b0384166000908152606e6020526040812054919250829003610793575060009392505050565b6001600160a01b0384166000908152606d60205260408120546107be90839064ffffffffff16611077565b90506107ca83826110bd565b95945050505050565b60006104c3611012565b6000806000806000606c5490506107f360355490565b6107fc82610f37565b606f54919790965091945064ffffffffff1692509050565b6060603780546103ea90611b24565b61082b611012565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b815250906108795760405162461bcd60e51b81526004016104ad9190611885565b5060008061088684611100565b925092505060006108956104b6565b6001600160a01b0386166000908152606e60205260408120549192509081908684116108c5576000606c5561093d565b6108cf848861115c565b915060006108e86108df86611168565b606c54906110bd565b905060006108ff6108f88a611168565b84906110bd565b9050818110610916576000606c819055945061093a565b61093261092285611168565b61092c848461115c565b90611178565b606c81905594505b50505b85870361097a576001600160a01b0388166000908152606e60209081526040808320839055606d9091529020805464ffffffffff191690556109a8565b6001600160a01b0388166000908152606d60205260409020805464ffffffffff19164264ffffffffff161790555b606f805464ffffffffff19164264ffffffffff1617905586851115610a495760006109d3868961115c565b90506109e08982876111ac565b6040805182815260208101899052908101879052606081018390526080810185905260a081018490526001600160a01b038a169081907fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f9060c00160405180910390a350610abe565b6000610a55888761115c565b9050610a6289828761124a565b604080518281526020810189905290810187905260608101859052608081018490526001600160a01b038a16907f44bd20a79e993bdcc7cbedf54a3b4d19fb78490124b6b90d04fe3242eea579e89060a00160405180910390a2505b6040518781526000906001600160a01b038a1690600080516020611d9c8339815191529060200160405180910390a35050505050505050565b6000610b01611012565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b81525090610b4f5760405162461bcd60e51b81526004016104ad9190611885565b50610b826040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b846001600160a01b0316866001600160a01b031614158015610c2c5750606760009054906101000a90046001600160a01b03166001600160a01b03166377532ed96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c169190611ba8565b6001600160a01b0316866001600160a01b031614155b15610c3c57610c3c8587866112a0565b600080610c4887611100565b9250925050610c556104b6565b808452606c546080850152610c6a90876113c0565b6020840152610c7886611168565b6040840152610cd6610c92610c8d84896113c0565b611168565b604085015161092c90610ca590896110bd565b610cd0610cb187611168565b6001600160a01b038d166000908152606e6020526040902054906110bd565b906113c0565b6060840181905260408051808201909152600381526234383560e81b6020820152906fffffffffffffffffffffffffffffffff1015610d285760405162461bcd60e51b81526004016104ad9190611885565b5060608301516001600160a01b0388166000908152606e6020908152604080832093909355606d8152919020805464ffffffffff421664ffffffffff199182168117909255606f80549091169091179055830151610dbe90610d8990611168565b61092c610da38660400151896110bd90919063ffffffff16565b610cd0610db38860000151611168565b6080890151906110bd565b606c8190556080840152610ddd87610dd688846113c0565b85516111ac565b6040518681526001600160a01b03881690600090600080516020611d9c8339815191529060200160405180910390a3866001600160a01b0316886001600160a01b03167fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f888585886060015189608001518a60200151604051610e8896959493929190958652602086019490945260408501929092526060840152608083015260a082015260c00190565b60405180910390a350159695505050505050565b3360008181526066602090815260408083206001600160a01b038781168086529190935292208490556069549192917fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e19116604080516001600160a01b039092168252602082018690520160405180910390a35050565b60006107548261105c565b606c546000908190610f2f81610f37565b939092509050565b600080610f4360355490565b905080600003610f565750600092915050565b606f54600090610f6e90859064ffffffffff166113cc565b9050610f7a82826110bd565b949350505050565b6067546040805163033df24d60e31b815290516000926001600160a01b0316916319ef92689160048083019260209291908290030181865afa158015610fcc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c39190611ba8565b610ffa83836113d9565b6065805460ff191660ff929092169190911790555050565b60675460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b9160048083019260209291908290030181865afa158015610fcc573d6000803e3d6000fd5b6001600160a01b031660009081526033602052604090205490565b60008061108b64ffffffffff841642611bdb565b90506b033b2e3c9fd0803ce80000006301e133806110a98387611bee565b6110b39190611c0d565b610f7a9190611c2f565b60006110f96b033b2e3c9fd0803ce80000006110f36110dc868661140e565b610cd060026b033b2e3c9fd0803ce8000000611c0d565b9061141a565b9392505050565b60008060008061110f8561105c565b90508060000361112a57600080600093509350935050611155565b600061113f826111398861075a565b9061115c565b90508161114c81836113c0565b90955093509150505b9193909250565b60006110f98284611bdb565b600061075482633b9aca0061140e565b600080611186600284611c0d565b9050610f7a836110f36111a5876b033b2e3c9fd0803ce800000061140e565b84906113c0565b60006111b78461105c565b90506111c38484611426565b60006111cd610f82565b90506001600160a01b03811615611243576040516318c39f1760e11b81526001600160a01b03868116600483015260248201859052604482018490528216906331873e2e90606401600060405180830381600087803b15801561122f57600080fd5b505af1158015610693573d6000803e3d6000fd5b5050505050565b60006112558461105c565b905082811015604051806040016040528060038152602001621a1c1b60e91b815250906112955760405162461bcd60e51b81526004016104ad9190611885565b506111c384846114dc565b6001600160a01b038084166000908152606660209081526040808320938616835292815290829020548251808401909352600383526235303360e81b918301919091528211156113035760405162461bcd60e51b81526004016104ad9190611885565b506001600160a01b038084166000908152606660209081526040808320938616835292905290812054611337908390611bdb565b6001600160a01b038086166000818152606660209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e16113996069546001600160a01b031690565b604080516001600160a01b039092168252602082018690520160405180910390a350505050565b60006110f98284611c2f565b60006110f9838342611500565b600054610100900460ff166114005760405162461bcd60e51b81526004016104ad90611c42565b61140a8282611629565b5050565b60006110f98284611bee565b60006110f98284611c0d565b600061143160355490565b9050600061143e8461105c565b905061144a848461166e565b6000611454610f82565b6001600160a01b0316146114d65761146a610f82565b6040516318c39f1760e11b81526001600160a01b038681166004830152602482018590526044820184905291909116906331873e2e90606401600060405180830381600087803b1580156114bd57600080fd5b505af11580156114d1573d6000803e3d6000fd5b505050505b50505050565b60006114e760355490565b905060006114f48461105c565b905061144a848461171d565b60008061151464ffffffffff851684611bdb565b905080600003611533576b033b2e3c9fd0803ce80000009150506110f9565b6000611540600183611bdb565b905060006002831161155357600061155e565b61155e600284611bdb565b905060006115706301e1338089611c0d565b9050600061157e82806110bd565b9050600061158c82846110bd565b9050600060028361159d888a611bee565b6115a79190611bee565b6115b19190611c0d565b90506000600683876115c38a8c611bee565b6115cd9190611bee565b6115d79190611bee565b6115e19190611c0d565b905080826115ef8a88611bee565b611605906b033b2e3c9fd0803ce8000000611c2f565b61160f9190611c2f565b6116199190611c2f565b9c9b505050505050505050505050565b600054610100900460ff166116505760405162461bcd60e51b81526004016104ad90611c42565b603661165c8382611cdb565b5060376116698282611cdb565b505050565b6001600160a01b0382166116c45760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104ad565b80603560008282546116d69190611c2f565b90915550506001600160a01b038216600081815260336020908152604080832080548601905551848152600080516020611d9c833981519152910160405180910390a35050565b6001600160a01b03821661177d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104ad565b6001600160a01b038216600090815260336020526040902054818110156117f15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104ad565b6001600160a01b0383166000818152603360209081526040808320868603905560358054879003905551858152919291600080516020611d9c833981519152910160405180910390a3505050565b6000815180845260005b8181101561186557602081850181015186830182015201611849565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006110f9602083018461183f565b6001600160a01b03811681146118ad57600080fd5b50565b600080604083850312156118c357600080fd5b82356118ce81611898565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261190357600080fd5b813567ffffffffffffffff8082111561191e5761191e6118dc565b604051601f8301601f19908116603f01168101908282118183101715611946576119466118dc565b8160405283815286602085880101111561195f57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600080600080610100898b03121561199c57600080fd5b88356119a781611898565b975060208901356119b781611898565b965060408901356119c781611898565b9550606089013594506080890135935060a089013560ff811681146119eb57600080fd5b925060c089013567ffffffffffffffff80821115611a0857600080fd5b611a148c838d016118f2565b935060e08b0135915080821115611a2a57600080fd5b50611a378b828c016118f2565b9150509295985092959890939650565b600080600060608486031215611a5c57600080fd5b8335611a6781611898565b92506020840135611a7781611898565b929592945050506040919091013590565b60008060408385031215611a9b57600080fd5b8235611aa681611898565b91506020830135611ab681611898565b809150509250929050565b600060208284031215611ad357600080fd5b81356110f981611898565b60008060008060808587031215611af457600080fd5b8435611aff81611898565b93506020850135611b0f81611898565b93969395505050506040820135916060013590565b600181811c90821680611b3857607f821691505b602082108103611b5857634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b038516815260ff84166020820152608060408201819052600090611b8b9083018561183f565b8281036060840152611b9d818561183f565b979650505050505050565b600060208284031215611bba57600080fd5b81516110f981611898565b634e487b7160e01b600052601160045260246000fd5b8181038181111561075457610754611bc5565b6000816000190483118215151615611c0857611c08611bc5565b500290565b600082611c2a57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561075457610754611bc5565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b601f82111561166957600081815260208120601f850160051c81016020861015611cb45750805b601f850160051c820191505b81811015611cd357828155600101611cc0565b505050505050565b815167ffffffffffffffff811115611cf557611cf56118dc565b611d0981611d038454611b24565b84611c8d565b602080601f831160018114611d3e5760008415611d265750858301515b600019600386901b1c1916600185901b178555611cd3565b600085815260208120601f198616915b82811015611d6d57888601518255948401946001909101908401611d4e565b5085821015611d8b5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212204f5f21f5925202fd57687ffc69e6cc118f51001ebb99222cf0b10110cd3e90ee64736f6c63430008100033",
"sourceMap": "1327:15512:160:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2491:98:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2948:248:162;;;;;;:::i;:::-;;:::i;:::-;;;1288:14:187;;1281:22;1263:41;;1251:2;1236:18;2948:248:162;1123:187:187;12485:204:160;;;:::i;:::-;;;1461:25:187;;;1449:2;1434:18;12485:204:160;1315:177:187;13772:154:160;;;:::i;:::-;;;-1:-1:-1;;;;;1696:32:187;;;1678:51;;1666:2;1651:18;13772:154:160;1497:238:187;2692:1049:160;;;;;;:::i;:::-;;:::i;:::-;;3202:320:162;;;;;;:::i;:::-;;:::i;1025:145:163:-;1149:15;;1025:145;;1149:15;;;;4470:36:187;;4458:2;4443:18;1025:145:163;4328:184:187;3528:226:162;;;;;;:::i;:::-;;:::i;2064:195::-;;;;;;:::i;:::-;;:::i;4682:531:160:-;;;;;;:::i;:::-;;:::i;13582:94::-;;;:::i;11795:343::-;;;:::i;:::-;;;;5621:25:187;;;5677:2;5662:18;;5655:34;;;;5705:18;;;5698:34;5780:12;5768:25;5763:2;5748:18;;5741:53;5608:3;5593:19;11795:343:160;5392:408:187;4128:133:160;;;;;;:::i;:::-;-1:-1:-1;;;;;4236:17:160;4210:6;4236:17;;;:11;:17;;;;;;;;;4128:133;;;;5979:12:187;5967:25;;;5949:44;;5937:2;5922:18;4128:133:160;5805:194:187;3882:121:160;3981:14;;3882:121;;2702:102:23;;;:::i;8118:2582:160:-;;;;;;:::i;:::-;;:::i;2421:253:162:-;;;;;;:::i;13370:108:160:-;13454:16;;-1:-1:-1;;;;;13454:16:160;13370:108;;5992:1938;;;;;;:::i;:::-;;:::i;1593:250:162:-;;;;;;:::i;:::-;;:::i;13113:138:160:-;;;;;;:::i;:::-;;:::i;2680:262:162:-;;;;;;:::i;12787:122:160:-;12880:21;;;;12787:122;;4417:138;;;;;;:::i;:::-;-1:-1:-1;;;;;4525:22:160;4498:7;4525:22;;;:16;:22;;;;;;;4417:138;12233:189;;;:::i;:::-;;;;6916:25:187;;;6972:2;6957:18;;6950:34;;;;6889:18;12233:189:160;6742:248:187;2491:98:23;2545:13;2577:5;2570:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2491:98;:::o;2948:248:162:-;3157:32;;-1:-1:-1;;;3157:32:162;;7582:2:187;3157:32:162;;;7564:21:187;7621:2;7601:18;;;7594:30;-1:-1:-1;;;7640:18:187;;;7633:52;3103:4:162;;7702:18:187;;3157:32:162;;;;;;;;12485:204:160;12616:7;12649:32;12666:14;;12649:16;:32::i;:::-;12642:39;;12485:204;:::o;13772:154::-;13843:25;13888:30;:28;:30::i;2692:1049::-;3268:19:18;3291:13;;;;;;3290:14;;3336:34;;;;-1:-1:-1;3354:12:18;;3369:1;3354:12;;;;:16;3336:34;3335:108;;;-1:-1:-1;3415:4:18;1476:19:32;:23;;;3376:66:18;;-1:-1:-1;3425:12:18;;;;;:17;3376:66;3314:201;;;;-1:-1:-1;;;3314:201:18;;7933:2:187;3314:201:18;;;7915:21:187;7972:2;7952:18;;;7945:30;8011:34;7991:18;;;7984:62;-1:-1:-1;;;8062:18:187;;;8055:44;8116:19;;3314:201:18;7731:410:187;3314:201:18;3525:12;:16;;-1:-1:-1;;3525:16:18;3540:1;3525:16;;;3551:65;;;;3585:13;:20;;-1:-1:-1;;3585:20:18;;;;;3551:65;3091:75:160::1;3116:13;3131:15;3148:17;3091:24;:75::i;:::-;3179:16;:52:::0;;-1:-1:-1;;;;;3179:52:160;;::::1;-1:-1:-1::0;;;;;;3179:52:160;;::::1;;::::0;;;3244:21:::1;:44:::0;;;;::::1;::::0;;::::1;;::::0;;3299:16:::1;:34:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;3344:21:::1;:44:::0;;;3399:21:::1;:44:::0;;;3560:17:::1;:15;:17::i;:::-;-1:-1:-1::0;;;;;3461:272:160::1;3522:15;-1:-1:-1::0;;;;;3461:272:160::1;3487:20;-1:-1:-1::0;;;;;3461:272:160::1;;3601:30;:28;:30::i;:::-;3647:17;3679:13;3707:15;3461:272;;;;;;;;;:::i;:::-;;;;;;;;3640:14:18::0;3636:99;;;3686:5;3670:21;;-1:-1:-1;;3670:21:18;;;3710:14;;-1:-1:-1;4470:36:187;;3710:14:18;;4458:2:187;4443:18;3710:14:18;;;;;;;3636:99;3258:483;2692:1049:160;;;;;;;;:::o;3202:320:162:-;3483:32;;-1:-1:-1;;;3483:32:162;;9112:2:187;3483:32:162;;;9094:21:187;9151:2;9131:18;;;9124:30;-1:-1:-1;;;9170:18:187;;;9163:52;3411:4:162;;9232:18:187;;3483:32:162;8910:346:187;3528:226:162;3714:33;;-1:-1:-1;;;3714:33:162;;9463:2:187;3714:33:162;;;9445:21:187;9502:2;9482:18;;;9475:30;9541:25;9521:18;;;9514:53;3657:4:162;;9584:18:187;;3714:33:162;9261:347:187;2064:195:162;-1:-1:-1;;;;;2217:27:162;;;2187:7;2217:27;;;:17;:27;;;;;;;;:35;;;;;;;;;;2064:195;;;;;:::o;4682:531:160:-;4844:7;4870:22;4895:24;4911:7;4895:15;:24::i;:::-;-1:-1:-1;;;;;4951:25:160;;4930:18;4951:25;;;:16;:25;;;;;;4870:49;;-1:-1:-1;4991:19:160;;;4987:60;;-1:-1:-1;5034:1:160;;4682:531;-1:-1:-1;;;4682:531:160:o;4987:60::-;-1:-1:-1;;;;;5135:20:160;;5057:16;5135:20;;;:11;:20;;;;;;5089:67;;5123:10;;5135:20;;5089:33;:67::i;:::-;5057:99;-1:-1:-1;5174:31:160;:14;5057:99;5174:21;:31::i;:::-;5167:38;4682:531;-1:-1:-1;;;;;4682:531:160:o;13582:94::-;13619:12;13651:17;:15;:17::i;11795:343::-;11900:7;11922;11944;11966:6;12000:15;12018:14;;12000:32;;12051:19;3666:12:23;;;3579:106;12051:19:160;12072:25;12089:7;12072:16;:25::i;:::-;12108:21;;12043:87;;;;-1:-1:-1;12099:7:160;;-1:-1:-1;12108:21:160;;;-1:-1:-1;11795:343:160;-1:-1:-1;11795:343:160:o;2702:102:23:-;2758:13;2790:7;2783:14;;;;;:::i;8118:2582:160:-;1145:17:162;:15;:17::i;:::-;-1:-1:-1;;;;;1121:42:162;929:10:33;-1:-1:-1;;;;;1121:42:162;;1165:37;;;;;;;;;;;;;-1:-1:-1;;;1165:37:162;;;1113:90;;;;;-1:-1:-1;;;1113:90:162;;;;;;;;:::i;:::-;;8210:22:160::1;8234:23:::0;8261:31:::1;8287:4;8261:25;:31::i;:::-;8207:85;;;;;8305:22;8330:13;:11;:13::i;:::-;-1:-1:-1::0;;;;;8451:22:160;::::1;8354:24;8451:22:::0;;;:16:::1;:22;::::0;;;;;8305:38;;-1:-1:-1;8354:24:160;;;8813;;::::1;8809:790;;8871:1;8854:14;:18:::0;8809:790:::1;;;8918:26;:14:::0;8937:6;8918:18:::1;:26::i;:::-;8905:39;;8959:17;8979:48;9001:25;:14;:23;:25::i;:::-;8979:14;::::0;;:21:::1;:48::i;:::-;8959:68;;9042:18;9063:40;9085:17;:6;:15;:17::i;:::-;9063:14:::0;;:21:::1;:40::i;:::-;9042:61;;9373:9;9359:10;:23;9355:233;;9439:1;9422:14;:18;;;9403:37;;9355:233;;;9517:55;9550:21;:10;:19;:21::i;:::-;9517:25;:9:::0;9531:10;9517:13:::1;:25::i;:::-;:32:::0;::::1;:55::i;:::-;9500:14;:72;;;9481:91;;9355:233;8890:709;;8809:790;9625:14;9615:6;:24:::0;9611:235:::1;;-1:-1:-1::0;;;;;9656:22:160;::::1;9681:1;9656:22:::0;;;:16:::1;:22;::::0;;;;;;;:26;;;9697:11:::1;:17:::0;;;;;:21;;-1:-1:-1;;9697:21:160::1;::::0;;9611:235:::1;;;-1:-1:-1::0;;;;;9791:17:160;::::1;;::::0;;;:11:::1;:17;::::0;;;;:43;;-1:-1:-1;;9791:43:160::1;9818:15;9791:43;;;::::0;;9611:235:::1;9892:21;:47:::0;;-1:-1:-1;;9892:47:160::1;9923:15;9892:47;;;::::0;;9956:24;;::::1;9952:689;;;9997:20;10020:27;:15:::0;10040:6;10020:19:::1;:27::i;:::-;9997:50;;10062:41;10068:4;10074:12;10088:14;10062:5;:41::i;:::-;10123:260;::::0;;9900:25:187;;;9956:2;9941:18;;9934:34;;;9984:18;;;9977:34;;;10042:2;10027:18;;10020:34;;;10085:3;10070:19;;10063:35;;;10129:3;10114:19;;10107:35;;;-1:-1:-1;;;;;10123:260:160;::::1;::::0;;;::::1;::::0;9887:3:187;9872:19;10123:260:160::1;;;;;;;9982:413;9952:689;;;10416:20;10439:27;:6:::0;10450:15;10439:10:::1;:27::i;:::-;10416:50;;10481:41;10487:4;10493:12;10507:14;10481:5;:41::i;:::-;10542:87;::::0;;10412:25:187;;;10468:2;10453:18;;10446:34;;;10496:18;;;10489:34;;;10554:2;10539:18;;10532:34;;;10597:3;10582:19;;10575:35;;;-1:-1:-1;;;;;10542:87:160;::::1;::::0;::::1;::::0;10399:3:187;10384:19;10542:87:160::1;;;;;;;10401:240;9952:689;10658:34;::::0;1461:25:187;;;10681:1:160::1;::::0;-1:-1:-1;;;;;10658:34:160;::::1;::::0;-1:-1:-1;;;;;;;;;;;10658:34:160;1449:2:187;1434:18;10658:34:160::1;;;;;;;8196:2504;;;;;;8118:2582:::0;;:::o;5992:1938::-;6156:4;1145:17:162;:15;:17::i;:::-;-1:-1:-1;;;;;1121:42:162;929:10:33;-1:-1:-1;;;;;1121:42:162;;1165:37;;;;;;;;;;;;;-1:-1:-1;;;1165:37:162;;;1113:90;;;;;-1:-1:-1;;;1113:90:162;;;;;;;;:::i;:::-;;6173:25:160::1;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6173:25:160::1;6237:10;-1:-1:-1::0;;;;;6229:18:160::1;:4;-1:-1:-1::0;;;;;6229:18:160::1;;;:76;;;;;6272:16;;;;;;;;;-1:-1:-1::0;;;;;6272:16:160::1;-1:-1:-1::0;;;;;6272:31:160::1;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6264:41:160::1;:4;-1:-1:-1::0;;;;;6264:41:160::1;;;6229:76;6211:179;;;6328:50;6353:10;6365:4;6371:6;6328:24;:50::i;:::-;6405:22;6429:23:::0;6456:37:::1;6482:10;6456:25;:37::i;:::-;6402:91;;;;;6528:13;:11;:13::i;:::-;6506:35:::0;;;6580:14:::1;::::0;6552:25:::1;::::0;::::1;:42:::0;6623:31:::1;::::0;6647:6;6623:23:::1;:31::i;:::-;6605:15;::::0;::::1;:49:::0;6686:17:::1;:6:::0;:15:::1;:17::i;:::-;6667:16;::::0;::::1;:36:::0;6737:185:::1;6884:37;:26;:14:::0;6903:6;6884:18:::1;:26::i;:::-;:35;:37::i;:::-;6832:16;::::0;::::1;::::0;6737:125:::1;::::0;6832:29:::1;::::0;6856:4;6832:23:::1;:29::i;:::-;6737:76;6787:25;:14;:23;:25::i;:::-;-1:-1:-1::0;;;;;6737:28:160;::::1;;::::0;;;:16:::1;:28;::::0;;;;;;:49:::1;:76::i;:::-;:94:::0;::::1;:125::i;:185::-;6716:18;::::0;::::1;:206:::0;;;6984:31:::1;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;6984:31:160;::::1;::::0;;6965:17:::1;-1:-1:-1::0;6943:39:160::1;6935:81;;;;-1:-1:-1::0;;;6935:81:160::1;;;;;;;;:::i;:::-;-1:-1:-1::0;7058:18:160::1;::::0;::::1;::::0;-1:-1:-1;;;;;7027:28:160;::::1;;::::0;;;:16:::1;:28;::::0;;;;;;;:49;;;;7149:11:::1;:23:::0;;;;;:49;;::::1;7182:15;7149:49;-1:-1:-1::0;;7149:49:160;;::::1;::::0;::::1;::::0;;;7125:21:::1;:73:::0;;;;::::1;::::0;;::::1;::::0;;7458:15;::::1;::::0;7311:174:::1;::::0;7458:26:::1;::::0;:24:::1;:26::i;:::-;7311:129;7410:29;7422:4;:16;;;7410:4;:11;;:29;;;;:::i;:::-;7311:84;7364:30;:4;:19;;;:28;:30::i;:::-;7311:35;::::0;::::1;::::0;;:52:::1;:84::i;:174::-;7294:14;:191:::0;;;7266:25:::1;::::0;::::1;:219:::0;7498:67:::1;7504:10:::0;7516:27:::1;:6:::0;7527:15;7516:10:::1;:27::i;:::-;7545:19:::0;;7498:5:::1;:67::i;:::-;7583:40;::::0;1461:25:187;;;-1:-1:-1;;;;;7583:40:160;::::1;::::0;7600:1:::1;::::0;-1:-1:-1;;;;;;;;;;;7583:40:160;1449:2:187;1434:18;7583:40:160::1;;;;;;;7679:10;-1:-1:-1::0;;;;;7641:242:160::1;7660:4;-1:-1:-1::0;;;;;7641:242:160::1;;7704:6;7725:14;7754:15;7784:4;:18;;;7817:4;:25;;;7857:4;:15;;;7641:242;;;;;;;;;;9900:25:187::0;;;9956:2;9941:18;;9934:34;;;;9999:2;9984:18;;9977:34;;;;10042:2;10027:18;;10020:34;10085:3;10070:19;;10063:35;10129:3;10114:19;;10107:35;9887:3;9872:19;;9613:535;7641:242:160::1;;;;;;;;-1:-1:-1::0;7903:19:160;;5992:1938;-1:-1:-1;;;;;;5992:1938:160:o;1593:250:162:-;929:10:33;1683:31:162;;;;:17;:31;;;;;;;;-1:-1:-1;;;;;1683:42:162;;;;;;;;;;;;:51;;;13454:16:160;;1683:42:162;;929:10:33;1749:87:162;;13454:16:160;1749:87:162;;;-1:-1:-1;;;;;11069:32:187;;;11051:51;;11133:2;11118:18;;11111:34;;;11024:18;1749:87:162;;;;;;;1593:250;;:::o;13113:138:160:-;13195:7;13222:21;13238:4;13222:15;:21::i;12233:189::-;12346:14;;12299:7;;;;12379:25;12346:14;12379:16;:25::i;:::-;12371:43;12406:7;;-1:-1:-1;12233:189:160;-1:-1:-1;12233:189:160:o;14890:405::-;14964:7;14984:23;15010:19;3666:12:23;;;3579:106;15010:19:160;14984:45;;15046:15;15065:1;15046:20;15042:61;;-1:-1:-1;15090:1:160;;14890:405;-1:-1:-1;;14890:405:160:o;15042:61::-;15204:21;;15115:25;;15157:69;;15195:7;;15204:21;;15157:37;:69::i;:::-;15115:111;-1:-1:-1;15246:41:160;:15;15115:111;15246:22;:41::i;:::-;15239:48;14890:405;-1:-1:-1;;;;14890:405:160:o;14020:198::-;14163:16;;:46;;;-1:-1:-1;;;14163:46:160;;;;14092:25;;-1:-1:-1;;;;;14163:16:160;;:44;;:46;;;;;;;;;;;;;;:16;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;758:201:163:-;889:28;902:5;909:7;889:12;:28::i;:::-;926:15;:27;;-1:-1:-1;;926:27:163;;;;;;;;;;;;-1:-1:-1;;758:201:163:o;14527:146:160:-;14631:16;;:33;;;-1:-1:-1;;;14631:33:160;;;;14586:12;;-1:-1:-1;;;;;14631:16:160;;:31;;:33;;;;;;;;;;;;;;:16;:33;;;;;;;;;;;;;;3743:125:23;-1:-1:-1;;;;;3843:18:23;3817:7;3843:18;;;:9;:18;;;;;;;3743:125::o;565:303:144:-;663:7;;734:48;753:28;;;734:15;:48;:::i;:::-;709:73;-1:-1:-1;524:4:146;239:8:144;798:23;806:14;798:4;:23;:::i;:::-;797:44;;;;:::i;:::-;796:67;;;;:::i;1291:126:146:-;1352:7;1379:30;524:4;1379:21;1391:8;:1;1397;1391:5;:8::i;:::-;571:7;577:1;524:4;571:7;:::i;1379:21::-;:25;;:30::i;:::-;1372:37;1291:126;-1:-1:-1;;;1291:126:146:o;10990:666:160:-;11103:7;11125;11147;11182:32;11217:21;11233:4;11217:15;:21::i;:::-;11182:56;;11255:24;11283:1;11255:29;11251:78;;11309:1;11312;11315;11301:16;;;;;;;;;11251:78;11417:23;11443:45;11463:24;11443:15;11453:4;11443:9;:15::i;:::-;:19;;:45::i;:::-;11417:71;-1:-1:-1;11523:24:160;11562:45;11523:24;11417:71;11562:28;:45::i;:::-;11501:147;;-1:-1:-1;11501:147:160;-1:-1:-1;11622:15:160;-1:-1:-1;;10990:666:160;;;;;;:::o;3122:96:71:-;3180:7;3206:5;3210:1;3206;:5;:::i;1771:107:146:-;1823:7;1850:20;:1;629:3;1850:5;:20::i;1425:158::-;1486:7;;1522:5;1526:1;1522;:5;:::i;:::-;1506:21;-1:-1:-1;1547:28:146;1573:1;1547:21;1557:10;:1;524:4;1557:5;:10::i;:::-;1547:5;;:9;:21::i;15545:482:160:-;15671:25;15699:24;15715:7;15699:15;:24::i;:::-;15671:52;;15734:28;15746:7;15755:6;15734:11;:28::i;:::-;15775:46;15824:30;:28;:30::i;:::-;15775:79;-1:-1:-1;;;;;;15871:43:160;;;15867:153;;15931:77;;-1:-1:-1;;;15931:77:160;;-1:-1:-1;;;;;12166:32:187;;;15931:77:160;;;12148:51:187;12215:18;;;12208:34;;;12258:18;;;12251:34;;;15931:33:160;;;;;12121:18:187;;15931:77:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15867:153;15660:367;;15545:482;;;:::o;16272:564::-;16398:25;16426:24;16442:7;16426:15;:24::i;:::-;16398:52;;16492:6;16471:17;:27;;16500:31;;;;;;;;;;;;;-1:-1:-1;;;16500:31:160;;;16463:69;;;;;-1:-1:-1;;;16463:69:160;;;;;;;;:::i;:::-;;16543:28;16555:7;16564:6;16543:11;:28::i;4002:501:162:-;-1:-1:-1;;;;;4147:28:162;;;;;;;:17;:28;;;;;;;;:39;;;;;;;;;;;;;4198:37;;;;;;;;;;;-1:-1:-1;;;4198:37:162;;;;;;;4147:49;-1:-1:-1;4147:49:162;4139:97;;;;-1:-1:-1;;;4139:97:162;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;4278:28:162;;;4255:20;4278:28;;;:17;:28;;;;;;;;:39;;;;;;;;;;;;:48;;4320:6;;4278:48;:::i;:::-;-1:-1:-1;;;;;4336:28:162;;;;;;;:17;:28;;;;;;;;:39;;;;;;;;;;;;:54;;;4255:71;;-1:-1:-1;4336:39:162;4406:90;4453:28;13454:16:160;;-1:-1:-1;;;;;13454:16:160;;13370:108;4453:28:162;4406:90;;;-1:-1:-1;;;;;11069:32:187;;;11051:51;;11133:2;11118:18;;11111:34;;;11024:18;4406:90:162;;;;;;;4129:374;4002:501;;;:::o;2755:96:71:-;2813:7;2839:5;2843:1;2839;:5;:::i;2721:200:144:-;2823:7;2845:71;2873:4;2879:19;2900:15;2845:27;:71::i;2114:147:23:-;5363:13:18;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:18;;;;;;;:::i;:::-;2216:38:23::1;2239:5;2246:7;2216:22;:38::i;:::-;2114:147:::0;;:::o;3465:96:71:-;3523:7;3549:5;3553:1;3549;:5;:::i;3850:96::-;3908:7;3934:5;3938:1;3934;:5;:::i;2233:398:163:-;2314:22;2339:19;3666:12:23;;;3579:106;2339:19:163;2314:44;;2365:25;2393:24;2409:7;2393:15;:24::i;:::-;2365:52;;2426:28;2438:7;2447:6;2426:11;:28::i;:::-;2518:1;2475:30;:28;:30::i;:::-;-1:-1:-1;;;;;2467:53:163;;2463:163;;2531:30;:28;:30::i;:::-;:87;;-1:-1:-1;;;2531:87:163;;-1:-1:-1;;;;;12166:32:187;;;2531:87:163;;;12148:51:187;12215:18;;;12208:34;;;12258:18;;;12251:34;;;2531:43:163;;;;;;;12121:18:187;;2531:87:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2463:163;2307:324;;2233:398;;:::o;2637:::-;2718:22;2743:19;3666:12:23;;;3579:106;2743:19:163;2718:44;;2769:25;2797:24;2813:7;2797:15;:24::i;:::-;2769:52;;2830:28;2842:7;2851:6;2830:11;:28::i;1609:827:144:-;1753:7;;1813:49;1833:28;;;1813:16;:49;:::i;:::-;1799:63;;1873:3;1880:1;1873:8;1869:52;;524:4:146;1891:23:144;;;;;1869:52;1927:19;1949:7;1955:1;1949:3;:7;:::i;:::-;1927:29;;1963:19;1991:1;1985:3;:7;:21;;2005:1;1985:21;;;1995:7;2001:1;1995:3;:7;:::i;:::-;1963:43;-1:-1:-1;2013:21:144;2037:23;239:8;2037:4;:23;:::i;:::-;2013:47;-1:-1:-1;2067:20:144;2090:35;2013:47;;2090:20;:35::i;:::-;2067:58;-1:-1:-1;2131:22:144;2156:34;2067:58;2176:13;2156:19;:34::i;:::-;2131:59;-1:-1:-1;2197:18:144;2259:1;2242:12;2219:19;2226:11;2219:3;:19;:::i;:::-;:36;;;;:::i;:::-;2218:42;;;;:::i;:::-;2197:63;-1:-1:-1;2266:17:144;2345:1;2326:14;2310:11;2287:19;2294:11;2287:3;:19;:::i;:::-;:35;;;;:::i;:::-;:54;;;;:::i;:::-;2286:60;;;;:::i;:::-;2266:80;-1:-1:-1;2266:80:144;2406:10;2380:21;2397:3;2380:13;:21;:::i;:::-;2360:42;;524:4:146;2360:42:144;:::i;:::-;:57;;;;:::i;:::-;:71;;;;:::i;:::-;2353:78;1609:827;-1:-1:-1;;;;;;;;;;;;1609:827:144:o;2267:159:23:-;5363:13:18;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:18;;;;;;;:::i;:::-;2379:5:23::1;:13;2387:5:::0;2379;:13:::1;:::i;:::-;-1:-1:-1::0;2402:7:23::1;:17;2412:7:::0;2402;:17:::1;:::i;:::-;;2267:159:::0;;:::o;8904:535::-;-1:-1:-1;;;;;8987:21:23;;8979:65;;;;-1:-1:-1;;;8979:65:23;;15114:2:187;8979:65:23;;;15096:21:187;15153:2;15133:18;;;15126:30;15192:33;15172:18;;;15165:61;15243:18;;8979:65:23;14912:355:187;8979:65:23;9131:6;9115:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;9283:18:23;;;;;;:9;:18;;;;;;;;:28;;;;;;9336:37;1461:25:187;;;-1:-1:-1;;;;;;;;;;;9336:37:23;1434:18:187;9336:37:23;;;;;;;2114:147;;:::o;9759:659::-;-1:-1:-1;;;;;9842:21:23;;9834:67;;;;-1:-1:-1;;;9834:67:23;;15474:2:187;9834:67:23;;;15456:21:187;15513:2;15493:18;;;15486:30;15552:34;15532:18;;;15525:62;-1:-1:-1;;;15603:18:187;;;15596:31;15644:19;;9834:67:23;15272:397:187;9834:67:23;-1:-1:-1;;;;;9997:18:23;;9972:22;9997:18;;;:9;:18;;;;;;10033:24;;;;10025:71;;;;-1:-1:-1;;;10025:71:23;;15876:2:187;10025:71:23;;;15858:21:187;15915:2;15895:18;;;15888:30;15954:34;15934:18;;;15927:62;-1:-1:-1;;;16005:18:187;;;15998:32;16047:19;;10025:71:23;15674:398:187;10025:71:23;-1:-1:-1;;;;;10130:18:23;;;;;;:9;:18;;;;;;;;10151:23;;;10130:44;;10267:12;:22;;;;;;;10315:37;1461:25:187;;;10130:18:23;;;-1:-1:-1;;;;;;;;;;;10315:37:23;1434:18:187;10315:37:23;;;;;;;2402:17:::1;2267:159:::0;;:::o;14:423:187:-;56:3;94:5;88:12;121:6;116:3;109:19;146:1;156:162;170:6;167:1;164:13;156:162;;;232:4;288:13;;;284:22;;278:29;260:11;;;256:20;;249:59;185:12;156:162;;;160:3;363:1;356:4;347:6;342:3;338:16;334:27;327:38;426:4;419:2;415:7;410:2;402:6;398:15;394:29;389:3;385:39;381:50;374:57;;;14:423;;;;:::o;442:220::-;591:2;580:9;573:21;554:4;611:45;652:2;641:9;637:18;629:6;611:45;:::i;667:131::-;-1:-1:-1;;;;;742:31:187;;732:42;;722:70;;788:1;785;778:12;722:70;667:131;:::o;803:315::-;871:6;879;932:2;920:9;911:7;907:23;903:32;900:52;;;948:1;945;938:12;900:52;987:9;974:23;1006:31;1031:5;1006:31;:::i;:::-;1056:5;1108:2;1093:18;;;;1080:32;;-1:-1:-1;;;803:315:187:o;1740:127::-;1801:10;1796:3;1792:20;1789:1;1782:31;1832:4;1829:1;1822:15;1856:4;1853:1;1846:15;1872:719;1915:5;1968:3;1961:4;1953:6;1949:17;1945:27;1935:55;;1986:1;1983;1976:12;1935:55;2022:6;2009:20;2048:18;2085:2;2081;2078:10;2075:36;;;2091:18;;:::i;:::-;2166:2;2160:9;2134:2;2220:13;;-1:-1:-1;;2216:22:187;;;2240:2;2212:31;2208:40;2196:53;;;2264:18;;;2284:22;;;2261:46;2258:72;;;2310:18;;:::i;:::-;2350:10;2346:2;2339:22;2385:2;2377:6;2370:18;2431:3;2424:4;2419:2;2411:6;2407:15;2403:26;2400:35;2397:55;;;2448:1;2445;2438:12;2397:55;2512:2;2505:4;2497:6;2493:17;2486:4;2478:6;2474:17;2461:54;2559:1;2552:4;2547:2;2539:6;2535:15;2531:26;2524:37;2579:6;2570:15;;;;;;1872:719;;;;:::o;2596:1266::-;2736:6;2744;2752;2760;2768;2776;2784;2792;2845:3;2833:9;2824:7;2820:23;2816:33;2813:53;;;2862:1;2859;2852:12;2813:53;2901:9;2888:23;2920:31;2945:5;2920:31;:::i;:::-;2970:5;-1:-1:-1;3027:2:187;3012:18;;2999:32;3040:33;2999:32;3040:33;:::i;:::-;3092:7;-1:-1:-1;3151:2:187;3136:18;;3123:32;3164:33;3123:32;3164:33;:::i;:::-;3216:7;-1:-1:-1;3270:2:187;3255:18;;3242:32;;-1:-1:-1;3321:3:187;3306:19;;3293:33;;-1:-1:-1;3378:3:187;3363:19;;3350:33;3427:4;3414:18;;3402:31;;3392:59;;3447:1;3444;3437:12;3392:59;3470:7;-1:-1:-1;3528:3:187;3513:19;;3500:33;3552:18;3582:14;;;3579:34;;;3609:1;3606;3599:12;3579:34;3632:50;3674:7;3665:6;3654:9;3650:22;3632:50;:::i;:::-;3622:60;;3735:3;3724:9;3720:19;3707:33;3691:49;;3765:2;3755:8;3752:16;3749:36;;;3781:1;3778;3771:12;3749:36;;3804:52;3848:7;3837:8;3826:9;3822:24;3804:52;:::i;:::-;3794:62;;;2596:1266;;;;;;;;;;;:::o;3867:456::-;3944:6;3952;3960;4013:2;4001:9;3992:7;3988:23;3984:32;3981:52;;;4029:1;4026;4019:12;3981:52;4068:9;4055:23;4087:31;4112:5;4087:31;:::i;:::-;4137:5;-1:-1:-1;4194:2:187;4179:18;;4166:32;4207:33;4166:32;4207:33;:::i;:::-;3867:456;;4259:7;;-1:-1:-1;;;4313:2:187;4298:18;;;;4285:32;;3867:456::o;4517:388::-;4585:6;4593;4646:2;4634:9;4625:7;4621:23;4617:32;4614:52;;;4662:1;4659;4652:12;4614:52;4701:9;4688:23;4720:31;4745:5;4720:31;:::i;:::-;4770:5;-1:-1:-1;4827:2:187;4812:18;;4799:32;4840:33;4799:32;4840:33;:::i;:::-;4892:7;4882:17;;;4517:388;;;;;:::o;4910:247::-;4969:6;5022:2;5010:9;5001:7;4997:23;4993:32;4990:52;;;5038:1;5035;5028:12;4990:52;5077:9;5064:23;5096:31;5121:5;5096:31;:::i;6212:525::-;6298:6;6306;6314;6322;6375:3;6363:9;6354:7;6350:23;6346:33;6343:53;;;6392:1;6389;6382:12;6343:53;6431:9;6418:23;6450:31;6475:5;6450:31;:::i;:::-;6500:5;-1:-1:-1;6557:2:187;6542:18;;6529:32;6570:33;6529:32;6570:33;:::i;:::-;6212:525;;6622:7;;-1:-1:-1;;;;6676:2:187;6661:18;;6648:32;;6727:2;6712:18;6699:32;;6212:525::o;6995:380::-;7074:1;7070:12;;;;7117;;;7138:61;;7192:4;7184:6;7180:17;7170:27;;7138:61;7245:2;7237:6;7234:14;7214:18;7211:38;7208:161;;7291:10;7286:3;7282:20;7279:1;7272:31;7326:4;7323:1;7316:15;7354:4;7351:1;7344:15;7208:161;;6995:380;;;:::o;8146:560::-;-1:-1:-1;;;;;8395:32:187;;8377:51;;8476:4;8464:17;;8459:2;8444:18;;8437:45;8518:3;8513:2;8498:18;;8491:31;;;-1:-1:-1;;8545:46:187;;8571:19;;8563:6;8545:46;:::i;:::-;8639:9;8631:6;8627:22;8622:2;8611:9;8607:18;8600:50;8667:33;8693:6;8685;8667:33;:::i;:::-;8659:41;8146:560;-1:-1:-1;;;;;;;8146:560:187:o;10621:251::-;10691:6;10744:2;10732:9;10723:7;10719:23;10715:32;10712:52;;;10760:1;10757;10750:12;10712:52;10792:9;10786:16;10811:31;10836:5;10811:31;:::i;11156:127::-;11217:10;11212:3;11208:20;11205:1;11198:31;11248:4;11245:1;11238:15;11272:4;11269:1;11262:15;11288:128;11355:9;;;11376:11;;;11373:37;;;11390:18;;:::i;11421:168::-;11461:7;11527:1;11523;11519:6;11515:14;11512:1;11509:21;11504:1;11497:9;11490:17;11486:45;11483:71;;;11534:18;;:::i;:::-;-1:-1:-1;11574:9:187;;11421:168::o;11594:217::-;11634:1;11660;11650:132;;11704:10;11699:3;11695:20;11692:1;11685:31;11739:4;11736:1;11729:15;11767:4;11764:1;11757:15;11650:132;-1:-1:-1;11796:9:187;;11594:217::o;11816:125::-;11881:9;;;11902:10;;;11899:36;;;11915:18;;:::i;12296:407::-;12498:2;12480:21;;;12537:2;12517:18;;;12510:30;12576:34;12571:2;12556:18;;12549:62;-1:-1:-1;;;12642:2:187;12627:18;;12620:41;12693:3;12678:19;;12296:407::o;12834:545::-;12936:2;12931:3;12928:11;12925:448;;;12972:1;12997:5;12993:2;12986:17;13042:4;13038:2;13028:19;13112:2;13100:10;13096:19;13093:1;13089:27;13083:4;13079:38;13148:4;13136:10;13133:20;13130:47;;;-1:-1:-1;13171:4:187;13130:47;13226:2;13221:3;13217:12;13214:1;13210:20;13204:4;13200:31;13190:41;;13281:82;13299:2;13292:5;13289:13;13281:82;;;13344:17;;;13325:1;13314:13;13281:82;;;13285:3;;;12834:545;;;:::o;13555:1352::-;13681:3;13675:10;13708:18;13700:6;13697:30;13694:56;;;13730:18;;:::i;:::-;13759:97;13849:6;13809:38;13841:4;13835:11;13809:38;:::i;:::-;13803:4;13759:97;:::i;:::-;13911:4;;13975:2;13964:14;;13992:1;13987:663;;;;14694:1;14711:6;14708:89;;;-1:-1:-1;14763:19:187;;;14757:26;14708:89;-1:-1:-1;;13512:1:187;13508:11;;;13504:24;13500:29;13490:40;13536:1;13532:11;;;13487:57;14810:81;;13957:944;;13987:663;12781:1;12774:14;;;12818:4;12805:18;;-1:-1:-1;;14023:20:187;;;14141:236;14155:7;14152:1;14149:14;14141:236;;;14244:19;;;14238:26;14223:42;;14336:27;;;;14304:1;14292:14;;;;14171:19;;14141:236;;;14145:3;14405:6;14396:7;14393:19;14390:201;;;14466:19;;;14460:26;-1:-1:-1;;14549:1:187;14545:14;;;14561:3;14541:24;14537:37;14533:42;14518:58;14503:74;;14390:201;-1:-1:-1;;;;;14637:1:187;14621:14;;;14617:22;14604:36;;-1:-1:-1;13555:1352:187:o",
"linkReferences": {}
},
"methodIdentifiers": {
"POOL()": "7535d246",
"UNDERLYING_ASSET_ADDRESS()": "b16a19de",
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"approveDelegation(address,uint256)": "c04a8a10",
"balanceOf(address)": "70a08231",
"borrowAllowance(address,address)": "6bd76d24",
"burn(address,uint256)": "9dc29fac",
"decimals()": "313ce567",
"decreaseAllowance(address,uint256)": "a457c2d7",
"getAverageStableRate()": "90f6fcf2",
"getPoolIncentivesController()": "19ef9268",
"getSupplyData()": "79774338",
"getTotalSupplyAndAvgRate()": "f731e9be",
"getTotalSupplyLastUpdated()": "e7484890",
"getUserLastUpdated(address)": "79ce6b8c",
"getUserStableRate(address)": "e78c9b3b",
"increaseAllowance(address,uint256)": "39509351",
"initialize(address,address,address,uint256,uint256,uint8,string,string)": "1e5fa51f",
"mint(address,address,uint256,uint256)": "b3f1c93d",
"name()": "06fdde03",
"principalBalanceOf(address)": "c634dfaa",
"symbol()": "95d89b41",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd"
},
"rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromUser\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toUser\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BorrowAllowanceDelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"currentBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"balanceIncrease\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"avgStableRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTotalSupply\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"underlyingCollateral\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"underlyingAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"incentivesController\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"debtTokenDecimals\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"debtTokenName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"debtTokenSymbol\",\"type\":\"string\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"currentBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"balanceIncrease\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"avgStableRate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTotalSupply\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"POOL\",\"outputs\":[{\"internalType\":\"contract ILendingPool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_ASSET_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromUser\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toUser\",\"type\":\"address\"}],\"name\":\"borrowAllowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAverageStableRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolIncentivesController\",\"outputs\":[{\"internalType\":\"contract IPoolIncentivesController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupplyData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint40\",\"name\":\"\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalSupplyAndAvgRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalSupplyLastUpdated\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserLastUpdated\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUserStableRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressProvider\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingAsset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"underlyingMaxTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"underlyingMinTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"debtTokenDecimals\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"debtTokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"debtTokenSymbol\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"principalBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"FluidNFT\",\"details\":\"Debt tokens are non-transferable and so diverge from the ERC20 standard.\",\"kind\":\"dev\",\"methods\":{\"POOL()\":{\"details\":\"Returns the address of the lending pool where this aToken is used*\"},\"UNDERLYING_ASSET_ADDRESS()\":{\"details\":\"Returns the address of the underlying asset of this aToken (E.g. WETH for aWETH)*\"},\"approveDelegation(address,uint256)\":{\"details\":\"delegates borrowing power to a user on the specific debt token\",\"params\":{\"amount\":\"the maximum amount being delegated. Delegation will still respect the liquidation constraints (even if delegated, a delegatee cannot force a delegator HF to go below 1)*\",\"delegatee\":\"the address receiving the delegated borrowing power\"}},\"balanceOf(address)\":{\"details\":\"Calculates the current user debt balance\",\"returns\":{\"_0\":\"The accumulated debt of the user*\"}},\"borrowAllowance(address,address)\":{\"details\":\"returns the borrow allowance of the user\",\"params\":{\"fromUser\":\"The user to giving allowance\",\"toUser\":\"The user to give allowance to\"},\"returns\":{\"_0\":\"the current allowance of toUser*\"}},\"burn(address,uint256)\":{\"details\":\"Burns debt of `user`\",\"params\":{\"amount\":\"The amount of debt tokens getting burned*\",\"user\":\"The address of the user getting his debt burned\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"decimals()\":{\"details\":\"Returns the decimals of the token.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getAverageStableRate()\":{\"details\":\"Returns the average stable rate across all the stable rate debt\",\"returns\":{\"_0\":\"the average stable rate*\"}},\"getPoolIncentivesController()\":{\"details\":\"Returns the address of the incentives controller contract*\"},\"getSupplyData()\":{\"details\":\"Returns the principal and total supply, the average borrow rate and the last supply update timestamp*\"},\"getTotalSupplyAndAvgRate()\":{\"details\":\"Returns the the total supply and the average stable rate*\"},\"getTotalSupplyLastUpdated()\":{\"details\":\"Returns the timestamp at which the total supply was updated*\"},\"getUserLastUpdated(address)\":{\"details\":\"Returns the timestamp of the last user action\",\"returns\":{\"_0\":\"The last update timestamp*\"}},\"getUserStableRate(address)\":{\"details\":\"Returns the stable rate of the user\",\"params\":{\"user\":\"The address of the user\"},\"returns\":{\"_0\":\"The stable rate of user*\"}},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"initialize(address,address,address,uint256,uint256,uint8,string,string)\":{\"details\":\"Initializes the debt token.\",\"params\":{\"addressProvider\":\"The address provider \",\"debtTokenDecimals\":\"The decimals of the debtToken, same as the underlying asset's\",\"debtTokenName\":\"The name of the token\",\"debtTokenSymbol\":\"The symbol of the token\",\"underlyingAsset\":\"The address of the underlying asset of this debtToken\",\"underlyingCollateral\":\"The address of the underlying collateral of this debtToken\",\"underlyingMaxTokenId\":\"The max tokenId of the underlying collateral of this debtToken\",\"underlyingMinTokenId\":\"The min tokenId of the underlying collateral of this debtToken\"}},\"mint(address,address,uint256,uint256)\":{\"details\":\"Mints debt token to the `onBehalfOf` address. - Only callable by the LendingPool - The resulting rate is the weighted average between the rate of the new debt and the rate of the previous debt\",\"params\":{\"amount\":\"The amount of debt tokens to mint\",\"onBehalfOf\":\"The address receiving the debt tokens\",\"rate\":\"The rate of the debt being minted*\",\"user\":\"The address receiving the borrowed underlying, being the delegatee in case of credit delegate, or same as `onBehalfOf` otherwise\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"principalBalanceOf(address)\":{\"details\":\"Returns the principal debt balance of the user from\",\"params\":{\"user\":\"The user's address\"},\"returns\":{\"_0\":\"The debt balance of the user since the last burn/mint action*\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the total supply*\"},\"transfer(address,uint256)\":{\"details\":\"Being non transferrable, the debt token does not implement any of the standard ERC20 functions for transfer and allowance.*\"}},\"title\":\"StableDebtToken\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows for the tracking of debt for the purposes of APY calculations at a stable rate mode.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/protocol/tokenization/StableDebtToken.sol\":\"StableDebtToken\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=lib/chainlink/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xe798cadb41e2da274913e4b3183a80f50fb057a42238fe8467e077268100ec27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899f850f7df5a270bccfb765d70069959ca1c20d3a7381c1c3bda8a3ffee1935\",\"dweb:/ipfs/QmVdnAqwyX2L3nX2HDA5WKGtVBFyH1nKE9A1k7fZnPBkhP\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xb1d9e69cf8073efa574b31b1f840e20709139c19bfb27e60b16393d6073f3d42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c39b800e55781c0f7a644ec9cc615664dbe2f009198e537e6acaad3086ba093\",\"dweb:/ipfs/Qmaugq2wsB1ASX8Kv29NwXqYhZY8HRNqcdvmBe9UUNEq2V\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol\":{\"keccak256\":\"0x4e733d3164f73f461eaf9d8087a7ad1ea180bdc8ba0d3d61b0e1ae16d8e63dff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75b47c3aeca7b66ea6752f8be020ec5c1c502de6ec9065272dae23d3a52196e2\",\"dweb:/ipfs/QmUebPMHv16tYKFh5BmBQkMfRFb5b8UZ2RgVwdjxCeufVF\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol\":{\"keccak256\":\"0x605434219ebbe4653f703640f06969faa5a1d78f0bfef878e5ddbb1ca369ceeb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c9c634f99dd02d73ce7498b03a6305e251c05eeebb71457306561c1fab0fa7d\",\"dweb:/ipfs/QmbYRBbZHy8YoaQKXdPryiL3CSS7uUaRfRYi1TUj9cTqJQ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol\":{\"keccak256\":\"0x0f633a0223d9a1dcccfcf38a64c9de0874dfcbfac0c6941ccf074d63a2ce0e1e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://864a40efcffdf408044c332a5aa38ec5618ed7b4eecb8f65faf45671bd6cdc65\",\"dweb:/ipfs/QmQJquTMtc6fgm5JQzGdsGpA2fqBe3MHWEdt2qzaLySMdN\"]},\"src/interfaces/IAddressProvider.sol\":{\"keccak256\":\"0x6730abfcd8770e3279dad6137bf619ab98ee8b049e6dd85d2fbe87ba6224fde8\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://9b7d1588eab025b049f858ab2f329be7fec220198d956b9b61bf0b9bddc5761a\",\"dweb:/ipfs/QmTaFkYSUfWmbpsyE2TKC1QvP6eTDggZ72ZWodBhydqt5X\"]},\"src/interfaces/ICreditDelegationToken.sol\":{\"keccak256\":\"0xd503435c6285ec39fbe57260dfa5245e8087fb336faf9a3759d345f3150247dc\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://339566f8416bbc263e4bc2de02a23fe35e232f701298d59b1c5937ab4eea3880\",\"dweb:/ipfs/QmdJyM2xuyLBZnWfQR8fUiUhvazAWsVTvD9agj2HapdmmK\"]},\"src/interfaces/IInitializableDebtToken.sol\":{\"keccak256\":\"0x29bcf86201c67f90d1620b5da4a0de05c611bf1fb15afeb6d2b30a70ec8aebca\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://e17c25e400ac37f1cd29b9cfdba2d4bc34aa6e0c705a619acf0c69f9136150d6\",\"dweb:/ipfs/QmTcNqEpq8UbZf6o6AgwJVjuNbrNbsZWfRMhQnuZArJQ6Q\"]},\"src/interfaces/ILendingPool.sol\":{\"keccak256\":\"0x345ab4285354bb5184bdd501d7c37920a711215b6f6c2db05b05d585f2454115\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://3b6264b135760dcdd59b9a3566c1305b00084922da177159a85c206ef6a91266\",\"dweb:/ipfs/QmSotEH7zF3vrEgo2gZuunWwroHgc6bw7TVRntzv7jsJn1\"]},\"src/interfaces/IPoolIncentivesController.sol\":{\"keccak256\":\"0x7cb2c32050814e6d6d962a603104facc3bb1dad15171304e3ee756648e8f9ae1\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://cf534f592706b2a61c539c03e5d1e199c15472bcfb4ee69838e5c93ba7914466\",\"dweb:/ipfs/QmPrvXhJigK1Ke51YwAWHon1Kv88WT26iD3MwzCaPDs1Kv\"]},\"src/interfaces/IScaledBalanceToken.sol\":{\"keccak256\":\"0xb6a8f00773c5f58af761573f39f6aa3649c9deec5c4e078f5e3ca78940e4eac7\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://0938c6fd92b015670a2bcf5ff971aafbc6295e07c78d1300c5e36a67002dc70c\",\"dweb:/ipfs/QmYDcxNaAAfnupwDcDN1xtQcCEXTwW1FWiaTiU3MksCQ1Z\"]},\"src/interfaces/IStableDebtToken.sol\":{\"keccak256\":\"0x964a76facf6d0ea459fd0222c5e8036efea4e9193af3851d68190052037755b4\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://6eebeccfdd76a6e7691402b699c1185df09e8fe80c94cc059bd797a2931b9d3e\",\"dweb:/ipfs/QmeRY3xnu979DmjgFZSEaNgEkWgjtj4Hjpg9gW3bMoaZ1v\"]},\"src/protocol/libraries/helpers/Errors.sol\":{\"keccak256\":\"0x490e76871922e89a13ba0bb88977be18c143fa9d0cd9afb033744a3d81479c52\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://1c409d4d1e1689d8d8f3c3e361198d20f3b6476608c5316d8e2d91f52373e8e3\",\"dweb:/ipfs/QmRZaYpxqjmBpbxb51KqswKYPSeCsU3ejbmk5E3MrMxJaM\"]},\"src/protocol/libraries/math/MathUtils.sol\":{\"keccak256\":\"0x1c856137c4ef9d713b19a65adeb47c4490bd3b8414d7f28b364625226926779f\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://15c029cd4a3becaa47c72c1f5c18986b0a3cb488d8145e0bf88ce618a3d70841\",\"dweb:/ipfs/QmSYaWpWPbEHkRCegu5edAuRS3HTwyN2mFoSKm4yfGeec9\"]},\"src/protocol/libraries/math/WadRayMath.sol\":{\"keccak256\":\"0xb29e8edc0e0e6bfead27945357c9e4a66e0c11e58ff3b87ee68ed1b5ca416735\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://d1b4377995155f32bb6c3ba558875c617fa63601c597099d3460063ac2a15d93\",\"dweb:/ipfs/QmUvCE6Q2J62sMgQCCEbQauWSYJpMiu3QCgWa6mZnEmcK2\"]},\"src/protocol/libraries/types/ConfigTypes.sol\":{\"keccak256\":\"0xa8f9b14d9adf738033fd1847b30012d0e022027614fd6c9bb31a01bc6bfb1634\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://b20c579d1b683dd5977a675c2e46adeebd56c96faa68cda9b0767edf02a5b650\",\"dweb:/ipfs/QmPULpaX2ouktArvXJxYNVPQ9vKBhEeCYA4smo8v57qFLD\"]},\"src/protocol/libraries/types/DataTypes.sol\":{\"keccak256\":\"0x070f7865fe84ce4c9ebd86bbe24771607fbdb4e8777510b46cb5064e4d9b90a3\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://504fd0c937cc69cc0737c4ef5dcec477017ccbff609b45b210274fd7bf0792cf\",\"dweb:/ipfs/QmeW1TkAHib7XRBVmgMRTdmsa4Rg9HVToTMnifEE1C7mTi\"]},\"src/protocol/tokenization/StableDebtToken.sol\":{\"keccak256\":\"0x101a2f883130cd5b551f4d0e815ed7e911a1c8f35d884e2d2c4148263fc6eb81\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://6406cd3edbeb703adb79752a81080ccbd87fb93394b654685cd7aad529772ba1\",\"dweb:/ipfs/QmZxvjR5oTe6jWqyuTyiiKRpSiz6nhFoRvuVEZZwbBiHCS\"]},\"src/protocol/tokenization/base/DebtTokenBase.sol\":{\"keccak256\":\"0x7a3cc782fbb4308dc2981007d00d94a507da3185db59628f209116af4e31f342\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://a709ab96e62f86169fa36f760df6cfe9db532f5ce0b95e9437cdc93ec86273dc\",\"dweb:/ipfs/QmXJ8az9pqhhp4XSufsPTA1bhz5KHGDdFsm53itWrhi3gJ\"]},\"src/protocol/tokenization/base/IncentivizedERC20.sol\":{\"keccak256\":\"0xeef558a6fb8826dd7eff89e1eb24072b5533825cbbfd3ee950623bb433ecabc6\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://4453844f67a9d9339dda3d5081073188d45b8fd274aea524b239e3462ef67236\",\"dweb:/ipfs/QmVxGsuhu1NGFd5WqnGZns8pY1VEUALhMUTx76x6hxhkn8\"]}},\"version\":1}",
"metadata": {
"compiler": {
"version": "0.8.16+commit.07a7930e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "spender",
"type": "address",
"indexed": true
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "Approval",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address",
"name": "fromUser",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "toUser",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "asset",
"type": "address",
"indexed": false
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "BorrowAllowanceDelegated",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address",
"indexed": true
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256",
"indexed": false
},
{
"internalType": "uint256",
"name": "currentBalance",
"type": "uint256",
"indexed": false
},
{
"internalType": "uint256",
"name": "balanceIncrease",
"type": "uint256",
"indexed": false
},
{
"internalType": "uint256",
"name": "avgStableRate",
"type": "uint256",
"indexed": false
},
{
"internalType": "uint256",
"name": "newTotalSupply",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "Burn",
"anonymous": false
},
{
"inputs": [
{
"internalType": "uint8",
"name": "version",
"type": "uint8",
"indexed": false
}
],
"type": "event",
"name": "Initialized",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address",
"name": "underlyingCollateral",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "underlyingAsset",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "pool",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "incentivesController",
"type": "address",
"indexed": false
},
{
"internalType": "uint8",
"name": "debtTokenDecimals",
"type": "uint8",
"indexed": false
},
{
"internalType": "string",
"name": "debtTokenName",
"type": "string",
"indexed": false
},
{
"internalType": "string",
"name": "debtTokenSymbol",
"type": "string",
"indexed": false
}
],
"type": "event",
"name": "Initialized",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "onBehalfOf",
"type": "address",
"indexed": true
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256",
"indexed": false
},
{
"internalType": "uint256",
"name": "currentBalance",
"type": "uint256",
"indexed": false
},
{
"internalType": "uint256",
"name": "balanceIncrease",
"type": "uint256",
"indexed": false
},
{
"internalType": "uint256",
"name": "newRate",
"type": "uint256",
"indexed": false
},
{
"internalType": "uint256",
"name": "avgStableRate",
"type": "uint256",
"indexed": false
},
{
"internalType": "uint256",
"name": "newTotalSupply",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "Mint",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "to",
"type": "address",
"indexed": true
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "Transfer",
"anonymous": false
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "POOL",
"outputs": [
{
"internalType": "contract ILendingPool",
"name": "",
"type": "address"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "UNDERLYING_ASSET_ADDRESS",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "delegatee",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "approveDelegation"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "fromUser",
"type": "address"
},
{
"internalType": "address",
"name": "toUser",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "borrowAllowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "burn"
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "subtractedValue",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "decreaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "getAverageStableRate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "getPoolIncentivesController",
"outputs": [
{
"internalType": "contract IPoolIncentivesController",
"name": "",
"type": "address"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "getSupplyData",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint40",
"name": "",
"type": "uint40"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "getTotalSupplyAndAvgRate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "getTotalSupplyLastUpdated",
"outputs": [
{
"internalType": "uint40",
"name": "",
"type": "uint40"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "getUserLastUpdated",
"outputs": [
{
"internalType": "uint40",
"name": "",
"type": "uint40"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "getUserStableRate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "addedValue",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "increaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "addressProvider",
"type": "address"
},
{
"internalType": "address",
"name": "underlyingCollateral",
"type": "address"
},
{
"internalType": "address",
"name": "underlyingAsset",
"type": "address"
},
{
"internalType": "uint256",
"name": "underlyingMaxTokenId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "underlyingMinTokenId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "debtTokenDecimals",
"type": "uint8"
},
{
"internalType": "string",
"name": "debtTokenName",
"type": "string"
},
{
"internalType": "string",
"name": "debtTokenSymbol",
"type": "string"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "initialize"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "address",
"name": "onBehalfOf",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "rate",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "mint",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "principalBalanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
}
],
"devdoc": {
"kind": "dev",
"methods": {
"POOL()": {
"details": "Returns the address of the lending pool where this aToken is used*"
},
"UNDERLYING_ASSET_ADDRESS()": {
"details": "Returns the address of the underlying asset of this aToken (E.g. WETH for aWETH)*"
},
"approveDelegation(address,uint256)": {
"details": "delegates borrowing power to a user on the specific debt token",
"params": {
"amount": "the maximum amount being delegated. Delegation will still respect the liquidation constraints (even if delegated, a delegatee cannot force a delegator HF to go below 1)*",
"delegatee": "the address receiving the delegated borrowing power"
}
},
"balanceOf(address)": {
"details": "Calculates the current user debt balance",
"returns": {
"_0": "The accumulated debt of the user*"
}
},
"borrowAllowance(address,address)": {
"details": "returns the borrow allowance of the user",
"params": {
"fromUser": "The user to giving allowance",
"toUser": "The user to give allowance to"
},
"returns": {
"_0": "the current allowance of toUser*"
}
},
"burn(address,uint256)": {
"details": "Burns debt of `user`",
"params": {
"amount": "The amount of debt tokens getting burned*",
"user": "The address of the user getting his debt burned"
}
},
"constructor": {
"custom:oz-upgrades-unsafe-allow": "constructor"
},
"decimals()": {
"details": "Returns the decimals of the token."
},
"decreaseAllowance(address,uint256)": {
"details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."
},
"getAverageStableRate()": {
"details": "Returns the average stable rate across all the stable rate debt",
"returns": {
"_0": "the average stable rate*"
}
},
"getPoolIncentivesController()": {
"details": "Returns the address of the incentives controller contract*"
},
"getSupplyData()": {
"details": "Returns the principal and total supply, the average borrow rate and the last supply update timestamp*"
},
"getTotalSupplyAndAvgRate()": {
"details": "Returns the the total supply and the average stable rate*"
},
"getTotalSupplyLastUpdated()": {
"details": "Returns the timestamp at which the total supply was updated*"
},
"getUserLastUpdated(address)": {
"details": "Returns the timestamp of the last user action",
"returns": {
"_0": "The last update timestamp*"
}
},
"getUserStableRate(address)": {
"details": "Returns the stable rate of the user",
"params": {
"user": "The address of the user"
},
"returns": {
"_0": "The stable rate of user*"
}
},
"increaseAllowance(address,uint256)": {
"details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."
},
"initialize(address,address,address,uint256,uint256,uint8,string,string)": {
"details": "Initializes the debt token.",
"params": {
"addressProvider": "The address provider ",
"debtTokenDecimals": "The decimals of the debtToken, same as the underlying asset's",
"debtTokenName": "The name of the token",
"debtTokenSymbol": "The symbol of the token",
"underlyingAsset": "The address of the underlying asset of this debtToken",
"underlyingCollateral": "The address of the underlying collateral of this debtToken",
"underlyingMaxTokenId": "The max tokenId of the underlying collateral of this debtToken",
"underlyingMinTokenId": "The min tokenId of the underlying collateral of this debtToken"
}
},
"mint(address,address,uint256,uint256)": {
"details": "Mints debt token to the `onBehalfOf` address. - Only callable by the LendingPool - The resulting rate is the weighted average between the rate of the new debt and the rate of the previous debt",
"params": {
"amount": "The amount of debt tokens to mint",
"onBehalfOf": "The address receiving the debt tokens",
"rate": "The rate of the debt being minted*",
"user": "The address receiving the borrowed underlying, being the delegatee in case of credit delegate, or same as `onBehalfOf` otherwise"
}
},
"name()": {
"details": "Returns the name of the token."
},
"principalBalanceOf(address)": {
"details": "Returns the principal debt balance of the user from",
"params": {
"user": "The user's address"
},
"returns": {
"_0": "The debt balance of the user since the last burn/mint action*"
}
},
"symbol()": {
"details": "Returns the symbol of the token, usually a shorter version of the name."
},
"totalSupply()": {
"details": "Returns the total supply*"
},
"transfer(address,uint256)": {
"details": "Being non transferrable, the debt token does not implement any of the standard ERC20 functions for transfer and allowance.*"
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"remappings": [
":@chainlink/=lib/chainlink/",
":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/",
":ds-test/=lib/forge-std/lib/ds-test/src/",
":forge-std/=lib/forge-std/src/"
],
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"bytecodeHash": "ipfs"
},
"compilationTarget": {
"src/protocol/tokenization/StableDebtToken.sol": "StableDebtToken"
},
"libraries": {}
},
"sources": {
"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": {
"keccak256": "0xe798cadb41e2da274913e4b3183a80f50fb057a42238fe8467e077268100ec27",
"urls": [
"bzz-raw://899f850f7df5a270bccfb765d70069959ca1c20d3a7381c1c3bda8a3ffee1935",
"dweb:/ipfs/QmVdnAqwyX2L3nX2HDA5WKGtVBFyH1nKE9A1k7fZnPBkhP"
],
"license": "MIT"
},
"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol": {
"keccak256": "0xb1d9e69cf8073efa574b31b1f840e20709139c19bfb27e60b16393d6073f3d42",
"urls": [
"bzz-raw://7c39b800e55781c0f7a644ec9cc615664dbe2f009198e537e6acaad3086ba093",
"dweb:/ipfs/Qmaugq2wsB1ASX8Kv29NwXqYhZY8HRNqcdvmBe9UUNEq2V"
],
"license": "MIT"
},
"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol": {
"keccak256": "0x4e733d3164f73f461eaf9d8087a7ad1ea180bdc8ba0d3d61b0e1ae16d8e63dff",
"urls": [
"bzz-raw://75b47c3aeca7b66ea6752f8be020ec5c1c502de6ec9065272dae23d3a52196e2",
"dweb:/ipfs/QmUebPMHv16tYKFh5BmBQkMfRFb5b8UZ2RgVwdjxCeufVF"
],
"license": "MIT"
},
"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol": {
"keccak256": "0x605434219ebbe4653f703640f06969faa5a1d78f0bfef878e5ddbb1ca369ceeb",
"urls": [
"bzz-raw://4c9c634f99dd02d73ce7498b03a6305e251c05eeebb71457306561c1fab0fa7d",
"dweb:/ipfs/QmbYRBbZHy8YoaQKXdPryiL3CSS7uUaRfRYi1TUj9cTqJQ"
],
"license": "MIT"
},
"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol": {
"keccak256": "0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183",
"urls": [
"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06",
"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879"
],
"license": "MIT"
},
"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": {
"keccak256": "0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149",
"urls": [
"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c",
"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"
],
"license": "MIT"
},
"lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol": {
"keccak256": "0x0f633a0223d9a1dcccfcf38a64c9de0874dfcbfac0c6941ccf074d63a2ce0e1e",
"urls": [
"bzz-raw://864a40efcffdf408044c332a5aa38ec5618ed7b4eecb8f65faf45671bd6cdc65",
"dweb:/ipfs/QmQJquTMtc6fgm5JQzGdsGpA2fqBe3MHWEdt2qzaLySMdN"
],
"license": "MIT"
},
"src/interfaces/IAddressProvider.sol": {
"keccak256": "0x6730abfcd8770e3279dad6137bf619ab98ee8b049e6dd85d2fbe87ba6224fde8",
"urls": [
"bzz-raw://9b7d1588eab025b049f858ab2f329be7fec220198d956b9b61bf0b9bddc5761a",
"dweb:/ipfs/QmTaFkYSUfWmbpsyE2TKC1QvP6eTDggZ72ZWodBhydqt5X"
],
"license": "AGPL-3.0"
},
"src/interfaces/ICreditDelegationToken.sol": {
"keccak256": "0xd503435c6285ec39fbe57260dfa5245e8087fb336faf9a3759d345f3150247dc",
"urls": [
"bzz-raw://339566f8416bbc263e4bc2de02a23fe35e232f701298d59b1c5937ab4eea3880",
"dweb:/ipfs/QmdJyM2xuyLBZnWfQR8fUiUhvazAWsVTvD9agj2HapdmmK"
],
"license": "AGPL-3.0"
},
"src/interfaces/IInitializableDebtToken.sol": {
"keccak256": "0x29bcf86201c67f90d1620b5da4a0de05c611bf1fb15afeb6d2b30a70ec8aebca",
"urls": [
"bzz-raw://e17c25e400ac37f1cd29b9cfdba2d4bc34aa6e0c705a619acf0c69f9136150d6",
"dweb:/ipfs/QmTcNqEpq8UbZf6o6AgwJVjuNbrNbsZWfRMhQnuZArJQ6Q"
],
"license": "AGPL-3.0"
},
"src/interfaces/ILendingPool.sol": {
"keccak256": "0x345ab4285354bb5184bdd501d7c37920a711215b6f6c2db05b05d585f2454115",
"urls": [
"bzz-raw://3b6264b135760dcdd59b9a3566c1305b00084922da177159a85c206ef6a91266",
"dweb:/ipfs/QmSotEH7zF3vrEgo2gZuunWwroHgc6bw7TVRntzv7jsJn1"
],
"license": "AGPL-3.0"
},
"src/interfaces/IPoolIncentivesController.sol": {
"keccak256": "0x7cb2c32050814e6d6d962a603104facc3bb1dad15171304e3ee756648e8f9ae1",
"urls": [
"bzz-raw://cf534f592706b2a61c539c03e5d1e199c15472bcfb4ee69838e5c93ba7914466",
"dweb:/ipfs/QmPrvXhJigK1Ke51YwAWHon1Kv88WT26iD3MwzCaPDs1Kv"
],
"license": "AGPL-3.0"
},
"src/interfaces/IScaledBalanceToken.sol": {
"keccak256": "0xb6a8f00773c5f58af761573f39f6aa3649c9deec5c4e078f5e3ca78940e4eac7",
"urls": [
"bzz-raw://0938c6fd92b015670a2bcf5ff971aafbc6295e07c78d1300c5e36a67002dc70c",
"dweb:/ipfs/QmYDcxNaAAfnupwDcDN1xtQcCEXTwW1FWiaTiU3MksCQ1Z"
],
"license": "AGPL-3.0"
},
"src/interfaces/IStableDebtToken.sol": {
"keccak256": "0x964a76facf6d0ea459fd0222c5e8036efea4e9193af3851d68190052037755b4",
"urls": [
"bzz-raw://6eebeccfdd76a6e7691402b699c1185df09e8fe80c94cc059bd797a2931b9d3e",
"dweb:/ipfs/QmeRY3xnu979DmjgFZSEaNgEkWgjtj4Hjpg9gW3bMoaZ1v"
],
"license": "AGPL-3.0"
},
"src/protocol/libraries/helpers/Errors.sol": {
"keccak256": "0x490e76871922e89a13ba0bb88977be18c143fa9d0cd9afb033744a3d81479c52",
"urls": [
"bzz-raw://1c409d4d1e1689d8d8f3c3e361198d20f3b6476608c5316d8e2d91f52373e8e3",
"dweb:/ipfs/QmRZaYpxqjmBpbxb51KqswKYPSeCsU3ejbmk5E3MrMxJaM"
],
"license": "AGPL-3.0"
},
"src/protocol/libraries/math/MathUtils.sol": {
"keccak256": "0x1c856137c4ef9d713b19a65adeb47c4490bd3b8414d7f28b364625226926779f",
"urls": [
"bzz-raw://15c029cd4a3becaa47c72c1f5c18986b0a3cb488d8145e0bf88ce618a3d70841",
"dweb:/ipfs/QmSYaWpWPbEHkRCegu5edAuRS3HTwyN2mFoSKm4yfGeec9"
],
"license": "AGPL-3.0"
},
"src/protocol/libraries/math/WadRayMath.sol": {
"keccak256": "0xb29e8edc0e0e6bfead27945357c9e4a66e0c11e58ff3b87ee68ed1b5ca416735",
"urls": [
"bzz-raw://d1b4377995155f32bb6c3ba558875c617fa63601c597099d3460063ac2a15d93",
"dweb:/ipfs/QmUvCE6Q2J62sMgQCCEbQauWSYJpMiu3QCgWa6mZnEmcK2"
],
"license": "AGPL-3.0"
},
"src/protocol/libraries/types/ConfigTypes.sol": {
"keccak256": "0xa8f9b14d9adf738033fd1847b30012d0e022027614fd6c9bb31a01bc6bfb1634",
"urls": [
"bzz-raw://b20c579d1b683dd5977a675c2e46adeebd56c96faa68cda9b0767edf02a5b650",
"dweb:/ipfs/QmPULpaX2ouktArvXJxYNVPQ9vKBhEeCYA4smo8v57qFLD"
],
"license": "AGPL-3.0"
},
"src/protocol/libraries/types/DataTypes.sol": {
"keccak256": "0x070f7865fe84ce4c9ebd86bbe24771607fbdb4e8777510b46cb5064e4d9b90a3",
"urls": [
"bzz-raw://504fd0c937cc69cc0737c4ef5dcec477017ccbff609b45b210274fd7bf0792cf",
"dweb:/ipfs/QmeW1TkAHib7XRBVmgMRTdmsa4Rg9HVToTMnifEE1C7mTi"
],
"license": "AGPL-3.0"
},
"src/protocol/tokenization/StableDebtToken.sol": {
"keccak256": "0x101a2f883130cd5b551f4d0e815ed7e911a1c8f35d884e2d2c4148263fc6eb81",
"urls": [
"bzz-raw://6406cd3edbeb703adb79752a81080ccbd87fb93394b654685cd7aad529772ba1",
"dweb:/ipfs/QmZxvjR5oTe6jWqyuTyiiKRpSiz6nhFoRvuVEZZwbBiHCS"
],
"license": "AGPL-3.0"
},
"src/protocol/tokenization/base/DebtTokenBase.sol": {
"keccak256": "0x7a3cc782fbb4308dc2981007d00d94a507da3185db59628f209116af4e31f342",
"urls": [
"bzz-raw://a709ab96e62f86169fa36f760df6cfe9db532f5ce0b95e9437cdc93ec86273dc",
"dweb:/ipfs/QmXJ8az9pqhhp4XSufsPTA1bhz5KHGDdFsm53itWrhi3gJ"
],
"license": "AGPL-3.0"
},
"src/protocol/tokenization/base/IncentivizedERC20.sol": {
"keccak256": "0xeef558a6fb8826dd7eff89e1eb24072b5533825cbbfd3ee950623bb433ecabc6",
"urls": [
"bzz-raw://4453844f67a9d9339dda3d5081073188d45b8fd274aea524b239e3462ef67236",
"dweb:/ipfs/QmVxGsuhu1NGFd5WqnGZns8pY1VEUALhMUTx76x6hxhkn8"
],
"license": "AGPL-3.0"
}
},
"version": 1
},
"ast": {
"absolutePath": "src/protocol/tokenization/StableDebtToken.sol",
"id": 71314,
"exportedSymbols": {
"DebtTokenBase": [
72045
],
"ERC20Upgradeable": [
27111
],
"Errors": [
57944
],
"IAddressProvider": [
46447
],
"IERC20Upgradeable": [
27189
],
"ILendingPool": [
48084
],
"IPoolIncentivesController": [
48421
],
"IStableDebtToken": [
48707
],
"IncentivizedERC20": [
72276
],
"Initializable": [
26136
],
"MathUtils": [
64132
],
"SafeMath": [
36719
],
"StableDebtToken": [
71313
],
"WadRayMath": [
64503
]
},
"nodeType": "SourceUnit",
"src": "38:16803:160",
"nodes": [
{
"id": 70329,
"nodeType": "PragmaDirective",
"src": "38:23:160",
"nodes": [],
"literals": [
"solidity",
"0.8",
".16"
]
},
{
"id": 70331,
"nodeType": "ImportDirective",
"src": "65:73:160",
"nodes": [],
"absolutePath": "src/interfaces/IStableDebtToken.sol",
"file": "../../interfaces/IStableDebtToken.sol",
"nameLocation": "-1:-1:-1",
"scope": 71314,
"sourceUnit": 48708,
"symbolAliases": [
{
"foreign": {
"id": 70330,
"name": "IStableDebtToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48707,
"src": "74:16:160",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 70333,
"nodeType": "ImportDirective",
"src": "140:65:160",
"nodes": [],
"absolutePath": "src/interfaces/ILendingPool.sol",
"file": "../../interfaces/ILendingPool.sol",
"nameLocation": "-1:-1:-1",
"scope": 71314,
"sourceUnit": 48085,
"symbolAliases": [
{
"foreign": {
"id": 70332,
"name": "ILendingPool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48084,
"src": "149:12:160",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 70335,
"nodeType": "ImportDirective",
"src": "207:73:160",
"nodes": [],
"absolutePath": "src/interfaces/IAddressProvider.sol",
"file": "../../interfaces/IAddressProvider.sol",
"nameLocation": "-1:-1:-1",
"scope": 71314,
"sourceUnit": 46448,
"symbolAliases": [
{
"foreign": {
"id": 70334,
"name": "IAddressProvider",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 46447,
"src": "216:16:160",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 70337,
"nodeType": "ImportDirective",
"src": "282:91:160",
"nodes": [],
"absolutePath": "src/interfaces/IPoolIncentivesController.sol",
"file": "../../interfaces/IPoolIncentivesController.sol",
"nameLocation": "-1:-1:-1",
"scope": 71314,
"sourceUnit": 48422,
"symbolAliases": [
{
"foreign": {
"id": 70336,
"name": "IPoolIncentivesController",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48421,
"src": "291:25:160",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 70339,
"nodeType": "ImportDirective",
"src": "377:57:160",
"nodes": [],
"absolutePath": "src/protocol/tokenization/base/DebtTokenBase.sol",
"file": "./base/DebtTokenBase.sol",
"nameLocation": "-1:-1:-1",
"scope": 71314,
"sourceUnit": 72046,
"symbolAliases": [
{
"foreign": {
"id": 70338,
"name": "DebtTokenBase",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 72045,
"src": "386:13:160",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 70341,
"nodeType": "ImportDirective",
"src": "436:65:160",
"nodes": [],
"absolutePath": "src/protocol/tokenization/base/IncentivizedERC20.sol",
"file": "./base/IncentivizedERC20.sol",
"nameLocation": "-1:-1:-1",
"scope": 71314,
"sourceUnit": 72277,
"symbolAliases": [
{
"foreign": {
"id": 70340,
"name": "IncentivizedERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 72276,
"src": "445:17:160",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 70343,
"nodeType": "ImportDirective",
"src": "505:60:160",
"nodes": [],
"absolutePath": "src/protocol/libraries/math/MathUtils.sol",
"file": "../libraries/math/MathUtils.sol",
"nameLocation": "-1:-1:-1",
"scope": 71314,
"sourceUnit": 64133,
"symbolAliases": [
{
"foreign": {
"id": 70342,
"name": "MathUtils",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 64132,
"src": "514:9:160",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 70345,
"nodeType": "ImportDirective",
"src": "567:62:160",
"nodes": [],
"absolutePath": "src/protocol/libraries/math/WadRayMath.sol",
"file": "../libraries/math/WadRayMath.sol",
"nameLocation": "-1:-1:-1",
"scope": 71314,
"sourceUnit": 64504,
"symbolAliases": [
{
"foreign": {
"id": 70344,
"name": "WadRayMath",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 64503,
"src": "576:10:160",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 70347,
"nodeType": "ImportDirective",
"src": "631:56:160",
"nodes": [],
"absolutePath": "src/protocol/libraries/helpers/Errors.sol",
"file": "../libraries/helpers/Errors.sol",
"nameLocation": "-1:-1:-1",
"scope": 71314,
"sourceUnit": 57945,
"symbolAliases": [
{
"foreign": {
"id": 70346,
"name": "Errors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 57944,
"src": "640:6:160",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 70349,
"nodeType": "ImportDirective",
"src": "691:106:160",
"nodes": [],
"absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol",
"file": "@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol",
"nameLocation": "-1:-1:-1",
"scope": 71314,
"sourceUnit": 27190,
"symbolAliases": [
{
"foreign": {
"id": 70348,
"name": "IERC20Upgradeable",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27189,
"src": "700:17:160",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 70351,
"nodeType": "ImportDirective",
"src": "799:104:160",
"nodes": [],
"absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol",
"file": "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol",
"nameLocation": "-1:-1:-1",
"scope": 71314,
"sourceUnit": 27112,
"symbolAliases": [
{
"foreign": {
"id": 70350,
"name": "ERC20Upgradeable",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27111,
"src": "808:16:160",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 70353,
"nodeType": "ImportDirective",
"src": "905:98:160",
"nodes": [],
"absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol",
"file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
"nameLocation": "-1:-1:-1",
"scope": 71314,
"sourceUnit": 26137,
"symbolAliases": [
{
"foreign": {
"id": 70352,
"name": "Initializable",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26136,
"src": "914:13:160",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 70355,
"nodeType": "ImportDirective",
"src": "1005:75:160",
"nodes": [],
"absolutePath": "lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol",
"file": "@openzeppelin/contracts/utils/math/SafeMath.sol",
"nameLocation": "-1:-1:-1",
"scope": 71314,
"sourceUnit": 36720,
"symbolAliases": [
{
"foreign": {
"id": 70354,
"name": "SafeMath",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 36719,
"src": "1014:8:160",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 71313,
"nodeType": "ContractDefinition",
"src": "1327:15512:160",
"nodes": [
{
"id": 70363,
"nodeType": "UsingForDirective",
"src": "1394:29:160",
"nodes": [],
"global": false,
"libraryName": {
"id": 70361,
"name": "WadRayMath",
"nameLocations": [
"1400:10:160"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 64503,
"src": "1400:10:160"
},
"typeName": {
"id": 70362,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1415:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
{
"id": 70366,
"nodeType": "UsingForDirective",
"src": "1429:27:160",
"nodes": [],
"global": false,
"libraryName": {
"id": 70364,
"name": "SafeMath",
"nameLocations": [
"1435:8:160"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 36719,
"src": "1435:8:160"
},
"typeName": {
"id": 70365,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1448:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
{
"id": 70369,
"nodeType": "VariableDeclaration",
"src": "1464:42:160",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_addressProvider",
"nameLocation": "1490:16:160",
"scope": 71313,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
},
"typeName": {
"id": 70368,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 70367,
"name": "IAddressProvider",
"nameLocations": [
"1464:16:160"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 46447,
"src": "1464:16:160"
},
"referencedDeclaration": 46447,
"src": "1464:16:160",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
}
},
"visibility": "internal"
},
{
"id": 70371,
"nodeType": "VariableDeclaration",
"src": "1519:38:160",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_underlyingCollateral",
"nameLocation": "1536:21:160",
"scope": 71313,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 70370,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1519:7:160",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"id": 70373,
"nodeType": "VariableDeclaration",
"src": "1564:33:160",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_underlyingAsset",
"nameLocation": "1581:16:160",
"scope": 71313,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 70372,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1564:7:160",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"id": 70375,
"nodeType": "VariableDeclaration",
"src": "1604:38:160",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_underlyingMaxTokenId",
"nameLocation": "1621:21:160",
"scope": 71313,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70374,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1604:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"id": 70377,
"nodeType": "VariableDeclaration",
"src": "1649:38:160",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_underlyingMinTokenId",
"nameLocation": "1666:21:160",
"scope": 71313,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70376,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1649:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"id": 70379,
"nodeType": "VariableDeclaration",
"src": "1696:31:160",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_avgStableRate",
"nameLocation": "1713:14:160",
"scope": 71313,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70378,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1696:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"id": 70383,
"nodeType": "VariableDeclaration",
"src": "1734:47:160",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_timestamps",
"nameLocation": "1770:11:160",
"scope": 71313,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint40_$",
"typeString": "mapping(address => uint40)"
},
"typeName": {
"id": 70382,
"keyType": {
"id": 70380,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1742:7:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "1734:26:160",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint40_$",
"typeString": "mapping(address => uint40)"
},
"valueType": {
"id": 70381,
"name": "uint40",
"nodeType": "ElementaryTypeName",
"src": "1753:6:160",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
}
},
"visibility": "internal"
},
{
"id": 70387,
"nodeType": "VariableDeclaration",
"src": "1788:53:160",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_usersStableRate",
"nameLocation": "1825:16:160",
"scope": 71313,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
},
"typeName": {
"id": 70386,
"keyType": {
"id": 70384,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1796:7:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "1788:27:160",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
},
"valueType": {
"id": 70385,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1807:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
"visibility": "internal"
},
{
"id": 70389,
"nodeType": "VariableDeclaration",
"src": "1848:37:160",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_totalSupplyTimestamp",
"nameLocation": "1864:21:160",
"scope": 71313,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
},
"typeName": {
"id": 70388,
"name": "uint40",
"nodeType": "ElementaryTypeName",
"src": "1848:6:160",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"visibility": "internal"
},
{
"id": 70397,
"nodeType": "FunctionDefinition",
"src": "1948:55:160",
"nodes": [],
"body": {
"id": 70396,
"nodeType": "Block",
"src": "1962:41:160",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 70393,
"name": "_disableInitializers",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26117,
"src": "1973:20:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
"typeString": "function ()"
}
},
"id": 70394,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1973:22:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 70395,
"nodeType": "ExpressionStatement",
"src": "1973:22:160"
}
]
},
"documentation": {
"id": 70390,
"nodeType": "StructuredDocumentation",
"src": "1894:48:160",
"text": "@custom:oz-upgrades-unsafe-allow constructor"
},
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nameLocation": "-1:-1:-1",
"parameters": {
"id": 70391,
"nodeType": "ParameterList",
"parameters": [],
"src": "1959:2:160"
},
"returnParameters": {
"id": 70392,
"nodeType": "ParameterList",
"parameters": [],
"src": "1962:0:160"
},
"scope": 71313,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"id": 70467,
"nodeType": "FunctionDefinition",
"src": "2692:1049:160",
"nodes": [],
"body": {
"id": 70466,
"nodeType": "Block",
"src": "3080:661:160",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"id": 70421,
"name": "debtTokenName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70412,
"src": "3116:13:160",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"id": 70422,
"name": "debtTokenSymbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70414,
"src": "3131:15:160",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"id": 70423,
"name": "debtTokenDecimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70410,
"src": "3148:17:160",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 70420,
"name": "__IncentivizedERC20_init",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 72081,
"src": "3091:24:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$__$",
"typeString": "function (string memory,string memory,uint8)"
}
},
"id": 70424,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3091:75:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 70425,
"nodeType": "ExpressionStatement",
"src": "3091:75:160"
},
{
"expression": {
"id": 70430,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 70426,
"name": "_addressProvider",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70369,
"src": "3179:16:160",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 70428,
"name": "addressProvider",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70400,
"src": "3215:15:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 70427,
"name": "IAddressProvider",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 46447,
"src": "3198:16:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IAddressProvider_$46447_$",
"typeString": "type(contract IAddressProvider)"
}
},
"id": 70429,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3198:33:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
}
},
"src": "3179:52:160",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
}
},
"id": 70431,
"nodeType": "ExpressionStatement",
"src": "3179:52:160"
},
{
"expression": {
"id": 70434,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 70432,
"name": "_underlyingCollateral",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70371,
"src": "3244:21:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 70433,
"name": "underlyingCollateral",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70402,
"src": "3268:20:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3244:44:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 70435,
"nodeType": "ExpressionStatement",
"src": "3244:44:160"
},
{
"expression": {
"id": 70438,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 70436,
"name": "_underlyingAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70373,
"src": "3299:16:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 70437,
"name": "underlyingAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70404,
"src": "3318:15:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3299:34:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 70439,
"nodeType": "ExpressionStatement",
"src": "3299:34:160"
},
{
"expression": {
"id": 70442,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 70440,
"name": "_underlyingMaxTokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70375,
"src": "3344:21:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 70441,
"name": "underlyingMaxTokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70406,
"src": "3368:20:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3344:44:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70443,
"nodeType": "ExpressionStatement",
"src": "3344:44:160"
},
{
"expression": {
"id": 70446,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 70444,
"name": "_underlyingMinTokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70377,
"src": "3399:21:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 70445,
"name": "underlyingMinTokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70408,
"src": "3423:20:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3399:44:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70447,
"nodeType": "ExpressionStatement",
"src": "3399:44:160"
},
{
"eventCall": {
"arguments": [
{
"id": 70449,
"name": "underlyingCollateral",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70402,
"src": "3487:20:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 70450,
"name": "underlyingAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70404,
"src": "3522:15:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 70453,
"name": "_getLendingPool",
"nodeType": "Identifier",
"overloadedDeclarations": [
71169
],
"referencedDeclaration": 71169,
"src": "3560:15:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_ILendingPool_$48084_$",
"typeString": "function () view returns (contract ILendingPool)"
}
},
"id": 70454,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3560:17:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
],
"id": 70452,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3552:7:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 70451,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3552:7:160",
"typeDescriptions": {}
}
},
"id": 70455,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3552:26:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 70458,
"name": "_getPoolIncentivesController",
"nodeType": "Identifier",
"overloadedDeclarations": [
71144
],
"referencedDeclaration": 71144,
"src": "3601:28:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IPoolIncentivesController_$48421_$",
"typeString": "function () view returns (contract IPoolIncentivesController)"
}
},
"id": 70459,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3601:30:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
}
],
"id": 70457,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3593:7:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 70456,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3593:7:160",
"typeDescriptions": {}
}
},
"id": 70460,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3593:39:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 70461,
"name": "debtTokenDecimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70410,
"src": "3647:17:160",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"id": 70462,
"name": "debtTokenName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70412,
"src": "3679:13:160",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"id": 70463,
"name": "debtTokenSymbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70414,
"src": "3707:15:160",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 70448,
"name": "Initialized",
"nodeType": "Identifier",
"overloadedDeclarations": [
25982,
47473
],
"referencedDeclaration": 47473,
"src": "3461:11:160",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint8_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (address,address,address,address,uint8,string memory,string memory)"
}
},
"id": 70464,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3461:272:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 70465,
"nodeType": "EmitStatement",
"src": "3456:277:160"
}
]
},
"baseFunctions": [
48621
],
"documentation": {
"id": 70398,
"nodeType": "StructuredDocumentation",
"src": "2011:675:160",
"text": " @dev Initializes the debt token.\n @param addressProvider The address provider \n @param underlyingCollateral The address of the underlying collateral of this debtToken\n @param underlyingAsset The address of the underlying asset of this debtToken\n @param underlyingMaxTokenId The max tokenId of the underlying collateral of this debtToken\n @param underlyingMinTokenId The min tokenId of the underlying collateral of this debtToken\n @param debtTokenDecimals The decimals of the debtToken, same as the underlying asset's\n @param debtTokenName The name of the token\n @param debtTokenSymbol The symbol of the token"
},
"functionSelector": "1e5fa51f",
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 70418,
"kind": "modifierInvocation",
"modifierName": {
"id": 70417,
"name": "initializer",
"nameLocations": [
"3062:11:160"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 26038,
"src": "3062:11:160"
},
"nodeType": "ModifierInvocation",
"src": "3062:11:160"
}
],
"name": "initialize",
"nameLocation": "2701:10:160",
"overrides": {
"id": 70416,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "3043:8:160"
},
"parameters": {
"id": 70415,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 70400,
"mutability": "mutable",
"name": "addressProvider",
"nameLocation": "2730:15:160",
"nodeType": "VariableDeclaration",
"scope": 70467,
"src": "2722:23:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 70399,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2722:7:160",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70402,
"mutability": "mutable",
"name": "underlyingCollateral",
"nameLocation": "2764:20:160",
"nodeType": "VariableDeclaration",
"scope": 70467,
"src": "2756:28:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 70401,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2756:7:160",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70404,
"mutability": "mutable",
"name": "underlyingAsset",
"nameLocation": "2803:15:160",
"nodeType": "VariableDeclaration",
"scope": 70467,
"src": "2795:23:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 70403,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2795:7:160",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70406,
"mutability": "mutable",
"name": "underlyingMaxTokenId",
"nameLocation": "2837:20:160",
"nodeType": "VariableDeclaration",
"scope": 70467,
"src": "2829:28:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70405,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2829:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70408,
"mutability": "mutable",
"name": "underlyingMinTokenId",
"nameLocation": "2876:20:160",
"nodeType": "VariableDeclaration",
"scope": 70467,
"src": "2868:28:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70407,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2868:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70410,
"mutability": "mutable",
"name": "debtTokenDecimals",
"nameLocation": "2913:17:160",
"nodeType": "VariableDeclaration",
"scope": 70467,
"src": "2907:23:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 70409,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "2907:5:160",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70412,
"mutability": "mutable",
"name": "debtTokenName",
"nameLocation": "2955:13:160",
"nodeType": "VariableDeclaration",
"scope": 70467,
"src": "2941:27:160",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 70411,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2941:6:160",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70414,
"mutability": "mutable",
"name": "debtTokenSymbol",
"nameLocation": "2993:15:160",
"nodeType": "VariableDeclaration",
"scope": 70467,
"src": "2979:29:160",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 70413,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2979:6:160",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "2711:304:160"
},
"returnParameters": {
"id": 70419,
"nodeType": "ParameterList",
"parameters": [],
"src": "3080:0:160"
},
"scope": 71313,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"id": 70477,
"nodeType": "FunctionDefinition",
"src": "3882:121:160",
"nodes": [],
"body": {
"id": 70476,
"nodeType": "Block",
"src": "3963:40:160",
"nodes": [],
"statements": [
{
"expression": {
"id": 70474,
"name": "_avgStableRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70379,
"src": "3981:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 70473,
"id": 70475,
"nodeType": "Return",
"src": "3974:21:160"
}
]
},
"baseFunctions": [
48649
],
"documentation": {
"id": 70468,
"nodeType": "StructuredDocumentation",
"src": "3749:127:160",
"text": " @dev Returns the average stable rate across all the stable rate debt\n @return the average stable rate*"
},
"functionSelector": "90f6fcf2",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getAverageStableRate",
"nameLocation": "3891:20:160",
"overrides": {
"id": 70470,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "3936:8:160"
},
"parameters": {
"id": 70469,
"nodeType": "ParameterList",
"parameters": [],
"src": "3911:2:160"
},
"returnParameters": {
"id": 70473,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 70472,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 70477,
"src": "3954:7:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70471,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3954:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "3953:9:160"
},
"scope": 71313,
"stateMutability": "view",
"virtual": true,
"visibility": "external"
},
{
"id": 70491,
"nodeType": "FunctionDefinition",
"src": "4128:133:160",
"nodes": [],
"body": {
"id": 70490,
"nodeType": "Block",
"src": "4218:43:160",
"nodes": [],
"statements": [
{
"expression": {
"baseExpression": {
"id": 70486,
"name": "_timestamps",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70383,
"src": "4236:11:160",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint40_$",
"typeString": "mapping(address => uint40)"
}
},
"id": 70488,
"indexExpression": {
"id": 70487,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70480,
"src": "4248:4:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4236:17:160",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"functionReturnParameters": 70485,
"id": 70489,
"nodeType": "Return",
"src": "4229:24:160"
}
]
},
"baseFunctions": [
48665
],
"documentation": {
"id": 70478,
"nodeType": "StructuredDocumentation",
"src": "4011:111:160",
"text": " @dev Returns the timestamp of the last user action\n @return The last update timestamp*"
},
"functionSelector": "79ce6b8c",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getUserLastUpdated",
"nameLocation": "4137:18:160",
"overrides": {
"id": 70482,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "4192:8:160"
},
"parameters": {
"id": 70481,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 70480,
"mutability": "mutable",
"name": "user",
"nameLocation": "4164:4:160",
"nodeType": "VariableDeclaration",
"scope": 70491,
"src": "4156:12:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 70479,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4156:7:160",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "4155:14:160"
},
"returnParameters": {
"id": 70485,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 70484,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 70491,
"src": "4210:6:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
},
"typeName": {
"id": 70483,
"name": "uint40",
"nodeType": "ElementaryTypeName",
"src": "4210:6:160",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"visibility": "internal"
}
],
"src": "4209:8:160"
},
"scope": 71313,
"stateMutability": "view",
"virtual": true,
"visibility": "external"
},
{
"id": 70505,
"nodeType": "FunctionDefinition",
"src": "4417:138:160",
"nodes": [],
"body": {
"id": 70504,
"nodeType": "Block",
"src": "4507:48:160",
"nodes": [],
"statements": [
{
"expression": {
"baseExpression": {
"id": 70500,
"name": "_usersStableRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70387,
"src": "4525:16:160",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 70502,
"indexExpression": {
"id": 70501,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70494,
"src": "4542:4:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4525:22:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 70499,
"id": 70503,
"nodeType": "Return",
"src": "4518:29:160"
}
]
},
"baseFunctions": [
48657
],
"documentation": {
"id": 70492,
"nodeType": "StructuredDocumentation",
"src": "4269:142:160",
"text": " @dev Returns the stable rate of the user\n @param user The address of the user\n @return The stable rate of user*"
},
"functionSelector": "e78c9b3b",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getUserStableRate",
"nameLocation": "4426:17:160",
"overrides": {
"id": 70496,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "4480:8:160"
},
"parameters": {
"id": 70495,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 70494,
"mutability": "mutable",
"name": "user",
"nameLocation": "4452:4:160",
"nodeType": "VariableDeclaration",
"scope": 70505,
"src": "4444:12:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 70493,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4444:7:160",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "4443:14:160"
},
"returnParameters": {
"id": 70499,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 70498,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 70505,
"src": "4498:7:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70497,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4498:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "4497:9:160"
},
"scope": 71313,
"stateMutability": "view",
"virtual": true,
"visibility": "external"
},
{
"id": 70552,
"nodeType": "FunctionDefinition",
"src": "4682:531:160",
"nodes": [],
"body": {
"id": 70551,
"nodeType": "Block",
"src": "4859:354:160",
"nodes": [],
"statements": [
{
"assignments": [
70517
],
"declarations": [
{
"constant": false,
"id": 70517,
"mutability": "mutable",
"name": "accountBalance",
"nameLocation": "4878:14:160",
"nodeType": "VariableDeclaration",
"scope": 70551,
"src": "4870:22:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70516,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4870:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 70522,
"initialValue": {
"arguments": [
{
"id": 70520,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70508,
"src": "4911:7:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 70518,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "4895:5:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_StableDebtToken_$71313_$",
"typeString": "type(contract super StableDebtToken)"
}
},
"id": 70519,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4901:9:160",
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 26618,
"src": "4895:15:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view returns (uint256)"
}
},
"id": 70521,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4895:24:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4870:49:160"
},
{
"assignments": [
70524
],
"declarations": [
{
"constant": false,
"id": 70524,
"mutability": "mutable",
"name": "stableRate",
"nameLocation": "4938:10:160",
"nodeType": "VariableDeclaration",
"scope": 70551,
"src": "4930:18:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70523,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4930:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 70528,
"initialValue": {
"baseExpression": {
"id": 70525,
"name": "_usersStableRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70387,
"src": "4951:16:160",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 70527,
"indexExpression": {
"id": 70526,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70508,
"src": "4968:7:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4951:25:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4930:46:160"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 70531,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 70529,
"name": "accountBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70517,
"src": "4991:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 70530,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5009:1:160",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "4991:19:160",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 70535,
"nodeType": "IfStatement",
"src": "4987:60:160",
"trueBody": {
"id": 70534,
"nodeType": "Block",
"src": "5012:35:160",
"statements": [
{
"expression": {
"hexValue": "30",
"id": 70532,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5034:1:160",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"functionReturnParameters": 70515,
"id": 70533,
"nodeType": "Return",
"src": "5027:8:160"
}
]
}
},
{
"assignments": [
70537
],
"declarations": [
{
"constant": false,
"id": 70537,
"mutability": "mutable",
"name": "interest",
"nameLocation": "5065:8:160",
"nodeType": "VariableDeclaration",
"scope": 70551,
"src": "5057:16:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70536,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5057:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 70545,
"initialValue": {
"arguments": [
{
"id": 70540,
"name": "stableRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70524,
"src": "5123:10:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"baseExpression": {
"id": 70541,
"name": "_timestamps",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70383,
"src": "5135:11:160",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint40_$",
"typeString": "mapping(address => uint40)"
}
},
"id": 70543,
"indexExpression": {
"id": 70542,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70508,
"src": "5147:7:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5135:20:160",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
],
"expression": {
"id": 70538,
"name": "MathUtils",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 64132,
"src": "5089:9:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_MathUtils_$64132_$",
"typeString": "type(library MathUtils)"
}
},
"id": 70539,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5099:23:160",
"memberName": "calculateLinearInterest",
"nodeType": "MemberAccess",
"referencedDeclaration": 63999,
"src": "5089:33:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint40_$returns$_t_uint256_$",
"typeString": "function (uint256,uint40) view returns (uint256)"
}
},
"id": 70544,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5089:67:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5057:99:160"
},
{
"expression": {
"arguments": [
{
"id": 70548,
"name": "interest",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70537,
"src": "5196:8:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 70546,
"name": "accountBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70517,
"src": "5174:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70547,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5189:6:160",
"memberName": "rayMul",
"nodeType": "MemberAccess",
"referencedDeclaration": 64384,
"src": "5174:21:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 70549,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5174:31:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 70515,
"id": 70550,
"nodeType": "Return",
"src": "5167:38:160"
}
]
},
"baseFunctions": [
26618,
27146
],
"documentation": {
"id": 70506,
"nodeType": "StructuredDocumentation",
"src": "4563:113:160",
"text": " @dev Calculates the current user debt balance\n @return The accumulated debt of the user*"
},
"functionSelector": "70a08231",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "balanceOf",
"nameLocation": "4691:9:160",
"overrides": {
"id": 70512,
"nodeType": "OverrideSpecifier",
"overrides": [
{
"id": 70510,
"name": "ERC20Upgradeable",
"nameLocations": [
"4788:16:160"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 27111,
"src": "4788:16:160"
},
{
"id": 70511,
"name": "IERC20Upgradeable",
"nameLocations": [
"4806:17:160"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 27189,
"src": "4806:17:160"
}
],
"src": "4778:46:160"
},
"parameters": {
"id": 70509,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 70508,
"mutability": "mutable",
"name": "account",
"nameLocation": "4709:7:160",
"nodeType": "VariableDeclaration",
"scope": 70552,
"src": "4701:15:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 70507,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4701:7:160",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "4700:17:160"
},
"returnParameters": {
"id": 70515,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 70514,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 70552,
"src": "4844:7:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70513,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4844:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "4843:9:160"
},
"scope": 71313,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 70563,
"nodeType": "StructDefinition",
"src": "5221:192:160",
"nodes": [],
"canonicalName": "StableDebtToken.MintLocalVars",
"members": [
{
"constant": false,
"id": 70554,
"mutability": "mutable",
"name": "previousSupply",
"nameLocation": "5261:14:160",
"nodeType": "VariableDeclaration",
"scope": 70563,
"src": "5253:22:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70553,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5253:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70556,
"mutability": "mutable",
"name": "nextSupply",
"nameLocation": "5294:10:160",
"nodeType": "VariableDeclaration",
"scope": 70563,
"src": "5286:18:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70555,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5286:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70558,
"mutability": "mutable",
"name": "amountInRay",
"nameLocation": "5323:11:160",
"nodeType": "VariableDeclaration",
"scope": 70563,
"src": "5315:19:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70557,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5315:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70560,
"mutability": "mutable",
"name": "newStableRate",
"nameLocation": "5353:13:160",
"nodeType": "VariableDeclaration",
"scope": 70563,
"src": "5345:21:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70559,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5345:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70562,
"mutability": "mutable",
"name": "currentAvgStableRate",
"nameLocation": "5385:20:160",
"nodeType": "VariableDeclaration",
"scope": 70563,
"src": "5377:28:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70561,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5377:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"name": "MintLocalVars",
"nameLocation": "5228:13:160",
"scope": 71313,
"visibility": "public"
},
{
"id": 70766,
"nodeType": "FunctionDefinition",
"src": "5992:1938:160",
"nodes": [],
"body": {
"id": 70765,
"nodeType": "Block",
"src": "6162:1768:160",
"nodes": [],
"statements": [
{
"assignments": [
70582
],
"declarations": [
{
"constant": false,
"id": 70582,
"mutability": "mutable",
"name": "vars",
"nameLocation": "6194:4:160",
"nodeType": "VariableDeclaration",
"scope": 70765,
"src": "6173:25:160",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
"typeString": "struct StableDebtToken.MintLocalVars"
},
"typeName": {
"id": 70581,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 70580,
"name": "MintLocalVars",
"nameLocations": [
"6173:13:160"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 70563,
"src": "6173:13:160"
},
"referencedDeclaration": 70563,
"src": "6173:13:160",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MintLocalVars_$70563_storage_ptr",
"typeString": "struct StableDebtToken.MintLocalVars"
}
},
"visibility": "internal"
}
],
"id": 70583,
"nodeType": "VariableDeclarationStatement",
"src": "6173:25:160"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 70592,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 70586,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 70584,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70566,
"src": "6229:4:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"id": 70585,
"name": "onBehalfOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70568,
"src": "6237:10:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "6229:18:160",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 70591,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 70587,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70566,
"src": "6264:4:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 70588,
"name": "_addressProvider",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70369,
"src": "6272:16:160",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
}
},
"id": 70589,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6289:14:160",
"memberName": "getWETHGateway",
"nodeType": "MemberAccess",
"referencedDeclaration": 46441,
"src": "6272:31:160",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
"typeString": "function () view external returns (address)"
}
},
"id": 70590,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6272:33:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "6264:41:160",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "6229:76:160",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 70600,
"nodeType": "IfStatement",
"src": "6211:179:160",
"trueBody": {
"id": 70599,
"nodeType": "Block",
"src": "6317:73:160",
"statements": [
{
"expression": {
"arguments": [
{
"id": 70594,
"name": "onBehalfOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70568,
"src": "6353:10:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 70595,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70566,
"src": "6365:4:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 70596,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70570,
"src": "6371:6:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 70593,
"name": "_decreaseBorrowAllowance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 72032,
"src": "6328:24:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 70597,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6328:50:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 70598,
"nodeType": "ExpressionStatement",
"src": "6328:50:160"
}
]
}
},
{
"assignments": [
null,
70602,
70604
],
"declarations": [
null,
{
"constant": false,
"id": 70602,
"mutability": "mutable",
"name": "currentBalance",
"nameLocation": "6413:14:160",
"nodeType": "VariableDeclaration",
"scope": 70765,
"src": "6405:22:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70601,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6405:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70604,
"mutability": "mutable",
"name": "balanceIncrease",
"nameLocation": "6437:15:160",
"nodeType": "VariableDeclaration",
"scope": 70765,
"src": "6429:23:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70603,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6429:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 70608,
"initialValue": {
"arguments": [
{
"id": 70606,
"name": "onBehalfOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70568,
"src": "6482:10:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 70605,
"name": "_calculateBalanceIncrease",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71010,
"src": "6456:25:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
"typeString": "function (address) view returns (uint256,uint256,uint256)"
}
},
"id": 70607,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6456:37:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
"typeString": "tuple(uint256,uint256,uint256)"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "6402:91:160"
},
{
"expression": {
"id": 70614,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"expression": {
"id": 70609,
"name": "vars",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70582,
"src": "6506:4:160",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
"typeString": "struct StableDebtToken.MintLocalVars memory"
}
},
"id": 70611,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberLocation": "6511:14:160",
"memberName": "previousSupply",
"nodeType": "MemberAccess",
"referencedDeclaration": 70554,
"src": "6506:19:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 70612,
"name": "totalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [
71072
],
"referencedDeclaration": 71072,
"src": "6528:11:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 70613,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6528:13:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "6506:35:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70615,
"nodeType": "ExpressionStatement",
"src": "6506:35:160"
},
{
"expression": {
"id": 70620,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"expression": {
"id": 70616,
"name": "vars",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70582,
"src": "6552:4:160",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
"typeString": "struct StableDebtToken.MintLocalVars memory"
}
},
"id": 70618,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberLocation": "6557:20:160",
"memberName": "currentAvgStableRate",
"nodeType": "MemberAccess",
"referencedDeclaration": 70562,
"src": "6552:25:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 70619,
"name": "_avgStableRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70379,
"src": "6580:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "6552:42:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70621,
"nodeType": "ExpressionStatement",
"src": "6552:42:160"
},
{
"expression": {
"id": 70630,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"expression": {
"id": 70622,
"name": "vars",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70582,
"src": "6605:4:160",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
"typeString": "struct StableDebtToken.MintLocalVars memory"
}
},
"id": 70624,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberLocation": "6610:10:160",
"memberName": "nextSupply",
"nodeType": "MemberAccess",
"referencedDeclaration": 70556,
"src": "6605:15:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 70628,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70570,
"src": "6647:6:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"expression": {
"id": 70625,
"name": "vars",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70582,
"src": "6623:4:160",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
"typeString": "struct StableDebtToken.MintLocalVars memory"
}
},
"id": 70626,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6628:14:160",
"memberName": "previousSupply",
"nodeType": "MemberAccess",
"referencedDeclaration": 70554,
"src": "6623:19:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70627,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6643:3:160",
"memberName": "add",
"nodeType": "MemberAccess",
"referencedDeclaration": 36583,
"src": "6623:23:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 70629,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6623:31:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "6605:49:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70631,
"nodeType": "ExpressionStatement",
"src": "6605:49:160"
},
{
"expression": {
"id": 70638,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"expression": {
"id": 70632,
"name": "vars",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70582,
"src": "6667:4:160",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
"typeString": "struct StableDebtToken.MintLocalVars memory"
}
},
"id": 70634,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberLocation": "6672:11:160",
"memberName": "amountInRay",
"nodeType": "MemberAccess",
"referencedDeclaration": 70558,
"src": "6667:16:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 70635,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70570,
"src": "6686:6:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70636,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6693:8:160",
"memberName": "wadToRay",
"nodeType": "MemberAccess",
"referencedDeclaration": 64446,
"src": "6686:15:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint256)"
}
},
"id": 70637,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6686:17:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "6667:36:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70639,
"nodeType": "ExpressionStatement",
"src": "6667:36:160"
},
{
"expression": {
"id": 70666,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"expression": {
"id": 70640,
"name": "vars",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70582,
"src": "6716:4:160",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
"typeString": "struct StableDebtToken.MintLocalVars memory"
}
},
"id": 70642,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberLocation": "6721:13:160",
"memberName": "newStableRate",
"nodeType": "MemberAccess",
"referencedDeclaration": 70560,
"src": "6716:18:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"arguments": [
{
"id": 70661,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70570,
"src": "6903:6:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 70659,
"name": "currentBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70602,
"src": "6884:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70660,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6899:3:160",
"memberName": "add",
"nodeType": "MemberAccess",
"referencedDeclaration": 36583,
"src": "6884:18:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 70662,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6884:26:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70663,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6911:8:160",
"memberName": "wadToRay",
"nodeType": "MemberAccess",
"referencedDeclaration": 64446,
"src": "6884:35:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint256)"
}
},
"id": 70664,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6884:37:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"arguments": [
{
"arguments": [
{
"id": 70655,
"name": "rate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70572,
"src": "6856:4:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"expression": {
"id": 70652,
"name": "vars",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70582,
"src": "6832:4:160",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
"typeString": "struct StableDebtToken.MintLocalVars memory"
}
},
"id": 70653,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6837:11:160",
"memberName": "amountInRay",
"nodeType": "MemberAccess",
"referencedDeclaration": 70558,
"src": "6832:16:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70654,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6849:6:160",
"memberName": "rayMul",
"nodeType": "MemberAccess",
"referencedDeclaration": 64384,
"src": "6832:23:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 70656,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6832:29:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 70647,
"name": "currentBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70602,
"src": "6787:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70648,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6802:8:160",
"memberName": "wadToRay",
"nodeType": "MemberAccess",
"referencedDeclaration": 64446,
"src": "6787:23:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint256)"
}
},
"id": 70649,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6787:25:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"baseExpression": {
"id": 70643,
"name": "_usersStableRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70387,
"src": "6737:16:160",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 70645,
"indexExpression": {
"id": 70644,
"name": "onBehalfOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70568,
"src": "6754:10:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "6737:28:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70646,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6780:6:160",
"memberName": "rayMul",
"nodeType": "MemberAccess",
"referencedDeclaration": 64384,
"src": "6737:49:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 70650,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6737:76:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70651,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6828:3:160",
"memberName": "add",
"nodeType": "MemberAccess",
"referencedDeclaration": 36583,
"src": "6737:94:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 70657,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6737:125:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70658,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6877:6:160",
"memberName": "rayDiv",
"nodeType": "MemberAccess",
"referencedDeclaration": 64411,
"src": "6737:146:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 70665,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6737:185:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "6716:206:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70667,
"nodeType": "ExpressionStatement",
"src": "6716:206:160"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 70676,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 70669,
"name": "vars",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70582,
"src": "6943:4:160",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
"typeString": "struct StableDebtToken.MintLocalVars memory"
}
},
"id": 70670,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6948:13:160",
"memberName": "newStableRate",
"nodeType": "MemberAccess",
"referencedDeclaration": 70560,
"src": "6943:18:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"expression": {
"arguments": [
{
"id": 70673,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "6970:7:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint128_$",
"typeString": "type(uint128)"
},
"typeName": {
"id": 70672,
"name": "uint128",
"nodeType": "ElementaryTypeName",
"src": "6970:7:160",
"typeDescriptions": {}
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_type$_t_uint128_$",
"typeString": "type(uint128)"
}
],
"id": 70671,
"name": "type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -27,
"src": "6965:4:160",
"typeDescriptions": {
"typeIdentifier": "t_function_metatype_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 70674,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6965:13:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_magic_meta_type_t_uint128",
"typeString": "type(uint128)"
}
},
"id": 70675,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "6979:3:160",
"memberName": "max",
"nodeType": "MemberAccess",
"src": "6965:17:160",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"src": "6943:39:160",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 70677,
"name": "Errors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 57944,
"src": "6984:6:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_Errors_$57944_$",
"typeString": "type(library Errors)"
}
},
"id": 70678,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "6991:24:160",
"memberName": "LPL_STABLE_DEBT_OVERFLOW",
"nodeType": "MemberAccess",
"referencedDeclaration": 57748,
"src": "6984:31:160",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 70668,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "6935:7:160",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 70679,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6935:81:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 70680,
"nodeType": "ExpressionStatement",
"src": "6935:81:160"
},
{
"expression": {
"id": 70686,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 70681,
"name": "_usersStableRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70387,
"src": "7027:16:160",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 70683,
"indexExpression": {
"id": 70682,
"name": "onBehalfOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70568,
"src": "7044:10:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "7027:28:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"expression": {
"id": 70684,
"name": "vars",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70582,
"src": "7058:4:160",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
"typeString": "struct StableDebtToken.MintLocalVars memory"
}
},
"id": 70685,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7063:13:160",
"memberName": "newStableRate",
"nodeType": "MemberAccess",
"referencedDeclaration": 70560,
"src": "7058:18:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "7027:49:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70687,
"nodeType": "ExpressionStatement",
"src": "7027:49:160"
},
{
"expression": {
"id": 70698,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 70688,
"name": "_totalSupplyTimestamp",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70389,
"src": "7125:21:160",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 70697,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 70689,
"name": "_timestamps",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70383,
"src": "7149:11:160",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint40_$",
"typeString": "mapping(address => uint40)"
}
},
"id": 70691,
"indexExpression": {
"id": 70690,
"name": "onBehalfOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70568,
"src": "7161:10:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "7149:23:160",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"expression": {
"id": 70694,
"name": "block",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -4,
"src": "7182:5:160",
"typeDescriptions": {
"typeIdentifier": "t_magic_block",
"typeString": "block"
}
},
"id": 70695,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7188:9:160",
"memberName": "timestamp",
"nodeType": "MemberAccess",
"src": "7182:15:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 70693,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "7175:6:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint40_$",
"typeString": "type(uint40)"
},
"typeName": {
"id": 70692,
"name": "uint40",
"nodeType": "ElementaryTypeName",
"src": "7175:6:160",
"typeDescriptions": {}
}
},
"id": 70696,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7175:23:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"src": "7149:49:160",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"src": "7125:73:160",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"id": 70699,
"nodeType": "ExpressionStatement",
"src": "7125:73:160"
},
{
"expression": {
"id": 70726,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"expression": {
"id": 70700,
"name": "vars",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70582,
"src": "7266:4:160",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
"typeString": "struct StableDebtToken.MintLocalVars memory"
}
},
"id": 70702,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberLocation": "7271:20:160",
"memberName": "currentAvgStableRate",
"nodeType": "MemberAccess",
"referencedDeclaration": 70562,
"src": "7266:25:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 70725,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 70703,
"name": "_avgStableRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70379,
"src": "7294:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"expression": {
"id": 70720,
"name": "vars",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70582,
"src": "7458:4:160",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
"typeString": "struct StableDebtToken.MintLocalVars memory"
}
},
"id": 70721,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7463:10:160",
"memberName": "nextSupply",
"nodeType": "MemberAccess",
"referencedDeclaration": 70556,
"src": "7458:15:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70722,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7474:8:160",
"memberName": "wadToRay",
"nodeType": "MemberAccess",
"referencedDeclaration": 64446,
"src": "7458:24:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint256)"
}
},
"id": 70723,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7458:26:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"arguments": [
{
"arguments": [
{
"expression": {
"id": 70715,
"name": "vars",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70582,
"src": "7422:4:160",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
"typeString": "struct StableDebtToken.MintLocalVars memory"
}
},
"id": 70716,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7427:11:160",
"memberName": "amountInRay",
"nodeType": "MemberAccess",
"referencedDeclaration": 70558,
"src": "7422:16:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 70713,
"name": "rate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70572,
"src": "7410:4:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70714,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7415:6:160",
"memberName": "rayMul",
"nodeType": "MemberAccess",
"referencedDeclaration": 64384,
"src": "7410:11:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 70717,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7410:29:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"expression": {
"id": 70707,
"name": "vars",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70582,
"src": "7364:4:160",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
"typeString": "struct StableDebtToken.MintLocalVars memory"
}
},
"id": 70708,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7369:14:160",
"memberName": "previousSupply",
"nodeType": "MemberAccess",
"referencedDeclaration": 70554,
"src": "7364:19:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70709,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7384:8:160",
"memberName": "wadToRay",
"nodeType": "MemberAccess",
"referencedDeclaration": 64446,
"src": "7364:28:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint256)"
}
},
"id": 70710,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7364:30:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"expression": {
"id": 70704,
"name": "vars",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70582,
"src": "7311:4:160",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
"typeString": "struct StableDebtToken.MintLocalVars memory"
}
},
"id": 70705,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7326:20:160",
"memberName": "currentAvgStableRate",
"nodeType": "MemberAccess",
"referencedDeclaration": 70562,
"src": "7311:35:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70706,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7357:6:160",
"memberName": "rayMul",
"nodeType": "MemberAccess",
"referencedDeclaration": 64384,
"src": "7311:52:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 70711,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7311:84:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70712,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7406:3:160",
"memberName": "add",
"nodeType": "MemberAccess",
"referencedDeclaration": 36583,
"src": "7311:98:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 70718,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7311:129:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70719,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7451:6:160",
"memberName": "rayDiv",
"nodeType": "MemberAccess",
"referencedDeclaration": 64411,
"src": "7311:146:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 70724,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7311:174:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "7294:191:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "7266:219:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70727,
"nodeType": "ExpressionStatement",
"src": "7266:219:160"
},
{
"expression": {
"arguments": [
{
"id": 70729,
"name": "onBehalfOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70568,
"src": "7504:10:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"id": 70732,
"name": "balanceIncrease",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70604,
"src": "7527:15:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 70730,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70570,
"src": "7516:6:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70731,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7523:3:160",
"memberName": "add",
"nodeType": "MemberAccess",
"referencedDeclaration": 36583,
"src": "7516:10:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 70733,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7516:27:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"expression": {
"id": 70734,
"name": "vars",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70582,
"src": "7545:4:160",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
"typeString": "struct StableDebtToken.MintLocalVars memory"
}
},
"id": 70735,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7550:14:160",
"memberName": "previousSupply",
"nodeType": "MemberAccess",
"referencedDeclaration": 70554,
"src": "7545:19:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 70728,
"name": "_mint",
"nodeType": "Identifier",
"overloadedDeclarations": [
71254,
72226
],
"referencedDeclaration": 71254,
"src": "7498:5:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256,uint256)"
}
},
"id": 70736,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7498:67:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 70737,
"nodeType": "ExpressionStatement",
"src": "7498:67:160"
},
{
"eventCall": {
"arguments": [
{
"arguments": [
{
"hexValue": "30",
"id": 70741,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7600:1:160",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 70740,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "7592:7:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 70739,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7592:7:160",
"typeDescriptions": {}
}
},
"id": 70742,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7592:10:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 70743,
"name": "onBehalfOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70568,
"src": "7604:10:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 70744,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70570,
"src": "7616:6:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 70738,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27123,
"src": "7583:8:160",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 70745,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7583:40:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 70746,
"nodeType": "EmitStatement",
"src": "7578:45:160"
},
{
"eventCall": {
"arguments": [
{
"id": 70748,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70566,
"src": "7660:4:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 70749,
"name": "onBehalfOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70568,
"src": "7679:10:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 70750,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70570,
"src": "7704:6:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 70751,
"name": "currentBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70602,
"src": "7725:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 70752,
"name": "balanceIncrease",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70604,
"src": "7754:15:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"expression": {
"id": 70753,
"name": "vars",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70582,
"src": "7784:4:160",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
"typeString": "struct StableDebtToken.MintLocalVars memory"
}
},
"id": 70754,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7789:13:160",
"memberName": "newStableRate",
"nodeType": "MemberAccess",
"referencedDeclaration": 70560,
"src": "7784:18:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"expression": {
"id": 70755,
"name": "vars",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70582,
"src": "7817:4:160",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
"typeString": "struct StableDebtToken.MintLocalVars memory"
}
},
"id": 70756,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7822:20:160",
"memberName": "currentAvgStableRate",
"nodeType": "MemberAccess",
"referencedDeclaration": 70562,
"src": "7817:25:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"expression": {
"id": 70757,
"name": "vars",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70582,
"src": "7857:4:160",
"typeDescriptions": {
"typeIdentifier": "t_struct$_MintLocalVars_$70563_memory_ptr",
"typeString": "struct StableDebtToken.MintLocalVars memory"
}
},
"id": 70758,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7862:10:160",
"memberName": "nextSupply",
"nodeType": "MemberAccess",
"referencedDeclaration": 70556,
"src": "7857:15:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 70747,
"name": "Mint",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48587,
"src": "7641:4:160",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256,uint256,uint256,uint256,uint256,uint256)"
}
},
"id": 70759,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7641:242:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 70760,
"nodeType": "EmitStatement",
"src": "7636:247:160"
},
{
"expression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 70763,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 70761,
"name": "currentBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70602,
"src": "7903:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 70762,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7921:1:160",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "7903:19:160",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 70579,
"id": 70764,
"nodeType": "Return",
"src": "7896:26:160"
}
]
},
"baseFunctions": [
48635
],
"documentation": {
"id": 70564,
"nodeType": "StructuredDocumentation",
"src": "5421:565:160",
"text": " @dev Mints debt token to the `onBehalfOf` address.\n - Only callable by the LendingPool\n - The resulting rate is the weighted average between the rate of the new debt\n and the rate of the previous debt\n @param user The address receiving the borrowed underlying, being the delegatee in case\n of credit delegate, or same as `onBehalfOf` otherwise\n @param onBehalfOf The address receiving the debt tokens\n @param amount The amount of debt tokens to mint\n @param rate The rate of the debt being minted*"
},
"functionSelector": "b3f1c93d",
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 70576,
"kind": "modifierInvocation",
"modifierName": {
"id": 70575,
"name": "onlyLendingPool",
"nameLocations": [
"6131:15:160"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 71811,
"src": "6131:15:160"
},
"nodeType": "ModifierInvocation",
"src": "6131:15:160"
}
],
"name": "mint",
"nameLocation": "6001:4:160",
"overrides": {
"id": 70574,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "6122:8:160"
},
"parameters": {
"id": 70573,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 70566,
"mutability": "mutable",
"name": "user",
"nameLocation": "6024:4:160",
"nodeType": "VariableDeclaration",
"scope": 70766,
"src": "6016:12:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 70565,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6016:7:160",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70568,
"mutability": "mutable",
"name": "onBehalfOf",
"nameLocation": "6047:10:160",
"nodeType": "VariableDeclaration",
"scope": 70766,
"src": "6039:18:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 70567,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6039:7:160",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70570,
"mutability": "mutable",
"name": "amount",
"nameLocation": "6076:6:160",
"nodeType": "VariableDeclaration",
"scope": 70766,
"src": "6068:14:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70569,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6068:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70572,
"mutability": "mutable",
"name": "rate",
"nameLocation": "6101:4:160",
"nodeType": "VariableDeclaration",
"scope": 70766,
"src": "6093:12:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70571,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6093:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "6005:107:160"
},
"returnParameters": {
"id": 70579,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 70578,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 70766,
"src": "6156:4:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 70577,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "6156:4:160",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "6155:6:160"
},
"scope": 71313,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 70963,
"nodeType": "FunctionDefinition",
"src": "8118:2582:160",
"nodes": [],
"body": {
"id": 70962,
"nodeType": "Block",
"src": "8196:2504:160",
"nodes": [],
"statements": [
{
"assignments": [
null,
70778,
70780
],
"declarations": [
null,
{
"constant": false,
"id": 70778,
"mutability": "mutable",
"name": "currentBalance",
"nameLocation": "8218:14:160",
"nodeType": "VariableDeclaration",
"scope": 70962,
"src": "8210:22:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70777,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8210:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70780,
"mutability": "mutable",
"name": "balanceIncrease",
"nameLocation": "8242:15:160",
"nodeType": "VariableDeclaration",
"scope": 70962,
"src": "8234:23:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70779,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8234:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 70784,
"initialValue": {
"arguments": [
{
"id": 70782,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70769,
"src": "8287:4:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 70781,
"name": "_calculateBalanceIncrease",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71010,
"src": "8261:25:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
"typeString": "function (address) view returns (uint256,uint256,uint256)"
}
},
"id": 70783,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8261:31:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
"typeString": "tuple(uint256,uint256,uint256)"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "8207:85:160"
},
{
"assignments": [
70786
],
"declarations": [
{
"constant": false,
"id": 70786,
"mutability": "mutable",
"name": "previousSupply",
"nameLocation": "8313:14:160",
"nodeType": "VariableDeclaration",
"scope": 70962,
"src": "8305:22:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70785,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8305:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 70789,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 70787,
"name": "totalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [
71072
],
"referencedDeclaration": 71072,
"src": "8330:11:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 70788,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8330:13:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "8305:38:160"
},
{
"assignments": [
70791
],
"declarations": [
{
"constant": false,
"id": 70791,
"mutability": "mutable",
"name": "newAvgStableRate",
"nameLocation": "8362:16:160",
"nodeType": "VariableDeclaration",
"scope": 70962,
"src": "8354:24:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70790,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8354:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 70793,
"initialValue": {
"hexValue": "30",
"id": 70792,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8381:1:160",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "8354:28:160"
},
{
"assignments": [
70795
],
"declarations": [
{
"constant": false,
"id": 70795,
"mutability": "mutable",
"name": "nextSupply",
"nameLocation": "8401:10:160",
"nodeType": "VariableDeclaration",
"scope": 70962,
"src": "8393:18:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70794,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8393:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 70797,
"initialValue": {
"hexValue": "30",
"id": 70796,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8414:1:160",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "8393:22:160"
},
{
"assignments": [
70799
],
"declarations": [
{
"constant": false,
"id": 70799,
"mutability": "mutable",
"name": "userStableRate",
"nameLocation": "8434:14:160",
"nodeType": "VariableDeclaration",
"scope": 70962,
"src": "8426:22:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70798,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8426:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 70803,
"initialValue": {
"baseExpression": {
"id": 70800,
"name": "_usersStableRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70387,
"src": "8451:16:160",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 70802,
"indexExpression": {
"id": 70801,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70769,
"src": "8468:4:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8451:22:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "8426:47:160"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 70806,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 70804,
"name": "previousSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70786,
"src": "8813:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"id": 70805,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70771,
"src": "8831:6:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "8813:24:160",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 70863,
"nodeType": "Block",
"src": "8890:709:160",
"statements": [
{
"expression": {
"id": 70817,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 70812,
"name": "nextSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70795,
"src": "8905:10:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 70815,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70771,
"src": "8937:6:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 70813,
"name": "previousSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70786,
"src": "8918:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70814,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "8933:3:160",
"memberName": "sub",
"nodeType": "MemberAccess",
"referencedDeclaration": 36598,
"src": "8918:18:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 70816,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8918:26:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "8905:39:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70818,
"nodeType": "ExpressionStatement",
"src": "8905:39:160"
},
{
"assignments": [
70820
],
"declarations": [
{
"constant": false,
"id": 70820,
"mutability": "mutable",
"name": "firstTerm",
"nameLocation": "8967:9:160",
"nodeType": "VariableDeclaration",
"scope": 70863,
"src": "8959:17:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70819,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8959:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 70827,
"initialValue": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 70823,
"name": "previousSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70786,
"src": "9001:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70824,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "9016:8:160",
"memberName": "wadToRay",
"nodeType": "MemberAccess",
"referencedDeclaration": 64446,
"src": "9001:23:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint256)"
}
},
"id": 70825,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9001:25:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 70821,
"name": "_avgStableRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70379,
"src": "8979:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70822,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "8994:6:160",
"memberName": "rayMul",
"nodeType": "MemberAccess",
"referencedDeclaration": 64384,
"src": "8979:21:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 70826,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8979:48:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "8959:68:160"
},
{
"assignments": [
70829
],
"declarations": [
{
"constant": false,
"id": 70829,
"mutability": "mutable",
"name": "secondTerm",
"nameLocation": "9050:10:160",
"nodeType": "VariableDeclaration",
"scope": 70863,
"src": "9042:18:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70828,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9042:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 70836,
"initialValue": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 70832,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70771,
"src": "9085:6:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70833,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "9092:8:160",
"memberName": "wadToRay",
"nodeType": "MemberAccess",
"referencedDeclaration": 64446,
"src": "9085:15:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint256)"
}
},
"id": 70834,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9085:17:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 70830,
"name": "userStableRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70799,
"src": "9063:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70831,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "9078:6:160",
"memberName": "rayMul",
"nodeType": "MemberAccess",
"referencedDeclaration": 64384,
"src": "9063:21:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 70835,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9063:40:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "9042:61:160"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 70839,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 70837,
"name": "secondTerm",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70829,
"src": "9359:10:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"id": 70838,
"name": "firstTerm",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70820,
"src": "9373:9:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9359:23:160",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 70861,
"nodeType": "Block",
"src": "9462:126:160",
"statements": [
{
"expression": {
"id": 70859,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 70847,
"name": "newAvgStableRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70791,
"src": "9481:16:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 70858,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 70848,
"name": "_avgStableRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70379,
"src": "9500:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 70854,
"name": "nextSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70795,
"src": "9550:10:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70855,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "9561:8:160",
"memberName": "wadToRay",
"nodeType": "MemberAccess",
"referencedDeclaration": 64446,
"src": "9550:19:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256) pure returns (uint256)"
}
},
"id": 70856,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9550:21:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"arguments": [
{
"id": 70851,
"name": "secondTerm",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70829,
"src": "9531:10:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 70849,
"name": "firstTerm",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70820,
"src": "9517:9:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70850,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "9527:3:160",
"memberName": "sub",
"nodeType": "MemberAccess",
"referencedDeclaration": 36598,
"src": "9517:13:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 70852,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9517:25:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70853,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "9543:6:160",
"memberName": "rayDiv",
"nodeType": "MemberAccess",
"referencedDeclaration": 64411,
"src": "9517:32:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 70857,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9517:55:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9500:72:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9481:91:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70860,
"nodeType": "ExpressionStatement",
"src": "9481:91:160"
}
]
},
"id": 70862,
"nodeType": "IfStatement",
"src": "9355:233:160",
"trueBody": {
"id": 70846,
"nodeType": "Block",
"src": "9384:72:160",
"statements": [
{
"expression": {
"id": 70844,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 70840,
"name": "newAvgStableRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70791,
"src": "9403:16:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 70843,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 70841,
"name": "_avgStableRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70379,
"src": "9422:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"hexValue": "30",
"id": 70842,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9439:1:160",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "9422:18:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9403:37:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70845,
"nodeType": "ExpressionStatement",
"src": "9403:37:160"
}
]
}
}
]
},
"id": 70864,
"nodeType": "IfStatement",
"src": "8809:790:160",
"trueBody": {
"id": 70811,
"nodeType": "Block",
"src": "8839:45:160",
"statements": [
{
"expression": {
"id": 70809,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 70807,
"name": "_avgStableRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70379,
"src": "8854:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"hexValue": "30",
"id": 70808,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8871:1:160",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "8854:18:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70810,
"nodeType": "ExpressionStatement",
"src": "8854:18:160"
}
]
}
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 70867,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 70865,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70771,
"src": "9615:6:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 70866,
"name": "currentBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70778,
"src": "9625:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9615:24:160",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 70891,
"nodeType": "Block",
"src": "9736:110:160",
"statements": [
{
"expression": {
"id": 70889,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 70881,
"name": "_timestamps",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70383,
"src": "9791:11:160",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint40_$",
"typeString": "mapping(address => uint40)"
}
},
"id": 70883,
"indexExpression": {
"id": 70882,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70769,
"src": "9803:4:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "9791:17:160",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"expression": {
"id": 70886,
"name": "block",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -4,
"src": "9818:5:160",
"typeDescriptions": {
"typeIdentifier": "t_magic_block",
"typeString": "block"
}
},
"id": 70887,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "9824:9:160",
"memberName": "timestamp",
"nodeType": "MemberAccess",
"src": "9818:15:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 70885,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9811:6:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint40_$",
"typeString": "type(uint40)"
},
"typeName": {
"id": 70884,
"name": "uint40",
"nodeType": "ElementaryTypeName",
"src": "9811:6:160",
"typeDescriptions": {}
}
},
"id": 70888,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9811:23:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"src": "9791:43:160",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"id": 70890,
"nodeType": "ExpressionStatement",
"src": "9791:43:160"
}
]
},
"id": 70892,
"nodeType": "IfStatement",
"src": "9611:235:160",
"trueBody": {
"id": 70880,
"nodeType": "Block",
"src": "9641:89:160",
"statements": [
{
"expression": {
"id": 70872,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 70868,
"name": "_usersStableRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70387,
"src": "9656:16:160",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 70870,
"indexExpression": {
"id": 70869,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70769,
"src": "9673:4:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "9656:22:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"hexValue": "30",
"id": 70871,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9681:1:160",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "9656:26:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70873,
"nodeType": "ExpressionStatement",
"src": "9656:26:160"
},
{
"expression": {
"id": 70878,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 70874,
"name": "_timestamps",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70383,
"src": "9697:11:160",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint40_$",
"typeString": "mapping(address => uint40)"
}
},
"id": 70876,
"indexExpression": {
"id": 70875,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70769,
"src": "9709:4:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "9697:17:160",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"hexValue": "30",
"id": 70877,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9717:1:160",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "9697:21:160",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"id": 70879,
"nodeType": "ExpressionStatement",
"src": "9697:21:160"
}
]
}
},
{
"expression": {
"id": 70899,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 70893,
"name": "_totalSupplyTimestamp",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70389,
"src": "9892:21:160",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"expression": {
"id": 70896,
"name": "block",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -4,
"src": "9923:5:160",
"typeDescriptions": {
"typeIdentifier": "t_magic_block",
"typeString": "block"
}
},
"id": 70897,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "9929:9:160",
"memberName": "timestamp",
"nodeType": "MemberAccess",
"src": "9923:15:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 70895,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9916:6:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint40_$",
"typeString": "type(uint40)"
},
"typeName": {
"id": 70894,
"name": "uint40",
"nodeType": "ElementaryTypeName",
"src": "9916:6:160",
"typeDescriptions": {}
}
},
"id": 70898,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9916:23:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"src": "9892:47:160",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"id": 70900,
"nodeType": "ExpressionStatement",
"src": "9892:47:160"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 70903,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 70901,
"name": "balanceIncrease",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70780,
"src": "9956:15:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"id": 70902,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70771,
"src": "9974:6:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9956:24:160",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 70951,
"nodeType": "Block",
"src": "10401:240:160",
"statements": [
{
"assignments": [
70930
],
"declarations": [
{
"constant": false,
"id": 70930,
"mutability": "mutable",
"name": "amountToBurn",
"nameLocation": "10424:12:160",
"nodeType": "VariableDeclaration",
"scope": 70951,
"src": "10416:20:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70929,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "10416:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 70935,
"initialValue": {
"arguments": [
{
"id": 70933,
"name": "balanceIncrease",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70780,
"src": "10450:15:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 70931,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70771,
"src": "10439:6:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70932,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "10446:3:160",
"memberName": "sub",
"nodeType": "MemberAccess",
"referencedDeclaration": 36598,
"src": "10439:10:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 70934,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10439:27:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "10416:50:160"
},
{
"expression": {
"arguments": [
{
"id": 70937,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70769,
"src": "10487:4:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 70938,
"name": "amountToBurn",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70930,
"src": "10493:12:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 70939,
"name": "previousSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70786,
"src": "10507:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 70936,
"name": "_burn",
"nodeType": "Identifier",
"overloadedDeclarations": [
71312,
72275
],
"referencedDeclaration": 71312,
"src": "10481:5:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256,uint256)"
}
},
"id": 70940,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10481:41:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 70941,
"nodeType": "ExpressionStatement",
"src": "10481:41:160"
},
{
"eventCall": {
"arguments": [
{
"id": 70943,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70769,
"src": "10547:4:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 70944,
"name": "amountToBurn",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70930,
"src": "10553:12:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 70945,
"name": "currentBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70778,
"src": "10567:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 70946,
"name": "balanceIncrease",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70780,
"src": "10583:15:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 70947,
"name": "newAvgStableRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70791,
"src": "10600:16:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 70948,
"name": "nextSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70795,
"src": "10618:10:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 70942,
"name": "Burn",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48602,
"src": "10542:4:160",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256,uint256,uint256,uint256,uint256)"
}
},
"id": 70949,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10542:87:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 70950,
"nodeType": "EmitStatement",
"src": "10537:92:160"
}
]
},
"id": 70952,
"nodeType": "IfStatement",
"src": "9952:689:160",
"trueBody": {
"id": 70928,
"nodeType": "Block",
"src": "9982:413:160",
"statements": [
{
"assignments": [
70905
],
"declarations": [
{
"constant": false,
"id": 70905,
"mutability": "mutable",
"name": "amountToMint",
"nameLocation": "10005:12:160",
"nodeType": "VariableDeclaration",
"scope": 70928,
"src": "9997:20:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70904,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9997:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 70910,
"initialValue": {
"arguments": [
{
"id": 70908,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70771,
"src": "10040:6:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 70906,
"name": "balanceIncrease",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70780,
"src": "10020:15:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70907,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "10036:3:160",
"memberName": "sub",
"nodeType": "MemberAccess",
"referencedDeclaration": 36598,
"src": "10020:19:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 70909,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10020:27:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "9997:50:160"
},
{
"expression": {
"arguments": [
{
"id": 70912,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70769,
"src": "10068:4:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 70913,
"name": "amountToMint",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70905,
"src": "10074:12:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 70914,
"name": "previousSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70786,
"src": "10088:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 70911,
"name": "_mint",
"nodeType": "Identifier",
"overloadedDeclarations": [
71254,
72226
],
"referencedDeclaration": 71254,
"src": "10062:5:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256,uint256)"
}
},
"id": 70915,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10062:41:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 70916,
"nodeType": "ExpressionStatement",
"src": "10062:41:160"
},
{
"eventCall": {
"arguments": [
{
"id": 70918,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70769,
"src": "10146:4:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 70919,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70769,
"src": "10169:4:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 70920,
"name": "amountToMint",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70905,
"src": "10192:12:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 70921,
"name": "currentBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70778,
"src": "10223:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 70922,
"name": "balanceIncrease",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70780,
"src": "10256:15:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 70923,
"name": "userStableRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70799,
"src": "10290:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 70924,
"name": "newAvgStableRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70791,
"src": "10323:16:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 70925,
"name": "nextSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70795,
"src": "10358:10:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 70917,
"name": "Mint",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48587,
"src": "10123:4:160",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256,uint256,uint256,uint256,uint256,uint256)"
}
},
"id": 70926,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10123:260:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 70927,
"nodeType": "EmitStatement",
"src": "10118:265:160"
}
]
}
},
{
"eventCall": {
"arguments": [
{
"id": 70954,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70769,
"src": "10667:4:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"hexValue": "30",
"id": 70957,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10681:1:160",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 70956,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "10673:7:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 70955,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10673:7:160",
"typeDescriptions": {}
}
},
"id": 70958,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10673:10:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 70959,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70771,
"src": "10685:6:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 70953,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27123,
"src": "10658:8:160",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 70960,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "10658:34:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 70961,
"nodeType": "EmitStatement",
"src": "10653:39:160"
}
]
},
"baseFunctions": [
48643
],
"documentation": {
"id": 70767,
"nodeType": "StructuredDocumentation",
"src": "7938:174:160",
"text": " @dev Burns debt of `user`\n @param user The address of the user getting his debt burned\n @param amount The amount of debt tokens getting burned*"
},
"functionSelector": "9dc29fac",
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 70775,
"kind": "modifierInvocation",
"modifierName": {
"id": 70774,
"name": "onlyLendingPool",
"nameLocations": [
"8180:15:160"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 71811,
"src": "8180:15:160"
},
"nodeType": "ModifierInvocation",
"src": "8180:15:160"
}
],
"name": "burn",
"nameLocation": "8127:4:160",
"overrides": {
"id": 70773,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "8171:8:160"
},
"parameters": {
"id": 70772,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 70769,
"mutability": "mutable",
"name": "user",
"nameLocation": "8140:4:160",
"nodeType": "VariableDeclaration",
"scope": 70963,
"src": "8132:12:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 70768,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8132:7:160",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70771,
"mutability": "mutable",
"name": "amount",
"nameLocation": "8154:6:160",
"nodeType": "VariableDeclaration",
"scope": 70963,
"src": "8146:14:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70770,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8146:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "8131:30:160"
},
"returnParameters": {
"id": 70776,
"nodeType": "ParameterList",
"parameters": [],
"src": "8196:0:160"
},
"scope": 71313,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 71010,
"nodeType": "FunctionDefinition",
"src": "10990:666:160",
"nodes": [],
"body": {
"id": 71009,
"nodeType": "Block",
"src": "11171:485:160",
"nodes": [],
"statements": [
{
"assignments": [
70976
],
"declarations": [
{
"constant": false,
"id": 70976,
"mutability": "mutable",
"name": "previousPrincipalBalance",
"nameLocation": "11190:24:160",
"nodeType": "VariableDeclaration",
"scope": 71009,
"src": "11182:32:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70975,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11182:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 70981,
"initialValue": {
"arguments": [
{
"id": 70979,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70966,
"src": "11233:4:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 70977,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "11217:5:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_StableDebtToken_$71313_$",
"typeString": "type(contract super StableDebtToken)"
}
},
"id": 70978,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "11223:9:160",
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 26618,
"src": "11217:15:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view returns (uint256)"
}
},
"id": 70980,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11217:21:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "11182:56:160"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 70984,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 70982,
"name": "previousPrincipalBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70976,
"src": "11255:24:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 70983,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "11283:1:160",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "11255:29:160",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 70991,
"nodeType": "IfStatement",
"src": "11251:78:160",
"trueBody": {
"id": 70990,
"nodeType": "Block",
"src": "11286:43:160",
"statements": [
{
"expression": {
"components": [
{
"hexValue": "30",
"id": 70985,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "11309:1:160",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
{
"hexValue": "30",
"id": 70986,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "11312:1:160",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
{
"hexValue": "30",
"id": 70987,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "11315:1:160",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"id": 70988,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "11308:9:160",
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$",
"typeString": "tuple(int_const 0,int_const 0,int_const 0)"
}
},
"functionReturnParameters": 70974,
"id": 70989,
"nodeType": "Return",
"src": "11301:16:160"
}
]
}
},
{
"assignments": [
70993
],
"declarations": [
{
"constant": false,
"id": 70993,
"mutability": "mutable",
"name": "balanceIncrease",
"nameLocation": "11425:15:160",
"nodeType": "VariableDeclaration",
"scope": 71009,
"src": "11417:23:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70992,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11417:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 71000,
"initialValue": {
"arguments": [
{
"id": 70998,
"name": "previousPrincipalBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70976,
"src": "11463:24:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"arguments": [
{
"id": 70995,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70966,
"src": "11453:4:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 70994,
"name": "balanceOf",
"nodeType": "Identifier",
"overloadedDeclarations": [
70552
],
"referencedDeclaration": 70552,
"src": "11443:9:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view returns (uint256)"
}
},
"id": 70996,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11443:15:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70997,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "11459:3:160",
"memberName": "sub",
"nodeType": "MemberAccess",
"referencedDeclaration": 36598,
"src": "11443:19:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 70999,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11443:45:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "11417:71:160"
},
{
"expression": {
"components": [
{
"id": 71001,
"name": "previousPrincipalBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70976,
"src": "11523:24:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"arguments": [
{
"id": 71004,
"name": "balanceIncrease",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70993,
"src": "11591:15:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 71002,
"name": "previousPrincipalBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70976,
"src": "11562:24:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 71003,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "11587:3:160",
"memberName": "add",
"nodeType": "MemberAccess",
"referencedDeclaration": 36583,
"src": "11562:28:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 71005,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "11562:45:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 71006,
"name": "balanceIncrease",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70993,
"src": "11622:15:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 71007,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "11508:140:160",
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
"typeString": "tuple(uint256,uint256,uint256)"
}
},
"functionReturnParameters": 70974,
"id": 71008,
"nodeType": "Return",
"src": "11501:147:160"
}
]
},
"documentation": {
"id": 70964,
"nodeType": "StructuredDocumentation",
"src": "10708:276:160",
"text": " @dev Calculates the increase in balance since the last user interaction\n @param user The address of the user for which the interest is being accumulated\n @return The previous principal balance, the new principal balance and the balance increase*"
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_calculateBalanceIncrease",
"nameLocation": "10999:25:160",
"parameters": {
"id": 70967,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 70966,
"mutability": "mutable",
"name": "user",
"nameLocation": "11033:4:160",
"nodeType": "VariableDeclaration",
"scope": 71010,
"src": "11025:12:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 70965,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11025:7:160",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "11024:14:160"
},
"returnParameters": {
"id": 70974,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 70969,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71010,
"src": "11103:7:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70968,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11103:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70971,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71010,
"src": "11125:7:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70970,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11125:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70973,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71010,
"src": "11147:7:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70972,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11147:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "11088:77:160"
},
"scope": 71313,
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
},
{
"id": 71038,
"nodeType": "FunctionDefinition",
"src": "11795:343:160",
"nodes": [],
"body": {
"id": 71037,
"nodeType": "Block",
"src": "11989:149:160",
"nodes": [],
"statements": [
{
"assignments": [
71024
],
"declarations": [
{
"constant": false,
"id": 71024,
"mutability": "mutable",
"name": "avgRate",
"nameLocation": "12008:7:160",
"nodeType": "VariableDeclaration",
"scope": 71037,
"src": "12000:15:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71023,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "12000:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 71026,
"initialValue": {
"id": 71025,
"name": "_avgStableRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70379,
"src": "12018:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "12000:32:160"
},
{
"expression": {
"components": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 71027,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "12051:5:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_StableDebtToken_$71313_$",
"typeString": "type(contract super StableDebtToken)"
}
},
"id": 71028,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "12057:11:160",
"memberName": "totalSupply",
"nodeType": "MemberAccess",
"referencedDeclaration": 26604,
"src": "12051:17:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 71029,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "12051:19:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"arguments": [
{
"id": 71031,
"name": "avgRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71024,
"src": "12089:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 71030,
"name": "_calcTotalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71204,
"src": "12072:16:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256) view returns (uint256)"
}
},
"id": 71032,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "12072:25:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 71033,
"name": "avgRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71024,
"src": "12099:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 71034,
"name": "_totalSupplyTimestamp",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70389,
"src": "12108:21:160",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
}
],
"id": 71035,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "12050:80:160",
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint40_$",
"typeString": "tuple(uint256,uint256,uint256,uint40)"
}
},
"functionReturnParameters": 71022,
"id": 71036,
"nodeType": "Return",
"src": "12043:87:160"
}
]
},
"baseFunctions": [
48677
],
"documentation": {
"id": 71011,
"nodeType": "StructuredDocumentation",
"src": "11664:125:160",
"text": " @dev Returns the principal and total supply, the average borrow rate and the last supply update timestamp*"
},
"functionSelector": "79774338",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getSupplyData",
"nameLocation": "11804:13:160",
"overrides": {
"id": 71013,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "11859:8:160"
},
"parameters": {
"id": 71012,
"nodeType": "ParameterList",
"parameters": [],
"src": "11817:2:160"
},
"returnParameters": {
"id": 71022,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71015,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71038,
"src": "11900:7:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71014,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11900:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 71017,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71038,
"src": "11922:7:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71016,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11922:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 71019,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71038,
"src": "11944:7:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71018,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11944:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 71021,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71038,
"src": "11966:6:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
},
"typeName": {
"id": 71020,
"name": "uint40",
"nodeType": "ElementaryTypeName",
"src": "11966:6:160",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"visibility": "internal"
}
],
"src": "11885:98:160"
},
"scope": 71313,
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"id": 71058,
"nodeType": "FunctionDefinition",
"src": "12233:189:160",
"nodes": [],
"body": {
"id": 71057,
"nodeType": "Block",
"src": "12317:105:160",
"nodes": [],
"statements": [
{
"assignments": [
71048
],
"declarations": [
{
"constant": false,
"id": 71048,
"mutability": "mutable",
"name": "avgRate",
"nameLocation": "12336:7:160",
"nodeType": "VariableDeclaration",
"scope": 71057,
"src": "12328:15:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71047,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "12328:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 71050,
"initialValue": {
"id": 71049,
"name": "_avgStableRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70379,
"src": "12346:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "12328:32:160"
},
{
"expression": {
"components": [
{
"arguments": [
{
"id": 71052,
"name": "avgRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71048,
"src": "12396:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 71051,
"name": "_calcTotalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71204,
"src": "12379:16:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256) view returns (uint256)"
}
},
"id": 71053,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "12379:25:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 71054,
"name": "avgRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71048,
"src": "12406:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 71055,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "12378:36:160",
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
"typeString": "tuple(uint256,uint256)"
}
},
"functionReturnParameters": 71046,
"id": 71056,
"nodeType": "Return",
"src": "12371:43:160"
}
]
},
"baseFunctions": [
48691
],
"documentation": {
"id": 71039,
"nodeType": "StructuredDocumentation",
"src": "12146:81:160",
"text": " @dev Returns the the total supply and the average stable rate*"
},
"functionSelector": "f731e9be",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getTotalSupplyAndAvgRate",
"nameLocation": "12242:24:160",
"overrides": {
"id": 71041,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "12281:8:160"
},
"parameters": {
"id": 71040,
"nodeType": "ParameterList",
"parameters": [],
"src": "12266:2:160"
},
"returnParameters": {
"id": 71046,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71043,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71058,
"src": "12299:7:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71042,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "12299:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 71045,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71058,
"src": "12308:7:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71044,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "12308:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "12298:18:160"
},
"scope": 71313,
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"id": 71072,
"nodeType": "FunctionDefinition",
"src": "12485:204:160",
"nodes": [],
"body": {
"id": 71071,
"nodeType": "Block",
"src": "12631:58:160",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"id": 71068,
"name": "_avgStableRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70379,
"src": "12666:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 71067,
"name": "_calcTotalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71204,
"src": "12649:16:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256) view returns (uint256)"
}
},
"id": 71069,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "12649:32:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 71066,
"id": 71070,
"nodeType": "Return",
"src": "12642:39:160"
}
]
},
"baseFunctions": [
26604,
27138
],
"documentation": {
"id": 71059,
"nodeType": "StructuredDocumentation",
"src": "12430:49:160",
"text": " @dev Returns the total supply*"
},
"functionSelector": "18160ddd",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "totalSupply",
"nameLocation": "12494:11:160",
"overrides": {
"id": 71063,
"nodeType": "OverrideSpecifier",
"overrides": [
{
"id": 71061,
"name": "ERC20Upgradeable",
"nameLocations": [
"12560:16:160"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 27111,
"src": "12560:16:160"
},
{
"id": 71062,
"name": "IERC20Upgradeable",
"nameLocations": [
"12578:17:160"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 27189,
"src": "12578:17:160"
}
],
"src": "12550:46:160"
},
"parameters": {
"id": 71060,
"nodeType": "ParameterList",
"parameters": [],
"src": "12505:2:160"
},
"returnParameters": {
"id": 71066,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71065,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71072,
"src": "12616:7:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71064,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "12616:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "12615:9:160"
},
"scope": 71313,
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"id": 71082,
"nodeType": "FunctionDefinition",
"src": "12787:122:160",
"nodes": [],
"body": {
"id": 71081,
"nodeType": "Block",
"src": "12862:47:160",
"nodes": [],
"statements": [
{
"expression": {
"id": 71079,
"name": "_totalSupplyTimestamp",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70389,
"src": "12880:21:160",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"functionReturnParameters": 71078,
"id": 71080,
"nodeType": "Return",
"src": "12873:28:160"
}
]
},
"baseFunctions": [
48683
],
"documentation": {
"id": 71073,
"nodeType": "StructuredDocumentation",
"src": "12697:84:160",
"text": " @dev Returns the timestamp at which the total supply was updated*"
},
"functionSelector": "e7484890",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getTotalSupplyLastUpdated",
"nameLocation": "12796:25:160",
"overrides": {
"id": 71075,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "12836:8:160"
},
"parameters": {
"id": 71074,
"nodeType": "ParameterList",
"parameters": [],
"src": "12821:2:160"
},
"returnParameters": {
"id": 71078,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71077,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71082,
"src": "12854:6:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
},
"typeName": {
"id": 71076,
"name": "uint40",
"nodeType": "ElementaryTypeName",
"src": "12854:6:160",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
},
"visibility": "internal"
}
],
"src": "12853:8:160"
},
"scope": 71313,
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"id": 71097,
"nodeType": "FunctionDefinition",
"src": "13113:138:160",
"nodes": [],
"body": {
"id": 71096,
"nodeType": "Block",
"src": "13204:47:160",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"id": 71093,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71085,
"src": "13238:4:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 71091,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "13222:5:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_StableDebtToken_$71313_$",
"typeString": "type(contract super StableDebtToken)"
}
},
"id": 71092,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "13228:9:160",
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 26618,
"src": "13222:15:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view returns (uint256)"
}
},
"id": 71094,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "13222:21:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 71090,
"id": 71095,
"nodeType": "Return",
"src": "13215:28:160"
}
]
},
"baseFunctions": [
48699
],
"documentation": {
"id": 71083,
"nodeType": "StructuredDocumentation",
"src": "12917:190:160",
"text": " @dev Returns the principal debt balance of the user from\n @param user The user's address\n @return The debt balance of the user since the last burn/mint action*"
},
"functionSelector": "c634dfaa",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "principalBalanceOf",
"nameLocation": "13122:18:160",
"overrides": {
"id": 71087,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "13177:8:160"
},
"parameters": {
"id": 71086,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71085,
"mutability": "mutable",
"name": "user",
"nameLocation": "13149:4:160",
"nodeType": "VariableDeclaration",
"scope": 71097,
"src": "13141:12:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 71084,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "13141:7:160",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "13140:14:160"
},
"returnParameters": {
"id": 71090,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71089,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71097,
"src": "13195:7:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71088,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "13195:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "13194:9:160"
},
"scope": 71313,
"stateMutability": "view",
"virtual": true,
"visibility": "external"
},
{
"id": 71106,
"nodeType": "FunctionDefinition",
"src": "13370:108:160",
"nodes": [],
"body": {
"id": 71105,
"nodeType": "Block",
"src": "13436:42:160",
"nodes": [],
"statements": [
{
"expression": {
"id": 71103,
"name": "_underlyingAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70373,
"src": "13454:16:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 71102,
"id": 71104,
"nodeType": "Return",
"src": "13447:23:160"
}
]
},
"documentation": {
"id": 71098,
"nodeType": "StructuredDocumentation",
"src": "13259:105:160",
"text": " @dev Returns the address of the underlying asset of this aToken (E.g. WETH for aWETH)*"
},
"functionSelector": "b16a19de",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "UNDERLYING_ASSET_ADDRESS",
"nameLocation": "13379:24:160",
"parameters": {
"id": 71099,
"nodeType": "ParameterList",
"parameters": [],
"src": "13403:2:160"
},
"returnParameters": {
"id": 71102,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71101,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71106,
"src": "13427:7:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 71100,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "13427:7:160",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "13426:9:160"
},
"scope": 71313,
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"id": 71117,
"nodeType": "FunctionDefinition",
"src": "13582:94:160",
"nodes": [],
"body": {
"id": 71116,
"nodeType": "Block",
"src": "13633:43:160",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 71113,
"name": "_getLendingPool",
"nodeType": "Identifier",
"overloadedDeclarations": [
71169
],
"referencedDeclaration": 71169,
"src": "13651:15:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_ILendingPool_$48084_$",
"typeString": "function () view returns (contract ILendingPool)"
}
},
"id": 71114,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "13651:17:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"functionReturnParameters": 71112,
"id": 71115,
"nodeType": "Return",
"src": "13644:24:160"
}
]
},
"documentation": {
"id": 71107,
"nodeType": "StructuredDocumentation",
"src": "13486:90:160",
"text": " @dev Returns the address of the lending pool where this aToken is used*"
},
"functionSelector": "7535d246",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "POOL",
"nameLocation": "13591:4:160",
"parameters": {
"id": 71108,
"nodeType": "ParameterList",
"parameters": [],
"src": "13595:2:160"
},
"returnParameters": {
"id": 71112,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71111,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71117,
"src": "13619:12:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
},
"typeName": {
"id": 71110,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 71109,
"name": "ILendingPool",
"nameLocations": [
"13619:12:160"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 48084,
"src": "13619:12:160"
},
"referencedDeclaration": 48084,
"src": "13619:12:160",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"visibility": "internal"
}
],
"src": "13618:14:160"
},
"scope": 71313,
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"id": 71129,
"nodeType": "FunctionDefinition",
"src": "13772:154:160",
"nodes": [],
"body": {
"id": 71128,
"nodeType": "Block",
"src": "13870:56:160",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 71125,
"name": "_getPoolIncentivesController",
"nodeType": "Identifier",
"overloadedDeclarations": [
71144
],
"referencedDeclaration": 71144,
"src": "13888:28:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IPoolIncentivesController_$48421_$",
"typeString": "function () view returns (contract IPoolIncentivesController)"
}
},
"id": 71126,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "13888:30:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
}
},
"functionReturnParameters": 71124,
"id": 71127,
"nodeType": "Return",
"src": "13881:37:160"
}
]
},
"baseFunctions": [
48706
],
"documentation": {
"id": 71118,
"nodeType": "StructuredDocumentation",
"src": "13684:82:160",
"text": " @dev Returns the address of the incentives controller contract*"
},
"functionSelector": "19ef9268",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getPoolIncentivesController",
"nameLocation": "13781:27:160",
"overrides": {
"id": 71120,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "13825:8:160"
},
"parameters": {
"id": 71119,
"nodeType": "ParameterList",
"parameters": [],
"src": "13808:2:160"
},
"returnParameters": {
"id": 71124,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71123,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71129,
"src": "13843:25:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
},
"typeName": {
"id": 71122,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 71121,
"name": "IPoolIncentivesController",
"nameLocations": [
"13843:25:160"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 48421,
"src": "13843:25:160"
},
"referencedDeclaration": 48421,
"src": "13843:25:160",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
}
},
"visibility": "internal"
}
],
"src": "13842:27:160"
},
"scope": 71313,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"id": 71144,
"nodeType": "FunctionDefinition",
"src": "14020:198:160",
"nodes": [],
"body": {
"id": 71143,
"nodeType": "Block",
"src": "14119:99:160",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 71138,
"name": "_addressProvider",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70369,
"src": "14163:16:160",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
}
},
"id": 71139,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "14180:27:160",
"memberName": "getPoolIncentivesController",
"nodeType": "MemberAccess",
"referencedDeclaration": 46361,
"src": "14163:44:160",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
"typeString": "function () view external returns (address)"
}
},
"id": 71140,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "14163:46:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 71137,
"name": "IPoolIncentivesController",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48421,
"src": "14137:25:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IPoolIncentivesController_$48421_$",
"typeString": "type(contract IPoolIncentivesController)"
}
},
"id": 71141,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "14137:73:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
}
},
"functionReturnParameters": 71136,
"id": 71142,
"nodeType": "Return",
"src": "14130:80:160"
}
]
},
"baseFunctions": [
72100
],
"documentation": {
"id": 71130,
"nodeType": "StructuredDocumentation",
"src": "13934:80:160",
"text": " @dev For internal usage in the logic of the parent contracts*"
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_getPoolIncentivesController",
"nameLocation": "14029:28:160",
"overrides": {
"id": 71132,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "14074:8:160"
},
"parameters": {
"id": 71131,
"nodeType": "ParameterList",
"parameters": [],
"src": "14057:2:160"
},
"returnParameters": {
"id": 71136,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71135,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71144,
"src": "14092:25:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
},
"typeName": {
"id": 71134,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 71133,
"name": "IPoolIncentivesController",
"nameLocations": [
"14092:25:160"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 48421,
"src": "14092:25:160"
},
"referencedDeclaration": 48421,
"src": "14092:25:160",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
}
},
"visibility": "internal"
}
],
"src": "14091:27:160"
},
"scope": 71313,
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
},
{
"id": 71154,
"nodeType": "FunctionDefinition",
"src": "14312:121:160",
"nodes": [],
"body": {
"id": 71153,
"nodeType": "Block",
"src": "14391:42:160",
"nodes": [],
"statements": [
{
"expression": {
"id": 71151,
"name": "_underlyingAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70373,
"src": "14409:16:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 71150,
"id": 71152,
"nodeType": "Return",
"src": "14402:23:160"
}
]
},
"baseFunctions": [
72038
],
"documentation": {
"id": 71145,
"nodeType": "StructuredDocumentation",
"src": "14226:80:160",
"text": " @dev For internal usage in the logic of the parent contracts*"
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_getUnderlyingAssetAddress",
"nameLocation": "14321:26:160",
"overrides": {
"id": 71147,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "14364:8:160"
},
"parameters": {
"id": 71146,
"nodeType": "ParameterList",
"parameters": [],
"src": "14347:2:160"
},
"returnParameters": {
"id": 71150,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71149,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71154,
"src": "14382:7:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 71148,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "14382:7:160",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "14381:9:160"
},
"scope": 71313,
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
},
{
"id": 71169,
"nodeType": "FunctionDefinition",
"src": "14527:146:160",
"nodes": [],
"body": {
"id": 71168,
"nodeType": "Block",
"src": "14600:73:160",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 71163,
"name": "_addressProvider",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70369,
"src": "14631:16:160",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
}
},
"id": 71164,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "14648:14:160",
"memberName": "getLendingPool",
"nodeType": "MemberAccess",
"referencedDeclaration": 46256,
"src": "14631:31:160",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
"typeString": "function () view external returns (address)"
}
},
"id": 71165,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "14631:33:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 71162,
"name": "ILendingPool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48084,
"src": "14618:12:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ILendingPool_$48084_$",
"typeString": "type(contract ILendingPool)"
}
},
"id": 71166,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "14618:47:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"functionReturnParameters": 71161,
"id": 71167,
"nodeType": "Return",
"src": "14611:54:160"
}
]
},
"baseFunctions": [
72044
],
"documentation": {
"id": 71155,
"nodeType": "StructuredDocumentation",
"src": "14441:80:160",
"text": " @dev For internal usage in the logic of the parent contracts*"
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_getLendingPool",
"nameLocation": "14536:15:160",
"overrides": {
"id": 71157,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "14568:8:160"
},
"parameters": {
"id": 71156,
"nodeType": "ParameterList",
"parameters": [],
"src": "14551:2:160"
},
"returnParameters": {
"id": 71161,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71160,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71169,
"src": "14586:12:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
},
"typeName": {
"id": 71159,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 71158,
"name": "ILendingPool",
"nameLocations": [
"14586:12:160"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 48084,
"src": "14586:12:160"
},
"referencedDeclaration": 48084,
"src": "14586:12:160",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"visibility": "internal"
}
],
"src": "14585:14:160"
},
"scope": 71313,
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
},
{
"id": 71204,
"nodeType": "FunctionDefinition",
"src": "14890:405:160",
"nodes": [],
"body": {
"id": 71203,
"nodeType": "Block",
"src": "14973:322:160",
"nodes": [],
"statements": [
{
"assignments": [
71178
],
"declarations": [
{
"constant": false,
"id": 71178,
"mutability": "mutable",
"name": "principalSupply",
"nameLocation": "14992:15:160",
"nodeType": "VariableDeclaration",
"scope": 71203,
"src": "14984:23:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71177,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "14984:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 71182,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 71179,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "15010:5:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_StableDebtToken_$71313_$",
"typeString": "type(contract super StableDebtToken)"
}
},
"id": 71180,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "15016:11:160",
"memberName": "totalSupply",
"nodeType": "MemberAccess",
"referencedDeclaration": 26604,
"src": "15010:17:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 71181,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "15010:19:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "14984:45:160"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 71185,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 71183,
"name": "principalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71178,
"src": "15046:15:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 71184,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "15065:1:160",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "15046:20:160",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 71189,
"nodeType": "IfStatement",
"src": "15042:61:160",
"trueBody": {
"id": 71188,
"nodeType": "Block",
"src": "15068:35:160",
"statements": [
{
"expression": {
"hexValue": "30",
"id": 71186,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "15090:1:160",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"functionReturnParameters": 71176,
"id": 71187,
"nodeType": "Return",
"src": "15083:8:160"
}
]
}
},
{
"assignments": [
71191
],
"declarations": [
{
"constant": false,
"id": 71191,
"mutability": "mutable",
"name": "cumulatedInterest",
"nameLocation": "15123:17:160",
"nodeType": "VariableDeclaration",
"scope": 71203,
"src": "15115:25:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71190,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "15115:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 71197,
"initialValue": {
"arguments": [
{
"id": 71194,
"name": "avgRate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71172,
"src": "15195:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 71195,
"name": "_totalSupplyTimestamp",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70389,
"src": "15204:21:160",
"typeDescriptions": {
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint40",
"typeString": "uint40"
}
],
"expression": {
"id": 71192,
"name": "MathUtils",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 64132,
"src": "15157:9:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_MathUtils_$64132_$",
"typeString": "type(library MathUtils)"
}
},
"id": 71193,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "15167:27:160",
"memberName": "calculateCompoundedInterest",
"nodeType": "MemberAccess",
"referencedDeclaration": 64131,
"src": "15157:37:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint40_$returns$_t_uint256_$",
"typeString": "function (uint256,uint40) view returns (uint256)"
}
},
"id": 71196,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "15157:69:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "15115:111:160"
},
{
"expression": {
"arguments": [
{
"id": 71200,
"name": "cumulatedInterest",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71191,
"src": "15269:17:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 71198,
"name": "principalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71178,
"src": "15246:15:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 71199,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "15262:6:160",
"memberName": "rayMul",
"nodeType": "MemberAccess",
"referencedDeclaration": 64384,
"src": "15246:22:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 71201,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "15246:41:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 71176,
"id": 71202,
"nodeType": "Return",
"src": "15239:48:160"
}
]
},
"documentation": {
"id": 71170,
"nodeType": "StructuredDocumentation",
"src": "14681:203:160",
"text": " @dev Calculates the total supply\n @param avgRate The average rate at which the total supply increases\n @return The debt balance of the user since the last burn/mint action*"
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_calcTotalSupply",
"nameLocation": "14899:16:160",
"parameters": {
"id": 71173,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71172,
"mutability": "mutable",
"name": "avgRate",
"nameLocation": "14924:7:160",
"nodeType": "VariableDeclaration",
"scope": 71204,
"src": "14916:15:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71171,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "14916:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "14915:17:160"
},
"returnParameters": {
"id": 71176,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71175,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71204,
"src": "14964:7:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71174,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "14964:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "14963:9:160"
},
"scope": 71313,
"stateMutability": "view",
"virtual": true,
"visibility": "internal"
},
{
"id": 71254,
"nodeType": "FunctionDefinition",
"src": "15545:482:160",
"nodes": [],
"body": {
"id": 71253,
"nodeType": "Block",
"src": "15660:367:160",
"nodes": [],
"statements": [
{
"assignments": [
71215
],
"declarations": [
{
"constant": false,
"id": 71215,
"mutability": "mutable",
"name": "oldAccountBalance",
"nameLocation": "15679:17:160",
"nodeType": "VariableDeclaration",
"scope": 71253,
"src": "15671:25:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71214,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "15671:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 71220,
"initialValue": {
"arguments": [
{
"id": 71218,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71207,
"src": "15715:7:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 71216,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "15699:5:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_StableDebtToken_$71313_$",
"typeString": "type(contract super StableDebtToken)"
}
},
"id": 71217,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "15705:9:160",
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 26618,
"src": "15699:15:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view returns (uint256)"
}
},
"id": 71219,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "15699:24:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "15671:52:160"
},
{
"expression": {
"arguments": [
{
"id": 71224,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71207,
"src": "15746:7:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 71225,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71209,
"src": "15755:6:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 71221,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "15734:5:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_StableDebtToken_$71313_$",
"typeString": "type(contract super StableDebtToken)"
}
},
"id": 71223,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "15740:5:160",
"memberName": "_mint",
"nodeType": "MemberAccess",
"referencedDeclaration": 72226,
"src": "15734:11:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 71226,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "15734:28:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 71227,
"nodeType": "ExpressionStatement",
"src": "15734:28:160"
},
{
"assignments": [
71230
],
"declarations": [
{
"constant": false,
"id": 71230,
"mutability": "mutable",
"name": "incentivesController",
"nameLocation": "15801:20:160",
"nodeType": "VariableDeclaration",
"scope": 71253,
"src": "15775:46:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
},
"typeName": {
"id": 71229,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 71228,
"name": "IPoolIncentivesController",
"nameLocations": [
"15775:25:160"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 48421,
"src": "15775:25:160"
},
"referencedDeclaration": 48421,
"src": "15775:25:160",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
}
},
"visibility": "internal"
}
],
"id": 71233,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 71231,
"name": "_getPoolIncentivesController",
"nodeType": "Identifier",
"overloadedDeclarations": [
71144
],
"referencedDeclaration": 71144,
"src": "15824:28:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IPoolIncentivesController_$48421_$",
"typeString": "function () view returns (contract IPoolIncentivesController)"
}
},
"id": 71232,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "15824:30:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "15775:79:160"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 71242,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"id": 71236,
"name": "incentivesController",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71230,
"src": "15879:20:160",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
}
],
"id": 71235,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "15871:7:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 71234,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "15871:7:160",
"typeDescriptions": {}
}
},
"id": 71237,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "15871:29:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 71240,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "15912:1:160",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 71239,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "15904:7:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 71238,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "15904:7:160",
"typeDescriptions": {}
}
},
"id": 71241,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "15904:10:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "15871:43:160",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 71252,
"nodeType": "IfStatement",
"src": "15867:153:160",
"trueBody": {
"id": 71251,
"nodeType": "Block",
"src": "15916:104:160",
"statements": [
{
"expression": {
"arguments": [
{
"id": 71246,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71207,
"src": "15965:7:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 71247,
"name": "oldTotalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71211,
"src": "15974:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 71248,
"name": "oldAccountBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71215,
"src": "15990:17:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 71243,
"name": "incentivesController",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71230,
"src": "15931:20:160",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
}
},
"id": 71245,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "15952:12:160",
"memberName": "handleAction",
"nodeType": "MemberAccess",
"referencedDeclaration": 48388,
"src": "15931:33:160",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256,uint256) external"
}
},
"id": 71249,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "15931:77:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 71250,
"nodeType": "ExpressionStatement",
"src": "15931:77:160"
}
]
}
}
]
},
"documentation": {
"id": 71205,
"nodeType": "StructuredDocumentation",
"src": "15303:236:160",
"text": " @dev Mints stable debt tokens to an user\n @param account The account receiving the debt tokens\n @param amount The amount being minted\n @param oldTotalSupply the total supply before the minting event*"
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_mint",
"nameLocation": "15554:5:160",
"parameters": {
"id": 71212,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71207,
"mutability": "mutable",
"name": "account",
"nameLocation": "15578:7:160",
"nodeType": "VariableDeclaration",
"scope": 71254,
"src": "15570:15:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 71206,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "15570:7:160",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 71209,
"mutability": "mutable",
"name": "amount",
"nameLocation": "15604:6:160",
"nodeType": "VariableDeclaration",
"scope": 71254,
"src": "15596:14:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71208,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "15596:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 71211,
"mutability": "mutable",
"name": "oldTotalSupply",
"nameLocation": "15629:14:160",
"nodeType": "VariableDeclaration",
"scope": 71254,
"src": "15621:22:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71210,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "15621:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "15559:91:160"
},
"returnParameters": {
"id": 71213,
"nodeType": "ParameterList",
"parameters": [],
"src": "15660:0:160"
},
"scope": 71313,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"id": 71312,
"nodeType": "FunctionDefinition",
"src": "16272:564:160",
"nodes": [],
"body": {
"id": 71311,
"nodeType": "Block",
"src": "16387:449:160",
"nodes": [],
"statements": [
{
"assignments": [
71265
],
"declarations": [
{
"constant": false,
"id": 71265,
"mutability": "mutable",
"name": "oldAccountBalance",
"nameLocation": "16406:17:160",
"nodeType": "VariableDeclaration",
"scope": 71311,
"src": "16398:25:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71264,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "16398:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 71270,
"initialValue": {
"arguments": [
{
"id": 71268,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71257,
"src": "16442:7:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 71266,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "16426:5:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_StableDebtToken_$71313_$",
"typeString": "type(contract super StableDebtToken)"
}
},
"id": 71267,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "16432:9:160",
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 26618,
"src": "16426:15:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view returns (uint256)"
}
},
"id": 71269,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "16426:24:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "16398:52:160"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 71274,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 71272,
"name": "oldAccountBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71265,
"src": "16471:17:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"id": 71273,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71259,
"src": "16492:6:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "16471:27:160",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 71275,
"name": "Errors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 57944,
"src": "16500:6:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_Errors_$57944_$",
"typeString": "type(library Errors)"
}
},
"id": 71276,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "16507:24:160",
"memberName": "LPL_BURN_EXCEEDS_BALANCE",
"nodeType": "MemberAccess",
"referencedDeclaration": 57751,
"src": "16500:31:160",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 71271,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "16463:7:160",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 71277,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "16463:69:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 71278,
"nodeType": "ExpressionStatement",
"src": "16463:69:160"
},
{
"expression": {
"arguments": [
{
"id": 71282,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71257,
"src": "16555:7:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 71283,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71259,
"src": "16564:6:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 71279,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "16543:5:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_StableDebtToken_$71313_$",
"typeString": "type(contract super StableDebtToken)"
}
},
"id": 71281,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "16549:5:160",
"memberName": "_burn",
"nodeType": "MemberAccess",
"referencedDeclaration": 72275,
"src": "16543:11:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 71284,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "16543:28:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 71285,
"nodeType": "ExpressionStatement",
"src": "16543:28:160"
},
{
"assignments": [
71288
],
"declarations": [
{
"constant": false,
"id": 71288,
"mutability": "mutable",
"name": "incentivesController",
"nameLocation": "16610:20:160",
"nodeType": "VariableDeclaration",
"scope": 71311,
"src": "16584:46:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
},
"typeName": {
"id": 71287,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 71286,
"name": "IPoolIncentivesController",
"nameLocations": [
"16584:25:160"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 48421,
"src": "16584:25:160"
},
"referencedDeclaration": 48421,
"src": "16584:25:160",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
}
},
"visibility": "internal"
}
],
"id": 71291,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 71289,
"name": "_getPoolIncentivesController",
"nodeType": "Identifier",
"overloadedDeclarations": [
71144
],
"referencedDeclaration": 71144,
"src": "16633:28:160",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IPoolIncentivesController_$48421_$",
"typeString": "function () view returns (contract IPoolIncentivesController)"
}
},
"id": 71290,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "16633:30:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "16584:79:160"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 71300,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"id": 71294,
"name": "incentivesController",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71288,
"src": "16688:20:160",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
}
],
"id": 71293,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "16680:7:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 71292,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "16680:7:160",
"typeDescriptions": {}
}
},
"id": 71295,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "16680:29:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 71298,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "16721:1:160",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 71297,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "16713:7:160",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 71296,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "16713:7:160",
"typeDescriptions": {}
}
},
"id": 71299,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "16713:10:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "16680:43:160",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 71310,
"nodeType": "IfStatement",
"src": "16676:153:160",
"trueBody": {
"id": 71309,
"nodeType": "Block",
"src": "16725:104:160",
"statements": [
{
"expression": {
"arguments": [
{
"id": 71304,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71257,
"src": "16774:7:160",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 71305,
"name": "oldTotalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71261,
"src": "16783:14:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 71306,
"name": "oldAccountBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71265,
"src": "16799:17:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 71301,
"name": "incentivesController",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71288,
"src": "16740:20:160",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
}
},
"id": 71303,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "16761:12:160",
"memberName": "handleAction",
"nodeType": "MemberAccess",
"referencedDeclaration": 48388,
"src": "16740:33:160",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256,uint256) external"
}
},
"id": 71307,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "16740:77:160",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 71308,
"nodeType": "ExpressionStatement",
"src": "16740:77:160"
}
]
}
}
]
},
"documentation": {
"id": 71255,
"nodeType": "StructuredDocumentation",
"src": "16035:231:160",
"text": " @dev Burns stable debt tokens of an user\n @param account The user getting his debt burned\n @param amount The amount being burned\n @param oldTotalSupply The total supply before the burning event*"
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_burn",
"nameLocation": "16281:5:160",
"parameters": {
"id": 71262,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71257,
"mutability": "mutable",
"name": "account",
"nameLocation": "16305:7:160",
"nodeType": "VariableDeclaration",
"scope": 71312,
"src": "16297:15:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 71256,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "16297:7:160",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 71259,
"mutability": "mutable",
"name": "amount",
"nameLocation": "16331:6:160",
"nodeType": "VariableDeclaration",
"scope": 71312,
"src": "16323:14:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71258,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "16323:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 71261,
"mutability": "mutable",
"name": "oldTotalSupply",
"nameLocation": "16356:14:160",
"nodeType": "VariableDeclaration",
"scope": 71312,
"src": "16348:22:160",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71260,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "16348:7:160",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "16286:91:160"
},
"returnParameters": {
"id": 71263,
"nodeType": "ParameterList",
"parameters": [],
"src": "16387:0:160"
},
"scope": 71313,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
}
],
"abstract": false,
"baseContracts": [
{
"baseName": {
"id": 70357,
"name": "IStableDebtToken",
"nameLocations": [
"1355:16:160"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 48707,
"src": "1355:16:160"
},
"id": 70358,
"nodeType": "InheritanceSpecifier",
"src": "1355:16:160"
},
{
"baseName": {
"id": 70359,
"name": "DebtTokenBase",
"nameLocations": [
"1373:13:160"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 72045,
"src": "1373:13:160"
},
"id": 70360,
"nodeType": "InheritanceSpecifier",
"src": "1373:13:160"
}
],
"canonicalName": "StableDebtToken",
"contractDependencies": [],
"contractKind": "contract",
"documentation": {
"id": 70356,
"nodeType": "StructuredDocumentation",
"src": "1084:243:160",
"text": "@title StableDebtToken\n @author FluidNFT\n @notice Allows for the tracking of debt for the purposes of APY calculations\n at a stable rate mode.\n @dev Debt tokens are non-transferable and so diverge from the ERC20 standard."
},
"fullyImplemented": true,
"linearizedBaseContracts": [
71313,
72045,
47120,
72276,
27111,
27214,
27189,
28988,
26136,
48707,
47494
],
"name": "StableDebtToken",
"nameLocation": "1336:15:160",
"scope": 71314,
"usedErrors": []
}
],
"license": "AGPL-3.0"
},
"id": 160
}
VariableDebtToken ABI
{
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "fromUser",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "toUser",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "BorrowAllowanceDelegated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"name": "Burn",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "underlyingCollateral",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "underlyingAsset",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "pool",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "incentivesController",
"type": "address"
},
{
"indexed": false,
"internalType": "uint8",
"name": "debtTokenDecimals",
"type": "uint8"
},
{
"indexed": false,
"internalType": "string",
"name": "debtTokenName",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "debtTokenSymbol",
"type": "string"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint8",
"name": "version",
"type": "uint8"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"name": "Mint",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [],
"name": "POOL",
"outputs": [
{
"internalType": "contract ILendingPool",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UNDERLYING_ASSET_ADDRESS",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "delegatee",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approveDelegation",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "fromUser",
"type": "address"
},
{
"internalType": "address",
"name": "toUser",
"type": "address"
}
],
"name": "borrowAllowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"name": "burn",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "subtractedValue",
"type": "uint256"
}
],
"name": "decreaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getPoolIncentivesController",
"outputs": [
{
"internalType": "contract IPoolIncentivesController",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "getScaledUserBalanceAndSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "addedValue",
"type": "uint256"
}
],
"name": "increaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "addressProvider",
"type": "address"
},
{
"internalType": "address",
"name": "underlyingCollateral",
"type": "address"
},
{
"internalType": "address",
"name": "underlyingAsset",
"type": "address"
},
{
"internalType": "uint256",
"name": "underlyingMaxTokenId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "underlyingMinTokenId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "debtTokenDecimals",
"type": "uint8"
},
{
"internalType": "string",
"name": "debtTokenName",
"type": "string"
},
{
"internalType": "string",
"name": "debtTokenSymbol",
"type": "string"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "initiator",
"type": "address"
},
{
"internalType": "address",
"name": "onBehalfOf",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"name": "mint",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "scaledBalanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "scaledTotalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": {
"object": "0x608060405234801561001057600080fd5b5061001961001e565b6100de565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100dc576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61188a806100ed6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b8578063b16a19de1161007c578063b16a19de146102cd578063b1bf962d146102de578063b3f1c93d146102e6578063c04a8a10146102f9578063dd62ed3e1461030c578063f5298aca1461031a57600080fd5b806370a082311461029c5780637535d246146102af57806395d89b41146102b7578063a457c2d714610250578063a9059cbb146102bf57600080fd5b80631da24f3e1161010a5780631da24f3e146102005780631e5fa51f1461021357806323b872dd14610228578063313ce5671461023b57806339509351146102505780636bd76d241461026357600080fd5b806306fdde0314610147578063095ea7b3146101655780630afbcdc91461018857806318160ddd146101ca57806319ef9268146101e0575b600080fd5b61014f61032d565b60405161015c91906112d0565b60405180910390f35b6101786101733660046112fb565b6103bf565b604051901515815260200161015c565b6101b5610196366004611327565b6001600160a01b03166000908152603360205260409020546035549091565b6040805192835260208301919091520161015c565b6101d2610408565b60405190815260200161015c565b6101e861051c565b6040516001600160a01b03909116815260200161015c565b6101d261020e366004611327565b61052b565b6102266102213660046113e7565b61054b565b005b6101786102363660046114af565b610717565b60655460405160ff909116815260200161015c565b61017861025e3660046112fb565b61075b565b6101d26102713660046114f0565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b6101d26102aa366004611327565b6107a6565b6101e86108e3565b61014f6108ed565b6101786102363660046112fb565b6069546001600160a01b03166101e8565b6101d26108fc565b6101786102f4366004611529565b610907565b6102266103073660046112fb565b610b02565b6101d261025e3660046114f0565b61017861032836600461156f565b610b79565b60606036805461033c906115a4565b80601f0160208091040260200160405190810160405280929190818152602001828054610368906115a4565b80156103b55780601f1061038a576101008083540402835291602001916103b5565b820191906000526020600020905b81548152906001019060200180831161039857829003601f168201915b5050505050905090565b60405162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b60448201526000906064015b60405180910390fd5b600080610413610ca2565b606854606954606a54606b546040516352120e2360e01b81526001600160a01b0394851660048201529284166024840152604483019190915260648201529192506105169190831690639034c18c9082906352120e2390608401602060405180830381865afa15801561048a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ae91906115de565b6040518263ffffffff1660e01b81526004016104cc91815260200190565b602060405180830381865afa1580156104e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050d91906115de565b60355490610d10565b91505090565b6000610526610d59565b905090565b6001600160a01b0381166000908152603360205260408120545b92915050565b600054610100900460ff161580801561056b5750600054600160ff909116105b806105855750303b158015610585575060005460ff166001145b6105e85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103ff565b6000805460ff19166001179055801561060b576000805461ff0019166101001790555b610616838386610da3565b606780546001600160a01b03808c166001600160a01b031992831617909255606880548b841690831617905560698054928a1692909116919091179055606a869055606b859055610665610ca2565b6001600160a01b0316876001600160a01b0316896001600160a01b03167fd59b5facb5e38ab634162423aec2545750f69daf91fe145954e2a2b449597d4c6106ab610d59565b8888886040516106be94939291906115f7565b60405180910390a4801561070c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b60405162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b60448201526000906064016103ff565b60405162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f5254454400000000000000000060448201526000906064016103ff565b6001600160a01b038116600090815260336020526040812054806000036107d05750600092915050565b60006107da610ca2565b606854606954606a54606b546040516352120e2360e01b81526001600160a01b0394851660048201529284166024840152604483019190915260648201529192506108db9190831690639034c18c9082906352120e2390608401602060405180830381865afa158015610851573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087591906115de565b6040518263ffffffff1660e01b815260040161089391815260200190565b602060405180830381865afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d491906115de565b8390610d10565b949350505050565b6000610526610ca2565b60606037805461033c906115a4565b600061052660355490565b6000610911610ca2565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b8152509061095f5760405162461bcd60e51b81526004016103ff91906112d0565b50836001600160a01b0316856001600160a01b031614158015610a0a5750606760009054906101000a90046001600160a01b03166001600160a01b03166377532ed96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f49190611641565b6001600160a01b0316856001600160a01b031614155b15610a1a57610a1a848685610dc5565b6001600160a01b03841660009081526033602052604081205490610a3e8585610ee5565b60408051808201909152600381526235303160e81b602082015290915081610a795760405162461bcd60e51b81526004016103ff91906112d0565b50610a848682610f19565b6040518581526001600160a01b038716906000906000805160206118358339815191529060200160405180910390a360408051868152602081018690526001600160a01b038816917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a2501595945050505050565b3360008181526066602090815260408083206001600160a01b038781168086529190935292208490556069549192917fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e19116604080516001600160a01b039092168252602082018690520160405180910390a35050565b6000610b83610ca2565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b81525090610bd15760405162461bcd60e51b81526004016103ff91906112d0565b506000610bde8484610ee5565b6040805180820190915260038152621a981960e91b602082015290915081610c195760405162461bcd60e51b81526004016103ff91906112d0565b50610c248582610fe5565b6040518481526000906001600160a01b038716906000805160206118358339815191529060200160405180910390a360408051858152602081018590526001600160a01b038716917f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a910160405180910390a2506001949350505050565b60675460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b9160048083019260209291908290030181865afa158015610cec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105269190611641565b6000610d526b033b2e3c9fd0803ce8000000610d4c610d2f868661101f565b610d4660026b033b2e3c9fd0803ce8000000611674565b9061102b565b90611037565b9392505050565b6067546040805163033df24d60e31b815290516000926001600160a01b0316916319ef92689160048083019260209291908290030181865afa158015610cec573d6000803e3d6000fd5b610dad8383611043565b6065805460ff191660ff929092169190911790555050565b6001600160a01b038084166000908152606660209081526040808320938616835292815290829020548251808401909352600383526235303360e81b91830191909152821115610e285760405162461bcd60e51b81526004016103ff91906112d0565b506001600160a01b038084166000908152606660209081526040808320938616835292905290812054610e5c908390611696565b6001600160a01b038086166000818152606660209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1610ebe6069546001600160a01b031690565b604080516001600160a01b039092168252602082018690520160405180910390a350505050565b600080610ef3600284611674565b90506108db83610d4c610f12876b033b2e3c9fd0803ce800000061101f565b849061102b565b6000610f2460355490565b90506000610f47846001600160a01b031660009081526033602052604090205490565b9050610f538484611078565b6000610f5d610d59565b6001600160a01b031614610fdf57610f73610d59565b6040516318c39f1760e11b81526001600160a01b038681166004830152602482018590526044820184905291909116906331873e2e90606401600060405180830381600087803b158015610fc657600080fd5b505af1158015610fda573d6000803e3d6000fd5b505050505b50505050565b6000610ff060355490565b90506000611013846001600160a01b031660009081526033602052604090205490565b9050610f538484611127565b6000610d5282846116a9565b6000610d5282846116c8565b6000610d528284611674565b600054610100900460ff1661106a5760405162461bcd60e51b81526004016103ff906116db565b611074828261124a565b5050565b6001600160a01b0382166110ce5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103ff565b80603560008282546110e091906116c8565b90915550506001600160a01b038216600081815260336020908152604080832080548601905551848152600080516020611835833981519152910160405180910390a35050565b6001600160a01b0382166111875760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103ff565b6001600160a01b038216600090815260336020526040902054818110156111fb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103ff565b6001600160a01b0383166000818152603360209081526040808320868603905560358054879003905551858152919291600080516020611835833981519152910160405180910390a35b505050565b600054610100900460ff166112715760405162461bcd60e51b81526004016103ff906116db565b603661127d8382611774565b5060376112458282611774565b6000815180845260005b818110156112b057602081850181015186830182015201611294565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610d52602083018461128a565b6001600160a01b03811681146112f857600080fd5b50565b6000806040838503121561130e57600080fd5b8235611319816112e3565b946020939093013593505050565b60006020828403121561133957600080fd5b8135610d52816112e3565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261136b57600080fd5b813567ffffffffffffffff8082111561138657611386611344565b604051601f8301601f19908116603f011681019082821181831017156113ae576113ae611344565b816040528381528660208588010111156113c757600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600080600080610100898b03121561140457600080fd5b883561140f816112e3565b9750602089013561141f816112e3565b9650604089013561142f816112e3565b9550606089013594506080890135935060a089013560ff8116811461145357600080fd5b925060c089013567ffffffffffffffff8082111561147057600080fd5b61147c8c838d0161135a565b935060e08b013591508082111561149257600080fd5b5061149f8b828c0161135a565b9150509295985092959890939650565b6000806000606084860312156114c457600080fd5b83356114cf816112e3565b925060208401356114df816112e3565b929592945050506040919091013590565b6000806040838503121561150357600080fd5b823561150e816112e3565b9150602083013561151e816112e3565b809150509250929050565b6000806000806080858703121561153f57600080fd5b843561154a816112e3565b9350602085013561155a816112e3565b93969395505050506040820135916060013590565b60008060006060848603121561158457600080fd5b833561158f816112e3565b95602085013595506040909401359392505050565b600181811c908216806115b857607f821691505b6020821081036115d857634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156115f057600080fd5b5051919050565b6001600160a01b038516815260ff841660208201526080604082018190526000906116249083018561128a565b8281036060840152611636818561128a565b979650505050505050565b60006020828403121561165357600080fd5b8151610d52816112e3565b634e487b7160e01b600052601160045260246000fd5b60008261169157634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156105455761054561165e565b60008160001904831182151516156116c3576116c361165e565b500290565b808201808211156105455761054561165e565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b601f82111561124557600081815260208120601f850160051c8101602086101561174d5750805b601f850160051c820191505b8181101561176c57828155600101611759565b505050505050565b815167ffffffffffffffff81111561178e5761178e611344565b6117a28161179c84546115a4565b84611726565b602080601f8311600181146117d757600084156117bf5750858301515b600019600386901b1c1916600185901b17855561176c565b600085815260208120601f198616915b82811015611806578886015182559484019460019091019084016117e7565b50858210156118245787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212200719044032272a1f6566b96c0260dd65524538ce6334db9105e9aaed2e5a4b8764736f6c63430008100033",
"sourceMap": "1194:7714:161:-:0;;;1588:55;;;;;;;;;-1:-1:-1;1613:22:161;:20;:22::i;:::-;1194:7714;;5928:279:18;5996:13;;;;;;;5995:14;5987:66;;;;-1:-1:-1;;;5987:66:18;;216:2:187;5987:66:18;;;198:21:187;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:187;;;338:37;392:19;;5987:66:18;;;;;;;;6067:12;;6082:15;6067:12;;;:30;6063:138;;;6113:12;:30;;-1:-1:-1;;6113:30:18;6128:15;6113:30;;;;;;6162:28;;564:36:187;;;6162:28:18;;552:2:187;537:18;6162:28:18;;;;;;;6063:138;5928:279::o;422:184:187:-;1194:7714:161;;;;;;",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b8578063b16a19de1161007c578063b16a19de146102cd578063b1bf962d146102de578063b3f1c93d146102e6578063c04a8a10146102f9578063dd62ed3e1461030c578063f5298aca1461031a57600080fd5b806370a082311461029c5780637535d246146102af57806395d89b41146102b7578063a457c2d714610250578063a9059cbb146102bf57600080fd5b80631da24f3e1161010a5780631da24f3e146102005780631e5fa51f1461021357806323b872dd14610228578063313ce5671461023b57806339509351146102505780636bd76d241461026357600080fd5b806306fdde0314610147578063095ea7b3146101655780630afbcdc91461018857806318160ddd146101ca57806319ef9268146101e0575b600080fd5b61014f61032d565b60405161015c91906112d0565b60405180910390f35b6101786101733660046112fb565b6103bf565b604051901515815260200161015c565b6101b5610196366004611327565b6001600160a01b03166000908152603360205260409020546035549091565b6040805192835260208301919091520161015c565b6101d2610408565b60405190815260200161015c565b6101e861051c565b6040516001600160a01b03909116815260200161015c565b6101d261020e366004611327565b61052b565b6102266102213660046113e7565b61054b565b005b6101786102363660046114af565b610717565b60655460405160ff909116815260200161015c565b61017861025e3660046112fb565b61075b565b6101d26102713660046114f0565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b6101d26102aa366004611327565b6107a6565b6101e86108e3565b61014f6108ed565b6101786102363660046112fb565b6069546001600160a01b03166101e8565b6101d26108fc565b6101786102f4366004611529565b610907565b6102266103073660046112fb565b610b02565b6101d261025e3660046114f0565b61017861032836600461156f565b610b79565b60606036805461033c906115a4565b80601f0160208091040260200160405190810160405280929190818152602001828054610368906115a4565b80156103b55780601f1061038a576101008083540402835291602001916103b5565b820191906000526020600020905b81548152906001019060200180831161039857829003601f168201915b5050505050905090565b60405162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b60448201526000906064015b60405180910390fd5b600080610413610ca2565b606854606954606a54606b546040516352120e2360e01b81526001600160a01b0394851660048201529284166024840152604483019190915260648201529192506105169190831690639034c18c9082906352120e2390608401602060405180830381865afa15801561048a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ae91906115de565b6040518263ffffffff1660e01b81526004016104cc91815260200190565b602060405180830381865afa1580156104e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050d91906115de565b60355490610d10565b91505090565b6000610526610d59565b905090565b6001600160a01b0381166000908152603360205260408120545b92915050565b600054610100900460ff161580801561056b5750600054600160ff909116105b806105855750303b158015610585575060005460ff166001145b6105e85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103ff565b6000805460ff19166001179055801561060b576000805461ff0019166101001790555b610616838386610da3565b606780546001600160a01b03808c166001600160a01b031992831617909255606880548b841690831617905560698054928a1692909116919091179055606a869055606b859055610665610ca2565b6001600160a01b0316876001600160a01b0316896001600160a01b03167fd59b5facb5e38ab634162423aec2545750f69daf91fe145954e2a2b449597d4c6106ab610d59565b8888886040516106be94939291906115f7565b60405180910390a4801561070c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b60405162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b60448201526000906064016103ff565b60405162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f5254454400000000000000000060448201526000906064016103ff565b6001600160a01b038116600090815260336020526040812054806000036107d05750600092915050565b60006107da610ca2565b606854606954606a54606b546040516352120e2360e01b81526001600160a01b0394851660048201529284166024840152604483019190915260648201529192506108db9190831690639034c18c9082906352120e2390608401602060405180830381865afa158015610851573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087591906115de565b6040518263ffffffff1660e01b815260040161089391815260200190565b602060405180830381865afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d491906115de565b8390610d10565b949350505050565b6000610526610ca2565b60606037805461033c906115a4565b600061052660355490565b6000610911610ca2565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b8152509061095f5760405162461bcd60e51b81526004016103ff91906112d0565b50836001600160a01b0316856001600160a01b031614158015610a0a5750606760009054906101000a90046001600160a01b03166001600160a01b03166377532ed96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f49190611641565b6001600160a01b0316856001600160a01b031614155b15610a1a57610a1a848685610dc5565b6001600160a01b03841660009081526033602052604081205490610a3e8585610ee5565b60408051808201909152600381526235303160e81b602082015290915081610a795760405162461bcd60e51b81526004016103ff91906112d0565b50610a848682610f19565b6040518581526001600160a01b038716906000906000805160206118358339815191529060200160405180910390a360408051868152602081018690526001600160a01b038816917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a2501595945050505050565b3360008181526066602090815260408083206001600160a01b038781168086529190935292208490556069549192917fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e19116604080516001600160a01b039092168252602082018690520160405180910390a35050565b6000610b83610ca2565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b81525090610bd15760405162461bcd60e51b81526004016103ff91906112d0565b506000610bde8484610ee5565b6040805180820190915260038152621a981960e91b602082015290915081610c195760405162461bcd60e51b81526004016103ff91906112d0565b50610c248582610fe5565b6040518481526000906001600160a01b038716906000805160206118358339815191529060200160405180910390a360408051858152602081018590526001600160a01b038716917f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a910160405180910390a2506001949350505050565b60675460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b9160048083019260209291908290030181865afa158015610cec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105269190611641565b6000610d526b033b2e3c9fd0803ce8000000610d4c610d2f868661101f565b610d4660026b033b2e3c9fd0803ce8000000611674565b9061102b565b90611037565b9392505050565b6067546040805163033df24d60e31b815290516000926001600160a01b0316916319ef92689160048083019260209291908290030181865afa158015610cec573d6000803e3d6000fd5b610dad8383611043565b6065805460ff191660ff929092169190911790555050565b6001600160a01b038084166000908152606660209081526040808320938616835292815290829020548251808401909352600383526235303360e81b91830191909152821115610e285760405162461bcd60e51b81526004016103ff91906112d0565b506001600160a01b038084166000908152606660209081526040808320938616835292905290812054610e5c908390611696565b6001600160a01b038086166000818152606660209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1610ebe6069546001600160a01b031690565b604080516001600160a01b039092168252602082018690520160405180910390a350505050565b600080610ef3600284611674565b90506108db83610d4c610f12876b033b2e3c9fd0803ce800000061101f565b849061102b565b6000610f2460355490565b90506000610f47846001600160a01b031660009081526033602052604090205490565b9050610f538484611078565b6000610f5d610d59565b6001600160a01b031614610fdf57610f73610d59565b6040516318c39f1760e11b81526001600160a01b038681166004830152602482018590526044820184905291909116906331873e2e90606401600060405180830381600087803b158015610fc657600080fd5b505af1158015610fda573d6000803e3d6000fd5b505050505b50505050565b6000610ff060355490565b90506000611013846001600160a01b031660009081526033602052604090205490565b9050610f538484611127565b6000610d5282846116a9565b6000610d5282846116c8565b6000610d528284611674565b600054610100900460ff1661106a5760405162461bcd60e51b81526004016103ff906116db565b611074828261124a565b5050565b6001600160a01b0382166110ce5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103ff565b80603560008282546110e091906116c8565b90915550506001600160a01b038216600081815260336020908152604080832080548601905551848152600080516020611835833981519152910160405180910390a35050565b6001600160a01b0382166111875760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103ff565b6001600160a01b038216600090815260336020526040902054818110156111fb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103ff565b6001600160a01b0383166000818152603360209081526040808320868603905560358054879003905551858152919291600080516020611835833981519152910160405180910390a35b505050565b600054610100900460ff166112715760405162461bcd60e51b81526004016103ff906116db565b603661127d8382611774565b5060376112458282611774565b6000815180845260005b818110156112b057602081850181015186830182015201611294565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610d52602083018461128a565b6001600160a01b03811681146112f857600080fd5b50565b6000806040838503121561130e57600080fd5b8235611319816112e3565b946020939093013593505050565b60006020828403121561133957600080fd5b8135610d52816112e3565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261136b57600080fd5b813567ffffffffffffffff8082111561138657611386611344565b604051601f8301601f19908116603f011681019082821181831017156113ae576113ae611344565b816040528381528660208588010111156113c757600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600080600080610100898b03121561140457600080fd5b883561140f816112e3565b9750602089013561141f816112e3565b9650604089013561142f816112e3565b9550606089013594506080890135935060a089013560ff8116811461145357600080fd5b925060c089013567ffffffffffffffff8082111561147057600080fd5b61147c8c838d0161135a565b935060e08b013591508082111561149257600080fd5b5061149f8b828c0161135a565b9150509295985092959890939650565b6000806000606084860312156114c457600080fd5b83356114cf816112e3565b925060208401356114df816112e3565b929592945050506040919091013590565b6000806040838503121561150357600080fd5b823561150e816112e3565b9150602083013561151e816112e3565b809150509250929050565b6000806000806080858703121561153f57600080fd5b843561154a816112e3565b9350602085013561155a816112e3565b93969395505050506040820135916060013590565b60008060006060848603121561158457600080fd5b833561158f816112e3565b95602085013595506040909401359392505050565b600181811c908216806115b857607f821691505b6020821081036115d857634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156115f057600080fd5b5051919050565b6001600160a01b038516815260ff841660208201526080604082018190526000906116249083018561128a565b8281036060840152611636818561128a565b979650505050505050565b60006020828403121561165357600080fd5b8151610d52816112e3565b634e487b7160e01b600052601160045260246000fd5b60008261169157634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156105455761054561165e565b60008160001904831182151516156116c3576116c361165e565b500290565b808201808211156105455761054561165e565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b601f82111561124557600081815260208120601f850160051c8101602086101561174d5750805b601f850160051c820191505b8181101561176c57828155600101611759565b505050505050565b815167ffffffffffffffff81111561178e5761178e611344565b6117a28161179c84546115a4565b84611726565b602080601f8311600181146117d757600084156117bf5750858301515b600019600386901b1c1916600185901b17855561176c565b600085815260208120601f198616915b82811015611806578886015182559484019460019091019084016117e7565b50858210156118245787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212200719044032272a1f6566b96c0260dd65524538ce6334db9105e9aaed2e5a4b8764736f6c63430008100033",
"sourceMap": "1194:7714:161:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2491:98:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2948:248:162;;;;;;:::i;:::-;;:::i;:::-;;;1288:14:187;;1281:22;1263:41;;1251:2;1236:18;2948:248:162;1123:187:187;7591:173:161;;;;;;:::i;:::-;-1:-1:-1;;;;;3843:18:23;7676:7:161;3843:18:23;;;:9;:18;;;;;;3666:12;;3843:18;;7591:173:161;;;;;1741:25:187;;;1797:2;1782:18;;1775:34;;;;1714:18;7591:173:161;1567:248:187;6603:461:161;;;:::i;:::-;;;1966:25:187;;;1954:2;1939:18;6603:461:161;1820:177:187;8065:154:161;;;:::i;:::-;;;-1:-1:-1;;;;;2201:32:187;;;2183:51;;2171:2;2156:18;8065:154:161;2002:238:187;6300:133:161;;;;;;:::i;:::-;;:::i;2332:1049::-;;;;;;:::i;:::-;;:::i;:::-;;3202:320:162;;;;;;:::i;:::-;;:::i;1025:145:163:-;1149:15;;1025:145;;1149:15;;;;4975:36:187;;4963:2;4948:18;1025:145:163;4833:184:187;3528:226:162;;;;;;:::i;:::-;;:::i;2064:195::-;;;;;;:::i;:::-;-1:-1:-1;;;;;2217:27:162;;;2187:7;2217:27;;;:17;:27;;;;;;;;:35;;;;;;;;;;;;;2064:195;5538:596:161;;;;;;:::i;:::-;;:::i;8322:94::-;;;:::i;2702:102:23:-;;;:::i;2421:253:162:-;;;;;;:::i;7861:108:161:-;7945:16;;-1:-1:-1;;;;;7945:16:161;7861:108;;7228:121;;;:::i;3731:935::-;;;;;;:::i;:::-;;:::i;1593:250:162:-;;;;;;:::i;:::-;;:::i;2680:262::-;;;;;;:::i;4934:470:161:-;;;;;;:::i;:::-;;:::i;2491:98:23:-;2545:13;2577:5;2570:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2491:98;:::o;2948:248:162:-;3157:32;;-1:-1:-1;;;3157:32:162;;7358:2:187;3157:32:162;;;7340:21:187;7397:2;7377:18;;;7370:30;-1:-1:-1;;;7416:18:187;;;7409:52;3103:4:162;;7478:18:187;;3157:32:162;;;;;;;;6603:461:161;6702:7;6722:17;6742;:15;:17::i;:::-;6892:21;;6933:16;;6968:21;;7008;;6856:188;;-1:-1:-1;;;6856:188:161;;-1:-1:-1;;;;;6892:21:161;;;6856:188;;;7776:34:187;6933:16:161;;;7826:18:187;;;7819:43;7878:18;;;7871:34;;;;7921:18;;;7914:34;6722:37:161;;-1:-1:-1;6777:279:161;;6804:37;;;;;;;;6856:17;;7710:19:187;;6856:188:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6804:251;;;;;;;;;;;;;1966:25:187;;1954:2;1939:18;;1820:177;6804:251:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3666:12:23;;6777:26:161;;:279::i;:::-;6770:286;;;6603:461;:::o;8065:154::-;8136:25;8181:30;:28;:30::i;:::-;8174:37;;8065:154;:::o;6300:133::-;-1:-1:-1;;;;;3843:18:23;;6377:7:161;3843:18:23;;;:9;:18;;;;;;6404:21:161;6397:28;6300:133;-1:-1:-1;;6300:133:161:o;2332:1049::-;3268:19:18;3291:13;;;;;;3290:14;;3336:34;;;;-1:-1:-1;3354:12:18;;3369:1;3354:12;;;;:16;3336:34;3335:108;;;-1:-1:-1;3415:4:18;1476:19:32;:23;;;3376:66:18;;-1:-1:-1;3425:12:18;;;;;:17;3376:66;3314:201;;;;-1:-1:-1;;;3314:201:18;;8350:2:187;3314:201:18;;;8332:21:187;8389:2;8369:18;;;8362:30;8428:34;8408:18;;;8401:62;-1:-1:-1;;;8479:18:187;;;8472:44;8533:19;;3314:201:18;8148:410:187;3314:201:18;3525:12;:16;;-1:-1:-1;;3525:16:18;3540:1;3525:16;;;3551:65;;;;3585:13;:20;;-1:-1:-1;;3585:20:18;;;;;3551:65;2731:75:161::1;2756:13;2771:15;2788:17;2731:24;:75::i;:::-;2819:16;:52:::0;;-1:-1:-1;;;;;2819:52:161;;::::1;-1:-1:-1::0;;;;;;2819:52:161;;::::1;;::::0;;;2884:21:::1;:44:::0;;;;::::1;::::0;;::::1;;::::0;;2939:16:::1;:34:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;2984:21:::1;:44:::0;;;3039:21:::1;:44:::0;;;3200:17:::1;:15;:17::i;:::-;-1:-1:-1::0;;;;;3101:272:161::1;3162:15;-1:-1:-1::0;;;;;3101:272:161::1;3127:20;-1:-1:-1::0;;;;;3101:272:161::1;;3241:30;:28;:30::i;:::-;3287:17;3319:13;3347:15;3101:272;;;;;;;;;:::i;:::-;;;;;;;;3640:14:18::0;3636:99;;;3686:5;3670:21;;-1:-1:-1;;3670:21:18;;;3710:14;;-1:-1:-1;4975:36:187;;3710:14:18;;4963:2:187;4948:18;3710:14:18;;;;;;;3636:99;3258:483;2332:1049:161;;;;;;;;:::o;3202:320:162:-;3483:32;;-1:-1:-1;;;3483:32:162;;9529:2:187;3483:32:162;;;9511:21:187;9568:2;9548:18;;;9541:30;-1:-1:-1;;;9587:18:187;;;9580:52;3411:4:162;;9649:18:187;;3483:32:162;9327:346:187;3528:226:162;3714:33;;-1:-1:-1;;;3714:33:162;;9880:2:187;3714:33:162;;;9862:21:187;9919:2;9899:18;;;9892:30;9958:25;9938:18;;;9931:53;3657:4:162;;10001:18:187;;3714:33:162;9678:347:187;5538:596:161;-1:-1:-1;;;;;3843:18:23;;5647:7:161;3843:18:23;;;:9;:18;;;;;;5729:13:161;5746:1;5729:18;5725:59;;-1:-1:-1;5771:1:161;;5538:596;-1:-1:-1;;5538:596:161:o;5725:59::-;5796:17;5816;:15;:17::i;:::-;5962:21;;6003:16;;6038:21;;6078;;5926:188;;-1:-1:-1;;;5926:188:161;;-1:-1:-1;;;;;5962:21:161;;;5926:188;;;7776:34:187;6003:16:161;;;7826:18:187;;;7819:43;7878:18;;;7871:34;;;;7921:18;;;7914:34;5796:37:161;;-1:-1:-1;5853:273:161;;5874:37;;;;;;;;5926:17;;7710:19:187;;5926:188:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5874:251;;;;;;;;;;;;;1966:25:187;;1954:2;1939:18;;1820:177;5874:251:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5853:13;;:20;:273::i;:::-;5846:280;5538:596;-1:-1:-1;;;;5538:596:161:o;8322:94::-;8359:12;8391:17;:15;:17::i;2702:102:23:-;2758:13;2790:7;2783:14;;;;;:::i;7228:121:161:-;7295:7;7322:19;3666:12:23;;;3579:106;3731:935:161;3941:4;1145:17:162;:15;:17::i;:::-;-1:-1:-1;;;;;1121:42:162;929:10:33;-1:-1:-1;;;;;1121:42:162;;1165:37;;;;;;;;;;;;;-1:-1:-1;;;1165:37:162;;;1113:90;;;;;-1:-1:-1;;;1113:90:162;;;;;;;;:::i;:::-;;3995:10:161::1;-1:-1:-1::0;;;;;3982:23:161::1;:9;-1:-1:-1::0;;;;;3982:23:161::1;;;:86;;;;;4035:16;;;;;;;;;-1:-1:-1::0;;;;;4035:16:161::1;-1:-1:-1::0;;;;;4035:31:161::1;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;4022:46:161::1;:9;-1:-1:-1::0;;;;;4022:46:161::1;;;3982:86;3964:198;;;4095:55;4120:10;4132:9;4143:6;4095:24;:55::i;:::-;-1:-1:-1::0;;;;;3843:18:23;;4172:23:161::1;3843:18:23::0;;;:9;:18;;;;;;;4381:20:161::1;:6:::0;4395:5;4381:13:::1;:20::i;:::-;4439:29;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;4439:29:161::1;::::0;::::1;::::0;4358:43;;-1:-1:-1;4420:17:161;4412:57:::1;;;;-1:-1:-1::0;;;4412:57:161::1;;;;;;;;:::i;:::-;;4482:31;4488:10;4500:12;4482:5;:31::i;:::-;4531:40;::::0;1966:25:187;;;-1:-1:-1;;;;;4531:40:161;::::1;::::0;4548:1:::1;::::0;-1:-1:-1;;;;;;;;;;;4531:40:161;1954:2:187;1939:18;4531:40:161::1;;;;;;;4587:31;::::0;;1741:25:187;;;1797:2;1782:18;;1775:34;;;-1:-1:-1;;;;;4587:31:161;::::1;::::0;::::1;::::0;1714:18:187;4587:31:161::1;;;;;;;-1:-1:-1::0;4638:20:161;;3731:935;-1:-1:-1;;;;;3731:935:161:o;1593:250:162:-;929:10:33;1683:31:162;;;;:17;:31;;;;;;;;-1:-1:-1;;;;;1683:42:162;;;;;;;;;;;;:51;;;7945:16:161;;1683:42:162;;929:10:33;1749:87:162;;7945:16:161;1749:87:162;;;-1:-1:-1;;;;;10478:32:187;;;10460:51;;10542:2;10527:18;;10520:34;;;10433:18;1749:87:162;;;;;;;1593:250;;:::o;4934:470:161:-;5110:4;1145:17:162;:15;:17::i;:::-;-1:-1:-1;;;;;1121:42:162;929:10:33;-1:-1:-1;;;;;1121:42:162;;1165:37;;;;;;;;;;;;;-1:-1:-1;;;1165:37:162;;;1113:90;;;;;-1:-1:-1;;;1113:90:162;;;;;;;;:::i;:::-;-1:-1:-1;5132:20:161::1;5155;:6:::0;5169:5;5155:13:::1;:20::i;:::-;5213:29;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;5213:29:161::1;::::0;::::1;::::0;5132:43;;-1:-1:-1;5194:17:161;5186:57:::1;;;;-1:-1:-1::0;;;5186:57:161::1;;;;;;;;:::i;:::-;;5256:25;5262:4;5268:12;5256:5;:25::i;:::-;5299:34;::::0;1966:25:187;;;5322:1:161::1;::::0;-1:-1:-1;;;;;5299:34:161;::::1;::::0;-1:-1:-1;;;;;;;;;;;5299:34:161;1954:2:187;1939:18;5299:34:161::1;;;;;;;5349:25;::::0;;1741::187;;;1797:2;1782:18;;1775:34;;;-1:-1:-1;;;;;5349:25:161;::::1;::::0;::::1;::::0;1714:18:187;5349:25:161::1;;;;;;;-1:-1:-1::0;5392:4:161::1;::::0;4934:470;-1:-1:-1;;;;4934:470:161:o;8759:146::-;8863:16;;:33;;;-1:-1:-1;;;8863:33:161;;;;8818:12;;-1:-1:-1;;;;;8863:16:161;;:31;;:33;;;;;;;;;;;;;;:16;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1291:126:146:-;1352:7;1379:30;524:4;1379:21;1391:8;:1;1397;1391:5;:8::i;:::-;571:7;577:1;524:4;571:7;:::i;:::-;1379:11;;:21::i;:::-;:25;;:30::i;:::-;1372:37;1291:126;-1:-1:-1;;;1291:126:146:o;8424:198:161:-;8567:16;;:46;;;-1:-1:-1;;;8567:46:161;;;;8496:25;;-1:-1:-1;;;;;8567:16:161;;:44;;:46;;;;;;;;;;;;;;:16;:46;;;;;;;;;;;;;;758:201:163;889:28;902:5;909:7;889:12;:28::i;:::-;926:15;:27;;-1:-1:-1;;926:27:163;;;;;;;;;;;;-1:-1:-1;;758:201:163:o;4002:501:162:-;-1:-1:-1;;;;;4147:28:162;;;;;;;:17;:28;;;;;;;;:39;;;;;;;;;;;;;4198:37;;;;;;;;;;;-1:-1:-1;;;4198:37:162;;;;;;;4147:49;-1:-1:-1;4147:49:162;4139:97;;;;-1:-1:-1;;;4139:97:162;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;4278:28:162;;;4255:20;4278:28;;;:17;:28;;;;;;;;:39;;;;;;;;;;;;:48;;4320:6;;4278:48;:::i;:::-;-1:-1:-1;;;;;4336:28:162;;;;;;;:17;:28;;;;;;;;:39;;;;;;;;;;;;:54;;;4255:71;;-1:-1:-1;4336:39:162;4406:90;4453:28;7945:16:161;;-1:-1:-1;;;;;7945:16:161;;7861:108;4453:28:162;4406:90;;;-1:-1:-1;;;;;10478:32:187;;;10460:51;;10542:2;10527:18;;10520:34;;;10433:18;4406:90:162;;;;;;;4129:374;4002:501;;;:::o;1425:158:146:-;1486:7;;1522:5;1526:1;1522;:5;:::i;:::-;1506:21;-1:-1:-1;1547:28:146;1573:1;1547:21;1557:10;:1;524:4;1557:5;:10::i;:::-;1547:5;;:9;:21::i;2233:398:163:-;2314:22;2339:19;3666:12:23;;;3579:106;2339:19:163;2314:44;;2365:25;2393:24;2409:7;-1:-1:-1;;;;;3843:18:23;3817:7;3843:18;;;:9;:18;;;;;;;3743:125;2393:24:163;2365:52;;2426:28;2438:7;2447:6;2426:11;:28::i;:::-;2518:1;2475:30;:28;:30::i;:::-;-1:-1:-1;;;;;2467:53:163;;2463:163;;2531:30;:28;:30::i;:::-;:87;;-1:-1:-1;;;2531:87:163;;-1:-1:-1;;;;;11272:32:187;;;2531:87:163;;;11254:51:187;11321:18;;;11314:34;;;11364:18;;;11357:34;;;2531:43:163;;;;;;;11227:18:187;;2531:87:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2463:163;2307:324;;2233:398;;:::o;2637:::-;2718:22;2743:19;3666:12:23;;;3579:106;2743:19:163;2718:44;;2769:25;2797:24;2813:7;-1:-1:-1;;;;;3843:18:23;3817:7;3843:18;;;:9;:18;;;;;;;3743:125;2797:24:163;2769:52;;2830:28;2842:7;2851:6;2830:11;:28::i;3465:96:71:-;3523:7;3549:5;3553:1;3549;:5;:::i;2755:96::-;2813:7;2839:5;2843:1;2839;:5;:::i;3850:96::-;3908:7;3934:5;3938:1;3934;:5;:::i;2114:147:23:-;5363:13:18;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:18;;;;;;;:::i;:::-;2216:38:23::1;2239:5;2246:7;2216:22;:38::i;:::-;2114:147:::0;;:::o;8904:535::-;-1:-1:-1;;;;;8987:21:23;;8979:65;;;;-1:-1:-1;;;8979:65:23;;12319:2:187;8979:65:23;;;12301:21:187;12358:2;12338:18;;;12331:30;12397:33;12377:18;;;12370:61;12448:18;;8979:65:23;12117:355:187;8979:65:23;9131:6;9115:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;9283:18:23;;;;;;:9;:18;;;;;;;;:28;;;;;;9336:37;1966:25:187;;;-1:-1:-1;;;;;;;;;;;9336:37:23;1939:18:187;9336:37:23;;;;;;;2114:147;;:::o;9759:659::-;-1:-1:-1;;;;;9842:21:23;;9834:67;;;;-1:-1:-1;;;9834:67:23;;12679:2:187;9834:67:23;;;12661:21:187;12718:2;12698:18;;;12691:30;12757:34;12737:18;;;12730:62;-1:-1:-1;;;12808:18:187;;;12801:31;12849:19;;9834:67:23;12477:397:187;9834:67:23;-1:-1:-1;;;;;9997:18:23;;9972:22;9997:18;;;:9;:18;;;;;;10033:24;;;;10025:71;;;;-1:-1:-1;;;10025:71:23;;13081:2:187;10025:71:23;;;13063:21:187;13120:2;13100:18;;;13093:30;13159:34;13139:18;;;13132:62;-1:-1:-1;;;13210:18:187;;;13203:32;13252:19;;10025:71:23;12879:398:187;10025:71:23;-1:-1:-1;;;;;10130:18:23;;;;;;:9;:18;;;;;;;;10151:23;;;10130:44;;10267:12;:22;;;;;;;10315:37;1966:25:187;;;10130:18:23;;;-1:-1:-1;;;;;;;;;;;10315:37:23;1939:18:187;10315:37:23;;;;;;;10363:48;9824:594;9759:659;;:::o;2267:159::-;5363:13:18;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:18;;;;;;;:::i;:::-;2379:5:23::1;:13;2387:5:::0;2379;:13:::1;:::i;:::-;-1:-1:-1::0;2402:7:23::1;:17;2412:7:::0;2402;:17:::1;:::i;14:423:187:-:0;56:3;94:5;88:12;121:6;116:3;109:19;146:1;156:162;170:6;167:1;164:13;156:162;;;232:4;288:13;;;284:22;;278:29;260:11;;;256:20;;249:59;185:12;156:162;;;160:3;363:1;356:4;347:6;342:3;338:16;334:27;327:38;426:4;419:2;415:7;410:2;402:6;398:15;394:29;389:3;385:39;381:50;374:57;;;14:423;;;;:::o;442:220::-;591:2;580:9;573:21;554:4;611:45;652:2;641:9;637:18;629:6;611:45;:::i;667:131::-;-1:-1:-1;;;;;742:31:187;;732:42;;722:70;;788:1;785;778:12;722:70;667:131;:::o;803:315::-;871:6;879;932:2;920:9;911:7;907:23;903:32;900:52;;;948:1;945;938:12;900:52;987:9;974:23;1006:31;1031:5;1006:31;:::i;:::-;1056:5;1108:2;1093:18;;;;1080:32;;-1:-1:-1;;;803:315:187:o;1315:247::-;1374:6;1427:2;1415:9;1406:7;1402:23;1398:32;1395:52;;;1443:1;1440;1433:12;1395:52;1482:9;1469:23;1501:31;1526:5;1501:31;:::i;2245:127::-;2306:10;2301:3;2297:20;2294:1;2287:31;2337:4;2334:1;2327:15;2361:4;2358:1;2351:15;2377:719;2420:5;2473:3;2466:4;2458:6;2454:17;2450:27;2440:55;;2491:1;2488;2481:12;2440:55;2527:6;2514:20;2553:18;2590:2;2586;2583:10;2580:36;;;2596:18;;:::i;:::-;2671:2;2665:9;2639:2;2725:13;;-1:-1:-1;;2721:22:187;;;2745:2;2717:31;2713:40;2701:53;;;2769:18;;;2789:22;;;2766:46;2763:72;;;2815:18;;:::i;:::-;2855:10;2851:2;2844:22;2890:2;2882:6;2875:18;2936:3;2929:4;2924:2;2916:6;2912:15;2908:26;2905:35;2902:55;;;2953:1;2950;2943:12;2902:55;3017:2;3010:4;3002:6;2998:17;2991:4;2983:6;2979:17;2966:54;3064:1;3057:4;3052:2;3044:6;3040:15;3036:26;3029:37;3084:6;3075:15;;;;;;2377:719;;;;:::o;3101:1266::-;3241:6;3249;3257;3265;3273;3281;3289;3297;3350:3;3338:9;3329:7;3325:23;3321:33;3318:53;;;3367:1;3364;3357:12;3318:53;3406:9;3393:23;3425:31;3450:5;3425:31;:::i;:::-;3475:5;-1:-1:-1;3532:2:187;3517:18;;3504:32;3545:33;3504:32;3545:33;:::i;:::-;3597:7;-1:-1:-1;3656:2:187;3641:18;;3628:32;3669:33;3628:32;3669:33;:::i;:::-;3721:7;-1:-1:-1;3775:2:187;3760:18;;3747:32;;-1:-1:-1;3826:3:187;3811:19;;3798:33;;-1:-1:-1;3883:3:187;3868:19;;3855:33;3932:4;3919:18;;3907:31;;3897:59;;3952:1;3949;3942:12;3897:59;3975:7;-1:-1:-1;4033:3:187;4018:19;;4005:33;4057:18;4087:14;;;4084:34;;;4114:1;4111;4104:12;4084:34;4137:50;4179:7;4170:6;4159:9;4155:22;4137:50;:::i;:::-;4127:60;;4240:3;4229:9;4225:19;4212:33;4196:49;;4270:2;4260:8;4257:16;4254:36;;;4286:1;4283;4276:12;4254:36;;4309:52;4353:7;4342:8;4331:9;4327:24;4309:52;:::i;:::-;4299:62;;;3101:1266;;;;;;;;;;;:::o;4372:456::-;4449:6;4457;4465;4518:2;4506:9;4497:7;4493:23;4489:32;4486:52;;;4534:1;4531;4524:12;4486:52;4573:9;4560:23;4592:31;4617:5;4592:31;:::i;:::-;4642:5;-1:-1:-1;4699:2:187;4684:18;;4671:32;4712:33;4671:32;4712:33;:::i;:::-;4372:456;;4764:7;;-1:-1:-1;;;4818:2:187;4803:18;;;;4790:32;;4372:456::o;5022:388::-;5090:6;5098;5151:2;5139:9;5130:7;5126:23;5122:32;5119:52;;;5167:1;5164;5157:12;5119:52;5206:9;5193:23;5225:31;5250:5;5225:31;:::i;:::-;5275:5;-1:-1:-1;5332:2:187;5317:18;;5304:32;5345:33;5304:32;5345:33;:::i;:::-;5397:7;5387:17;;;5022:388;;;;;:::o;5853:525::-;5939:6;5947;5955;5963;6016:3;6004:9;5995:7;5991:23;5987:33;5984:53;;;6033:1;6030;6023:12;5984:53;6072:9;6059:23;6091:31;6116:5;6091:31;:::i;:::-;6141:5;-1:-1:-1;6198:2:187;6183:18;;6170:32;6211:33;6170:32;6211:33;:::i;:::-;5853:525;;6263:7;;-1:-1:-1;;;;6317:2:187;6302:18;;6289:32;;6368:2;6353:18;6340:32;;5853:525::o;6383:383::-;6460:6;6468;6476;6529:2;6517:9;6508:7;6504:23;6500:32;6497:52;;;6545:1;6542;6535:12;6497:52;6584:9;6571:23;6603:31;6628:5;6603:31;:::i;:::-;6653:5;6705:2;6690:18;;6677:32;;-1:-1:-1;6756:2:187;6741:18;;;6728:32;;6383:383;-1:-1:-1;;;6383:383:187:o;6771:380::-;6850:1;6846:12;;;;6893;;;6914:61;;6968:4;6960:6;6956:17;6946:27;;6914:61;7021:2;7013:6;7010:14;6990:18;6987:38;6984:161;;7067:10;7062:3;7058:20;7055:1;7048:31;7102:4;7099:1;7092:15;7130:4;7127:1;7120:15;6984:161;;6771:380;;;:::o;7959:184::-;8029:6;8082:2;8070:9;8061:7;8057:23;8053:32;8050:52;;;8098:1;8095;8088:12;8050:52;-1:-1:-1;8121:16:187;;7959:184;-1:-1:-1;7959:184:187:o;8563:560::-;-1:-1:-1;;;;;8812:32:187;;8794:51;;8893:4;8881:17;;8876:2;8861:18;;8854:45;8935:3;8930:2;8915:18;;8908:31;;;-1:-1:-1;;8962:46:187;;8988:19;;8980:6;8962:46;:::i;:::-;9056:9;9048:6;9044:22;9039:2;9028:9;9024:18;9017:50;9084:33;9110:6;9102;9084:33;:::i;:::-;9076:41;8563:560;-1:-1:-1;;;;;;;8563:560:187:o;10030:251::-;10100:6;10153:2;10141:9;10132:7;10128:23;10124:32;10121:52;;;10169:1;10166;10159:12;10121:52;10201:9;10195:16;10220:31;10245:5;10220:31;:::i;10565:127::-;10626:10;10621:3;10617:20;10614:1;10607:31;10657:4;10654:1;10647:15;10681:4;10678:1;10671:15;10697:217;10737:1;10763;10753:132;;10807:10;10802:3;10798:20;10795:1;10788:31;10842:4;10839:1;10832:15;10870:4;10867:1;10860:15;10753:132;-1:-1:-1;10899:9:187;;10697:217::o;10919:128::-;10986:9;;;11007:11;;;11004:37;;;11021:18;;:::i;11402:168::-;11442:7;11508:1;11504;11500:6;11496:14;11493:1;11490:21;11485:1;11478:9;11471:17;11467:45;11464:71;;;11515:18;;:::i;:::-;-1:-1:-1;11555:9:187;;11402:168::o;11575:125::-;11640:9;;;11661:10;;;11658:36;;;11674:18;;:::i;11705:407::-;11907:2;11889:21;;;11946:2;11926:18;;;11919:30;11985:34;11980:2;11965:18;;11958:62;-1:-1:-1;;;12051:2:187;12036:18;;12029:41;12102:3;12087:19;;11705:407::o;13408:545::-;13510:2;13505:3;13502:11;13499:448;;;13546:1;13571:5;13567:2;13560:17;13616:4;13612:2;13602:19;13686:2;13674:10;13670:19;13667:1;13663:27;13657:4;13653:38;13722:4;13710:10;13707:20;13704:47;;;-1:-1:-1;13745:4:187;13704:47;13800:2;13795:3;13791:12;13788:1;13784:20;13778:4;13774:31;13764:41;;13855:82;13873:2;13866:5;13863:13;13855:82;;;13918:17;;;13899:1;13888:13;13855:82;;;13859:3;;;13408:545;;;:::o;14129:1352::-;14255:3;14249:10;14282:18;14274:6;14271:30;14268:56;;;14304:18;;:::i;:::-;14333:97;14423:6;14383:38;14415:4;14409:11;14383:38;:::i;:::-;14377:4;14333:97;:::i;:::-;14485:4;;14549:2;14538:14;;14566:1;14561:663;;;;15268:1;15285:6;15282:89;;;-1:-1:-1;15337:19:187;;;15331:26;15282:89;-1:-1:-1;;14086:1:187;14082:11;;;14078:24;14074:29;14064:40;14110:1;14106:11;;;14061:57;15384:81;;14531:944;;14561:663;13355:1;13348:14;;;13392:4;13379:18;;-1:-1:-1;;14597:20:187;;;14715:236;14729:7;14726:1;14723:14;14715:236;;;14818:19;;;14812:26;14797:42;;14910:27;;;;14878:1;14866:14;;;;14745:19;;14715:236;;;14719:3;14979:6;14970:7;14967:19;14964:201;;;15040:19;;;15034:26;-1:-1:-1;;15123:1:187;15119:14;;;15135:3;15115:24;15111:37;15107:42;15092:58;15077:74;;14964:201;-1:-1:-1;;;;;15211:1:187;15195:14;;;15191:22;15178:36;;-1:-1:-1;14129:1352:187:o",
"linkReferences": {}
},
"methodIdentifiers": {
"POOL()": "7535d246",
"UNDERLYING_ASSET_ADDRESS()": "b16a19de",
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"approveDelegation(address,uint256)": "c04a8a10",
"balanceOf(address)": "70a08231",
"borrowAllowance(address,address)": "6bd76d24",
"burn(address,uint256,uint256)": "f5298aca",
"decimals()": "313ce567",
"decreaseAllowance(address,uint256)": "a457c2d7",
"getPoolIncentivesController()": "19ef9268",
"getScaledUserBalanceAndSupply(address)": "0afbcdc9",
"increaseAllowance(address,uint256)": "39509351",
"initialize(address,address,address,uint256,uint256,uint8,string,string)": "1e5fa51f",
"mint(address,address,uint256,uint256)": "b3f1c93d",
"name()": "06fdde03",
"scaledBalanceOf(address)": "1da24f3e",
"scaledTotalSupply()": "b1bf962d",
"symbol()": "95d89b41",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd"
},
"rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromUser\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toUser\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BorrowAllowanceDelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"underlyingCollateral\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"underlyingAsset\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"incentivesController\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"debtTokenDecimals\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"debtTokenName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"debtTokenSymbol\",\"type\":\"string\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"POOL\",\"outputs\":[{\"internalType\":\"contract ILendingPool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_ASSET_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromUser\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toUser\",\"type\":\"address\"}],\"name\":\"borrowAllowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolIncentivesController\",\"outputs\":[{\"internalType\":\"contract IPoolIncentivesController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getScaledUserBalanceAndSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressProvider\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingCollateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingAsset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"underlyingMaxTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"underlyingMinTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"debtTokenDecimals\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"debtTokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"debtTokenSymbol\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"scaledBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"scaledTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"FluidNFT\",\"details\":\"Debt tokens are non-transferable and so diverge from the ERC20 standard.\",\"kind\":\"dev\",\"methods\":{\"POOL()\":{\"details\":\"Returns the address of the lending pool where this token is used*\"},\"UNDERLYING_ASSET_ADDRESS()\":{\"details\":\"Returns the address of the underlying asset of this fToken*\"},\"approveDelegation(address,uint256)\":{\"details\":\"delegates borrowing power to a user on the specific debt token\",\"params\":{\"amount\":\"the maximum amount being delegated. Delegation will still respect the liquidation constraints (even if delegated, a delegatee cannot force a delegator HF to go below 1)*\",\"delegatee\":\"the address receiving the delegated borrowing power\"}},\"balanceOf(address)\":{\"details\":\"Calculates the accumulated debt balance of the user\",\"returns\":{\"_0\":\"The debt balance of the user*\"}},\"borrowAllowance(address,address)\":{\"details\":\"returns the borrow allowance of the user\",\"params\":{\"fromUser\":\"The user to giving allowance\",\"toUser\":\"The user to give allowance to\"},\"returns\":{\"_0\":\"the current allowance of toUser*\"}},\"burn(address,uint256,uint256)\":{\"details\":\"Burns user variable debt - Only callable by the LendingPool\",\"params\":{\"amount\":\"The amount getting burned\",\"index\":\"The variable debt index of the reserve*\",\"user\":\"The user whose debt is getting burned\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"decimals()\":{\"details\":\"Returns the decimals of the token.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getPoolIncentivesController()\":{\"details\":\"Returns the address of the incentives controller contract*\"},\"getScaledUserBalanceAndSupply(address)\":{\"details\":\"Returns the principal balance of the user and principal total supply.\",\"params\":{\"user\":\"The address of the user\"},\"returns\":{\"_0\":\"The principal balance of the user\",\"_1\":\"The principal total supply*\"}},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"initialize(address,address,address,uint256,uint256,uint8,string,string)\":{\"details\":\"Initializes the debt token.\",\"params\":{\"addressProvider\":\"The address provider \",\"debtTokenDecimals\":\"The decimals of the debtToken, same as the underlying asset's\",\"debtTokenName\":\"The name of the token\",\"debtTokenSymbol\":\"The symbol of the token\",\"underlyingAsset\":\"The address of the underlying asset of this debtToken\",\"underlyingCollateral\":\"The address of the underlying collateral of this debtToken\",\"underlyingMaxTokenId\":\"The max tokenId of the underlying collateral of this debtToken\",\"underlyingMinTokenId\":\"The min tokenId of the underlying collateral of this debtToken\"}},\"mint(address,address,uint256,uint256)\":{\"details\":\"Mints debt token to the `user` address - Only callable by the LendingPool\",\"params\":{\"amount\":\"The amount of debt being minted\",\"index\":\"The variable debt index of the reserve\",\"initiator\":\"The address calling borrow\"},\"returns\":{\"_0\":\"`true` if the the previous balance of the user is 0*\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"scaledBalanceOf(address)\":{\"details\":\"Returns the principal debt balance of the user from\",\"returns\":{\"_0\":\"The debt balance of the user since the last burn/mint action*\"}},\"scaledTotalSupply()\":{\"details\":\"Returns the scaled total supply of the variable debt token. Represents sum(debt/index)\",\"returns\":{\"_0\":\"the scaled total supply*\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the total supply of the variable debt token. Represents the total debt accrued by the users\",\"returns\":{\"_0\":\"The total supply*\"}},\"transfer(address,uint256)\":{\"details\":\"Being non transferrable, the debt token does not implement any of the standard ERC20 functions for transfer and allowance.*\"}},\"title\":\"VariableDebtToken\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows for the tracking of debt for the purposes of APY calculations at a variable rate mode.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/protocol/tokenization/VariableDebtToken.sol\":\"VariableDebtToken\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=lib/chainlink/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xe798cadb41e2da274913e4b3183a80f50fb057a42238fe8467e077268100ec27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899f850f7df5a270bccfb765d70069959ca1c20d3a7381c1c3bda8a3ffee1935\",\"dweb:/ipfs/QmVdnAqwyX2L3nX2HDA5WKGtVBFyH1nKE9A1k7fZnPBkhP\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xb1d9e69cf8073efa574b31b1f840e20709139c19bfb27e60b16393d6073f3d42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c39b800e55781c0f7a644ec9cc615664dbe2f009198e537e6acaad3086ba093\",\"dweb:/ipfs/Qmaugq2wsB1ASX8Kv29NwXqYhZY8HRNqcdvmBe9UUNEq2V\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol\":{\"keccak256\":\"0x4e733d3164f73f461eaf9d8087a7ad1ea180bdc8ba0d3d61b0e1ae16d8e63dff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75b47c3aeca7b66ea6752f8be020ec5c1c502de6ec9065272dae23d3a52196e2\",\"dweb:/ipfs/QmUebPMHv16tYKFh5BmBQkMfRFb5b8UZ2RgVwdjxCeufVF\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol\":{\"keccak256\":\"0x605434219ebbe4653f703640f06969faa5a1d78f0bfef878e5ddbb1ca369ceeb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c9c634f99dd02d73ce7498b03a6305e251c05eeebb71457306561c1fab0fa7d\",\"dweb:/ipfs/QmbYRBbZHy8YoaQKXdPryiL3CSS7uUaRfRYi1TUj9cTqJQ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol\":{\"keccak256\":\"0x0f633a0223d9a1dcccfcf38a64c9de0874dfcbfac0c6941ccf074d63a2ce0e1e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://864a40efcffdf408044c332a5aa38ec5618ed7b4eecb8f65faf45671bd6cdc65\",\"dweb:/ipfs/QmQJquTMtc6fgm5JQzGdsGpA2fqBe3MHWEdt2qzaLySMdN\"]},\"src/interfaces/IAddressProvider.sol\":{\"keccak256\":\"0x6730abfcd8770e3279dad6137bf619ab98ee8b049e6dd85d2fbe87ba6224fde8\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://9b7d1588eab025b049f858ab2f329be7fec220198d956b9b61bf0b9bddc5761a\",\"dweb:/ipfs/QmTaFkYSUfWmbpsyE2TKC1QvP6eTDggZ72ZWodBhydqt5X\"]},\"src/interfaces/ICreditDelegationToken.sol\":{\"keccak256\":\"0xd503435c6285ec39fbe57260dfa5245e8087fb336faf9a3759d345f3150247dc\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://339566f8416bbc263e4bc2de02a23fe35e232f701298d59b1c5937ab4eea3880\",\"dweb:/ipfs/QmdJyM2xuyLBZnWfQR8fUiUhvazAWsVTvD9agj2HapdmmK\"]},\"src/interfaces/ILendingPool.sol\":{\"keccak256\":\"0x345ab4285354bb5184bdd501d7c37920a711215b6f6c2db05b05d585f2454115\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://3b6264b135760dcdd59b9a3566c1305b00084922da177159a85c206ef6a91266\",\"dweb:/ipfs/QmSotEH7zF3vrEgo2gZuunWwroHgc6bw7TVRntzv7jsJn1\"]},\"src/interfaces/IPoolIncentivesController.sol\":{\"keccak256\":\"0x7cb2c32050814e6d6d962a603104facc3bb1dad15171304e3ee756648e8f9ae1\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://cf534f592706b2a61c539c03e5d1e199c15472bcfb4ee69838e5c93ba7914466\",\"dweb:/ipfs/QmPrvXhJigK1Ke51YwAWHon1Kv88WT26iD3MwzCaPDs1Kv\"]},\"src/interfaces/IScaledBalanceToken.sol\":{\"keccak256\":\"0xb6a8f00773c5f58af761573f39f6aa3649c9deec5c4e078f5e3ca78940e4eac7\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://0938c6fd92b015670a2bcf5ff971aafbc6295e07c78d1300c5e36a67002dc70c\",\"dweb:/ipfs/QmYDcxNaAAfnupwDcDN1xtQcCEXTwW1FWiaTiU3MksCQ1Z\"]},\"src/interfaces/IVariableDebtToken.sol\":{\"keccak256\":\"0x61d5cce91604a2d97218fdf1f53022e08061aae2adc6dc5fb0ba311d46a212cc\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://e8e62cce1a93aafcff2438c111ca7af77c8c2a6ed3d5c7ffce2598aa73fb87c9\",\"dweb:/ipfs/QmXXpq9J65pU5Wt9WUR1sZMjss2gUDfEvpDAc9npQfxGcC\"]},\"src/protocol/libraries/helpers/Errors.sol\":{\"keccak256\":\"0x490e76871922e89a13ba0bb88977be18c143fa9d0cd9afb033744a3d81479c52\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://1c409d4d1e1689d8d8f3c3e361198d20f3b6476608c5316d8e2d91f52373e8e3\",\"dweb:/ipfs/QmRZaYpxqjmBpbxb51KqswKYPSeCsU3ejbmk5E3MrMxJaM\"]},\"src/protocol/libraries/math/WadRayMath.sol\":{\"keccak256\":\"0xb29e8edc0e0e6bfead27945357c9e4a66e0c11e58ff3b87ee68ed1b5ca416735\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://d1b4377995155f32bb6c3ba558875c617fa63601c597099d3460063ac2a15d93\",\"dweb:/ipfs/QmUvCE6Q2J62sMgQCCEbQauWSYJpMiu3QCgWa6mZnEmcK2\"]},\"src/protocol/libraries/types/ConfigTypes.sol\":{\"keccak256\":\"0xa8f9b14d9adf738033fd1847b30012d0e022027614fd6c9bb31a01bc6bfb1634\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://b20c579d1b683dd5977a675c2e46adeebd56c96faa68cda9b0767edf02a5b650\",\"dweb:/ipfs/QmPULpaX2ouktArvXJxYNVPQ9vKBhEeCYA4smo8v57qFLD\"]},\"src/protocol/libraries/types/DataTypes.sol\":{\"keccak256\":\"0x070f7865fe84ce4c9ebd86bbe24771607fbdb4e8777510b46cb5064e4d9b90a3\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://504fd0c937cc69cc0737c4ef5dcec477017ccbff609b45b210274fd7bf0792cf\",\"dweb:/ipfs/QmeW1TkAHib7XRBVmgMRTdmsa4Rg9HVToTMnifEE1C7mTi\"]},\"src/protocol/tokenization/VariableDebtToken.sol\":{\"keccak256\":\"0x3fe743180764430cb8b42b83eed55391caba8f432480651a9a8e115db27f0e00\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://2aea0f332f16f5cb56d1c3b3898d567eba53818f06ee1723fdf78cec4150f681\",\"dweb:/ipfs/QmfV2F5dAuYidrEFHGhhkT1aBixtEcWSeB8dLEL2ppc86q\"]},\"src/protocol/tokenization/base/DebtTokenBase.sol\":{\"keccak256\":\"0x7a3cc782fbb4308dc2981007d00d94a507da3185db59628f209116af4e31f342\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://a709ab96e62f86169fa36f760df6cfe9db532f5ce0b95e9437cdc93ec86273dc\",\"dweb:/ipfs/QmXJ8az9pqhhp4XSufsPTA1bhz5KHGDdFsm53itWrhi3gJ\"]},\"src/protocol/tokenization/base/IncentivizedERC20.sol\":{\"keccak256\":\"0xeef558a6fb8826dd7eff89e1eb24072b5533825cbbfd3ee950623bb433ecabc6\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://4453844f67a9d9339dda3d5081073188d45b8fd274aea524b239e3462ef67236\",\"dweb:/ipfs/QmVxGsuhu1NGFd5WqnGZns8pY1VEUALhMUTx76x6hxhkn8\"]}},\"version\":1}",
"metadata": {
"compiler": {
"version": "0.8.16+commit.07a7930e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "spender",
"type": "address",
"indexed": true
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "Approval",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address",
"name": "fromUser",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "toUser",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "asset",
"type": "address",
"indexed": false
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "BorrowAllowanceDelegated",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address",
"indexed": true
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256",
"indexed": false
},
{
"internalType": "uint256",
"name": "index",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "Burn",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address",
"name": "underlyingCollateral",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "underlyingAsset",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "pool",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "incentivesController",
"type": "address",
"indexed": false
},
{
"internalType": "uint8",
"name": "debtTokenDecimals",
"type": "uint8",
"indexed": false
},
{
"internalType": "string",
"name": "debtTokenName",
"type": "string",
"indexed": false
},
{
"internalType": "string",
"name": "debtTokenSymbol",
"type": "string",
"indexed": false
}
],
"type": "event",
"name": "Initialized",
"anonymous": false
},
{
"inputs": [
{
"internalType": "uint8",
"name": "version",
"type": "uint8",
"indexed": false
}
],
"type": "event",
"name": "Initialized",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address",
"indexed": true
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256",
"indexed": false
},
{
"internalType": "uint256",
"name": "index",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "Mint",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "to",
"type": "address",
"indexed": true
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "Transfer",
"anonymous": false
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "POOL",
"outputs": [
{
"internalType": "contract ILendingPool",
"name": "",
"type": "address"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "UNDERLYING_ASSET_ADDRESS",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "delegatee",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "approveDelegation"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "fromUser",
"type": "address"
},
{
"internalType": "address",
"name": "toUser",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "borrowAllowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "burn",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "subtractedValue",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "decreaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "getPoolIncentivesController",
"outputs": [
{
"internalType": "contract IPoolIncentivesController",
"name": "",
"type": "address"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "getScaledUserBalanceAndSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "addedValue",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "increaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "addressProvider",
"type": "address"
},
{
"internalType": "address",
"name": "underlyingCollateral",
"type": "address"
},
{
"internalType": "address",
"name": "underlyingAsset",
"type": "address"
},
{
"internalType": "uint256",
"name": "underlyingMaxTokenId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "underlyingMinTokenId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "debtTokenDecimals",
"type": "uint8"
},
{
"internalType": "string",
"name": "debtTokenName",
"type": "string"
},
{
"internalType": "string",
"name": "debtTokenSymbol",
"type": "string"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "initialize"
},
{
"inputs": [
{
"internalType": "address",
"name": "initiator",
"type": "address"
},
{
"internalType": "address",
"name": "onBehalfOf",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "mint",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "scaledBalanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "scaledTotalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
}
],
"devdoc": {
"kind": "dev",
"methods": {
"POOL()": {
"details": "Returns the address of the lending pool where this token is used*"
},
"UNDERLYING_ASSET_ADDRESS()": {
"details": "Returns the address of the underlying asset of this fToken*"
},
"approveDelegation(address,uint256)": {
"details": "delegates borrowing power to a user on the specific debt token",
"params": {
"amount": "the maximum amount being delegated. Delegation will still respect the liquidation constraints (even if delegated, a delegatee cannot force a delegator HF to go below 1)*",
"delegatee": "the address receiving the delegated borrowing power"
}
},
"balanceOf(address)": {
"details": "Calculates the accumulated debt balance of the user",
"returns": {
"_0": "The debt balance of the user*"
}
},
"borrowAllowance(address,address)": {
"details": "returns the borrow allowance of the user",
"params": {
"fromUser": "The user to giving allowance",
"toUser": "The user to give allowance to"
},
"returns": {
"_0": "the current allowance of toUser*"
}
},
"burn(address,uint256,uint256)": {
"details": "Burns user variable debt - Only callable by the LendingPool",
"params": {
"amount": "The amount getting burned",
"index": "The variable debt index of the reserve*",
"user": "The user whose debt is getting burned"
}
},
"constructor": {
"custom:oz-upgrades-unsafe-allow": "constructor"
},
"decimals()": {
"details": "Returns the decimals of the token."
},
"decreaseAllowance(address,uint256)": {
"details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."
},
"getPoolIncentivesController()": {
"details": "Returns the address of the incentives controller contract*"
},
"getScaledUserBalanceAndSupply(address)": {
"details": "Returns the principal balance of the user and principal total supply.",
"params": {
"user": "The address of the user"
},
"returns": {
"_0": "The principal balance of the user",
"_1": "The principal total supply*"
}
},
"increaseAllowance(address,uint256)": {
"details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."
},
"initialize(address,address,address,uint256,uint256,uint8,string,string)": {
"details": "Initializes the debt token.",
"params": {
"addressProvider": "The address provider ",
"debtTokenDecimals": "The decimals of the debtToken, same as the underlying asset's",
"debtTokenName": "The name of the token",
"debtTokenSymbol": "The symbol of the token",
"underlyingAsset": "The address of the underlying asset of this debtToken",
"underlyingCollateral": "The address of the underlying collateral of this debtToken",
"underlyingMaxTokenId": "The max tokenId of the underlying collateral of this debtToken",
"underlyingMinTokenId": "The min tokenId of the underlying collateral of this debtToken"
}
},
"mint(address,address,uint256,uint256)": {
"details": "Mints debt token to the `user` address - Only callable by the LendingPool",
"params": {
"amount": "The amount of debt being minted",
"index": "The variable debt index of the reserve",
"initiator": "The address calling borrow"
},
"returns": {
"_0": "`true` if the the previous balance of the user is 0*"
}
},
"name()": {
"details": "Returns the name of the token."
},
"scaledBalanceOf(address)": {
"details": "Returns the principal debt balance of the user from",
"returns": {
"_0": "The debt balance of the user since the last burn/mint action*"
}
},
"scaledTotalSupply()": {
"details": "Returns the scaled total supply of the variable debt token. Represents sum(debt/index)",
"returns": {
"_0": "the scaled total supply*"
}
},
"symbol()": {
"details": "Returns the symbol of the token, usually a shorter version of the name."
},
"totalSupply()": {
"details": "Returns the total supply of the variable debt token. Represents the total debt accrued by the users",
"returns": {
"_0": "The total supply*"
}
},
"transfer(address,uint256)": {
"details": "Being non transferrable, the debt token does not implement any of the standard ERC20 functions for transfer and allowance.*"
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"remappings": [
":@chainlink/=lib/chainlink/",
":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/",
":ds-test/=lib/forge-std/lib/ds-test/src/",
":forge-std/=lib/forge-std/src/"
],
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"bytecodeHash": "ipfs"
},
"compilationTarget": {
"src/protocol/tokenization/VariableDebtToken.sol": "VariableDebtToken"
},
"libraries": {}
},
"sources": {
"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": {
"keccak256": "0xe798cadb41e2da274913e4b3183a80f50fb057a42238fe8467e077268100ec27",
"urls": [
"bzz-raw://899f850f7df5a270bccfb765d70069959ca1c20d3a7381c1c3bda8a3ffee1935",
"dweb:/ipfs/QmVdnAqwyX2L3nX2HDA5WKGtVBFyH1nKE9A1k7fZnPBkhP"
],
"license": "MIT"
},
"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol": {
"keccak256": "0xb1d9e69cf8073efa574b31b1f840e20709139c19bfb27e60b16393d6073f3d42",
"urls": [
"bzz-raw://7c39b800e55781c0f7a644ec9cc615664dbe2f009198e537e6acaad3086ba093",
"dweb:/ipfs/Qmaugq2wsB1ASX8Kv29NwXqYhZY8HRNqcdvmBe9UUNEq2V"
],
"license": "MIT"
},
"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol": {
"keccak256": "0x4e733d3164f73f461eaf9d8087a7ad1ea180bdc8ba0d3d61b0e1ae16d8e63dff",
"urls": [
"bzz-raw://75b47c3aeca7b66ea6752f8be020ec5c1c502de6ec9065272dae23d3a52196e2",
"dweb:/ipfs/QmUebPMHv16tYKFh5BmBQkMfRFb5b8UZ2RgVwdjxCeufVF"
],
"license": "MIT"
},
"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol": {
"keccak256": "0x605434219ebbe4653f703640f06969faa5a1d78f0bfef878e5ddbb1ca369ceeb",
"urls": [
"bzz-raw://4c9c634f99dd02d73ce7498b03a6305e251c05eeebb71457306561c1fab0fa7d",
"dweb:/ipfs/QmbYRBbZHy8YoaQKXdPryiL3CSS7uUaRfRYi1TUj9cTqJQ"
],
"license": "MIT"
},
"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol": {
"keccak256": "0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183",
"urls": [
"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06",
"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879"
],
"license": "MIT"
},
"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": {
"keccak256": "0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149",
"urls": [
"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c",
"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"
],
"license": "MIT"
},
"lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol": {
"keccak256": "0x0f633a0223d9a1dcccfcf38a64c9de0874dfcbfac0c6941ccf074d63a2ce0e1e",
"urls": [
"bzz-raw://864a40efcffdf408044c332a5aa38ec5618ed7b4eecb8f65faf45671bd6cdc65",
"dweb:/ipfs/QmQJquTMtc6fgm5JQzGdsGpA2fqBe3MHWEdt2qzaLySMdN"
],
"license": "MIT"
},
"src/interfaces/IAddressProvider.sol": {
"keccak256": "0x6730abfcd8770e3279dad6137bf619ab98ee8b049e6dd85d2fbe87ba6224fde8",
"urls": [
"bzz-raw://9b7d1588eab025b049f858ab2f329be7fec220198d956b9b61bf0b9bddc5761a",
"dweb:/ipfs/QmTaFkYSUfWmbpsyE2TKC1QvP6eTDggZ72ZWodBhydqt5X"
],
"license": "AGPL-3.0"
},
"src/interfaces/ICreditDelegationToken.sol": {
"keccak256": "0xd503435c6285ec39fbe57260dfa5245e8087fb336faf9a3759d345f3150247dc",
"urls": [
"bzz-raw://339566f8416bbc263e4bc2de02a23fe35e232f701298d59b1c5937ab4eea3880",
"dweb:/ipfs/QmdJyM2xuyLBZnWfQR8fUiUhvazAWsVTvD9agj2HapdmmK"
],
"license": "AGPL-3.0"
},
"src/interfaces/ILendingPool.sol": {
"keccak256": "0x345ab4285354bb5184bdd501d7c37920a711215b6f6c2db05b05d585f2454115",
"urls": [
"bzz-raw://3b6264b135760dcdd59b9a3566c1305b00084922da177159a85c206ef6a91266",
"dweb:/ipfs/QmSotEH7zF3vrEgo2gZuunWwroHgc6bw7TVRntzv7jsJn1"
],
"license": "AGPL-3.0"
},
"src/interfaces/IPoolIncentivesController.sol": {
"keccak256": "0x7cb2c32050814e6d6d962a603104facc3bb1dad15171304e3ee756648e8f9ae1",
"urls": [
"bzz-raw://cf534f592706b2a61c539c03e5d1e199c15472bcfb4ee69838e5c93ba7914466",
"dweb:/ipfs/QmPrvXhJigK1Ke51YwAWHon1Kv88WT26iD3MwzCaPDs1Kv"
],
"license": "AGPL-3.0"
},
"src/interfaces/IScaledBalanceToken.sol": {
"keccak256": "0xb6a8f00773c5f58af761573f39f6aa3649c9deec5c4e078f5e3ca78940e4eac7",
"urls": [
"bzz-raw://0938c6fd92b015670a2bcf5ff971aafbc6295e07c78d1300c5e36a67002dc70c",
"dweb:/ipfs/QmYDcxNaAAfnupwDcDN1xtQcCEXTwW1FWiaTiU3MksCQ1Z"
],
"license": "AGPL-3.0"
},
"src/interfaces/IVariableDebtToken.sol": {
"keccak256": "0x61d5cce91604a2d97218fdf1f53022e08061aae2adc6dc5fb0ba311d46a212cc",
"urls": [
"bzz-raw://e8e62cce1a93aafcff2438c111ca7af77c8c2a6ed3d5c7ffce2598aa73fb87c9",
"dweb:/ipfs/QmXXpq9J65pU5Wt9WUR1sZMjss2gUDfEvpDAc9npQfxGcC"
],
"license": "AGPL-3.0"
},
"src/protocol/libraries/helpers/Errors.sol": {
"keccak256": "0x490e76871922e89a13ba0bb88977be18c143fa9d0cd9afb033744a3d81479c52",
"urls": [
"bzz-raw://1c409d4d1e1689d8d8f3c3e361198d20f3b6476608c5316d8e2d91f52373e8e3",
"dweb:/ipfs/QmRZaYpxqjmBpbxb51KqswKYPSeCsU3ejbmk5E3MrMxJaM"
],
"license": "AGPL-3.0"
},
"src/protocol/libraries/math/WadRayMath.sol": {
"keccak256": "0xb29e8edc0e0e6bfead27945357c9e4a66e0c11e58ff3b87ee68ed1b5ca416735",
"urls": [
"bzz-raw://d1b4377995155f32bb6c3ba558875c617fa63601c597099d3460063ac2a15d93",
"dweb:/ipfs/QmUvCE6Q2J62sMgQCCEbQauWSYJpMiu3QCgWa6mZnEmcK2"
],
"license": "AGPL-3.0"
},
"src/protocol/libraries/types/ConfigTypes.sol": {
"keccak256": "0xa8f9b14d9adf738033fd1847b30012d0e022027614fd6c9bb31a01bc6bfb1634",
"urls": [
"bzz-raw://b20c579d1b683dd5977a675c2e46adeebd56c96faa68cda9b0767edf02a5b650",
"dweb:/ipfs/QmPULpaX2ouktArvXJxYNVPQ9vKBhEeCYA4smo8v57qFLD"
],
"license": "AGPL-3.0"
},
"src/protocol/libraries/types/DataTypes.sol": {
"keccak256": "0x070f7865fe84ce4c9ebd86bbe24771607fbdb4e8777510b46cb5064e4d9b90a3",
"urls": [
"bzz-raw://504fd0c937cc69cc0737c4ef5dcec477017ccbff609b45b210274fd7bf0792cf",
"dweb:/ipfs/QmeW1TkAHib7XRBVmgMRTdmsa4Rg9HVToTMnifEE1C7mTi"
],
"license": "AGPL-3.0"
},
"src/protocol/tokenization/VariableDebtToken.sol": {
"keccak256": "0x3fe743180764430cb8b42b83eed55391caba8f432480651a9a8e115db27f0e00",
"urls": [
"bzz-raw://2aea0f332f16f5cb56d1c3b3898d567eba53818f06ee1723fdf78cec4150f681",
"dweb:/ipfs/QmfV2F5dAuYidrEFHGhhkT1aBixtEcWSeB8dLEL2ppc86q"
],
"license": "AGPL-3.0"
},
"src/protocol/tokenization/base/DebtTokenBase.sol": {
"keccak256": "0x7a3cc782fbb4308dc2981007d00d94a507da3185db59628f209116af4e31f342",
"urls": [
"bzz-raw://a709ab96e62f86169fa36f760df6cfe9db532f5ce0b95e9437cdc93ec86273dc",
"dweb:/ipfs/QmXJ8az9pqhhp4XSufsPTA1bhz5KHGDdFsm53itWrhi3gJ"
],
"license": "AGPL-3.0"
},
"src/protocol/tokenization/base/IncentivizedERC20.sol": {
"keccak256": "0xeef558a6fb8826dd7eff89e1eb24072b5533825cbbfd3ee950623bb433ecabc6",
"urls": [
"bzz-raw://4453844f67a9d9339dda3d5081073188d45b8fd274aea524b239e3462ef67236",
"dweb:/ipfs/QmVxGsuhu1NGFd5WqnGZns8pY1VEUALhMUTx76x6hxhkn8"
],
"license": "AGPL-3.0"
}
},
"version": 1
},
"ast": {
"absolutePath": "src/protocol/tokenization/VariableDebtToken.sol",
"id": 71765,
"exportedSymbols": {
"DebtTokenBase": [
72045
],
"ERC20Upgradeable": [
27111
],
"Errors": [
57944
],
"IAddressProvider": [
46447
],
"IERC20Upgradeable": [
27189
],
"ILendingPool": [
48084
],
"IPoolIncentivesController": [
48421
],
"IVariableDebtToken": [
48815
],
"IncentivizedERC20": [
72276
],
"Initializable": [
26136
],
"VariableDebtToken": [
71764
],
"WadRayMath": [
64503
]
},
"nodeType": "SourceUnit",
"src": "38:8872:161",
"nodes": [
{
"id": 71315,
"nodeType": "PragmaDirective",
"src": "38:23:161",
"nodes": [],
"literals": [
"solidity",
"0.8",
".16"
]
},
{
"id": 71317,
"nodeType": "ImportDirective",
"src": "65:77:161",
"nodes": [],
"absolutePath": "src/interfaces/IVariableDebtToken.sol",
"file": "../../interfaces/IVariableDebtToken.sol",
"nameLocation": "-1:-1:-1",
"scope": 71765,
"sourceUnit": 48816,
"symbolAliases": [
{
"foreign": {
"id": 71316,
"name": "IVariableDebtToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48815,
"src": "74:18:161",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 71319,
"nodeType": "ImportDirective",
"src": "144:65:161",
"nodes": [],
"absolutePath": "src/interfaces/ILendingPool.sol",
"file": "../../interfaces/ILendingPool.sol",
"nameLocation": "-1:-1:-1",
"scope": 71765,
"sourceUnit": 48085,
"symbolAliases": [
{
"foreign": {
"id": 71318,
"name": "ILendingPool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48084,
"src": "153:12:161",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 71321,
"nodeType": "ImportDirective",
"src": "211:73:161",
"nodes": [],
"absolutePath": "src/interfaces/IAddressProvider.sol",
"file": "../../interfaces/IAddressProvider.sol",
"nameLocation": "-1:-1:-1",
"scope": 71765,
"sourceUnit": 46448,
"symbolAliases": [
{
"foreign": {
"id": 71320,
"name": "IAddressProvider",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 46447,
"src": "220:16:161",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 71323,
"nodeType": "ImportDirective",
"src": "286:91:161",
"nodes": [],
"absolutePath": "src/interfaces/IPoolIncentivesController.sol",
"file": "../../interfaces/IPoolIncentivesController.sol",
"nameLocation": "-1:-1:-1",
"scope": 71765,
"sourceUnit": 48422,
"symbolAliases": [
{
"foreign": {
"id": 71322,
"name": "IPoolIncentivesController",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48421,
"src": "295:25:161",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 71325,
"nodeType": "ImportDirective",
"src": "381:57:161",
"nodes": [],
"absolutePath": "src/protocol/tokenization/base/DebtTokenBase.sol",
"file": "./base/DebtTokenBase.sol",
"nameLocation": "-1:-1:-1",
"scope": 71765,
"sourceUnit": 72046,
"symbolAliases": [
{
"foreign": {
"id": 71324,
"name": "DebtTokenBase",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 72045,
"src": "390:13:161",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 71327,
"nodeType": "ImportDirective",
"src": "440:65:161",
"nodes": [],
"absolutePath": "src/protocol/tokenization/base/IncentivizedERC20.sol",
"file": "./base/IncentivizedERC20.sol",
"nameLocation": "-1:-1:-1",
"scope": 71765,
"sourceUnit": 72277,
"symbolAliases": [
{
"foreign": {
"id": 71326,
"name": "IncentivizedERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 72276,
"src": "449:17:161",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 71329,
"nodeType": "ImportDirective",
"src": "507:62:161",
"nodes": [],
"absolutePath": "src/protocol/libraries/math/WadRayMath.sol",
"file": "../libraries/math/WadRayMath.sol",
"nameLocation": "-1:-1:-1",
"scope": 71765,
"sourceUnit": 64504,
"symbolAliases": [
{
"foreign": {
"id": 71328,
"name": "WadRayMath",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 64503,
"src": "516:10:161",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 71331,
"nodeType": "ImportDirective",
"src": "571:56:161",
"nodes": [],
"absolutePath": "src/protocol/libraries/helpers/Errors.sol",
"file": "../libraries/helpers/Errors.sol",
"nameLocation": "-1:-1:-1",
"scope": 71765,
"sourceUnit": 57945,
"symbolAliases": [
{
"foreign": {
"id": 71330,
"name": "Errors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 57944,
"src": "580:6:161",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 71333,
"nodeType": "ImportDirective",
"src": "631:106:161",
"nodes": [],
"absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol",
"file": "@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol",
"nameLocation": "-1:-1:-1",
"scope": 71765,
"sourceUnit": 27190,
"symbolAliases": [
{
"foreign": {
"id": 71332,
"name": "IERC20Upgradeable",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27189,
"src": "640:17:161",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 71335,
"nodeType": "ImportDirective",
"src": "739:104:161",
"nodes": [],
"absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol",
"file": "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol",
"nameLocation": "-1:-1:-1",
"scope": 71765,
"sourceUnit": 27112,
"symbolAliases": [
{
"foreign": {
"id": 71334,
"name": "ERC20Upgradeable",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27111,
"src": "748:16:161",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 71337,
"nodeType": "ImportDirective",
"src": "845:98:161",
"nodes": [],
"absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol",
"file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
"nameLocation": "-1:-1:-1",
"scope": 71765,
"sourceUnit": 26137,
"symbolAliases": [
{
"foreign": {
"id": 71336,
"name": "Initializable",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26136,
"src": "854:13:161",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 71764,
"nodeType": "ContractDefinition",
"src": "1194:7714:161",
"nodes": [
{
"id": 71345,
"nodeType": "UsingForDirective",
"src": "1265:29:161",
"nodes": [],
"global": false,
"libraryName": {
"id": 71343,
"name": "WadRayMath",
"nameLocations": [
"1271:10:161"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 64503,
"src": "1271:10:161"
},
"typeName": {
"id": 71344,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1286:7:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
{
"id": 71348,
"nodeType": "VariableDeclaration",
"src": "1302:42:161",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_addressProvider",
"nameLocation": "1328:16:161",
"scope": 71764,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
},
"typeName": {
"id": 71347,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 71346,
"name": "IAddressProvider",
"nameLocations": [
"1302:16:161"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 46447,
"src": "1302:16:161"
},
"referencedDeclaration": 46447,
"src": "1302:16:161",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
}
},
"visibility": "internal"
},
{
"id": 71350,
"nodeType": "VariableDeclaration",
"src": "1357:38:161",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_underlyingCollateral",
"nameLocation": "1374:21:161",
"scope": 71764,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 71349,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1357:7:161",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"id": 71352,
"nodeType": "VariableDeclaration",
"src": "1402:33:161",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_underlyingAsset",
"nameLocation": "1419:16:161",
"scope": 71764,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 71351,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1402:7:161",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"id": 71354,
"nodeType": "VariableDeclaration",
"src": "1442:38:161",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_underlyingMaxTokenId",
"nameLocation": "1459:21:161",
"scope": 71764,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71353,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1442:7:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"id": 71356,
"nodeType": "VariableDeclaration",
"src": "1487:38:161",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_underlyingMinTokenId",
"nameLocation": "1504:21:161",
"scope": 71764,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71355,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1487:7:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"id": 71364,
"nodeType": "FunctionDefinition",
"src": "1588:55:161",
"nodes": [],
"body": {
"id": 71363,
"nodeType": "Block",
"src": "1602:41:161",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 71360,
"name": "_disableInitializers",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26117,
"src": "1613:20:161",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
"typeString": "function ()"
}
},
"id": 71361,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1613:22:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 71362,
"nodeType": "ExpressionStatement",
"src": "1613:22:161"
}
]
},
"documentation": {
"id": 71357,
"nodeType": "StructuredDocumentation",
"src": "1534:48:161",
"text": "@custom:oz-upgrades-unsafe-allow constructor"
},
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nameLocation": "-1:-1:-1",
"parameters": {
"id": 71358,
"nodeType": "ParameterList",
"parameters": [],
"src": "1599:2:161"
},
"returnParameters": {
"id": 71359,
"nodeType": "ParameterList",
"parameters": [],
"src": "1602:0:161"
},
"scope": 71764,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"id": 71434,
"nodeType": "FunctionDefinition",
"src": "2332:1049:161",
"nodes": [],
"body": {
"id": 71433,
"nodeType": "Block",
"src": "2720:661:161",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"id": 71388,
"name": "debtTokenName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71379,
"src": "2756:13:161",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"id": 71389,
"name": "debtTokenSymbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71381,
"src": "2771:15:161",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"id": 71390,
"name": "debtTokenDecimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71377,
"src": "2788:17:161",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 71387,
"name": "__IncentivizedERC20_init",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 72081,
"src": "2731:24:161",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$__$",
"typeString": "function (string memory,string memory,uint8)"
}
},
"id": 71391,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2731:75:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 71392,
"nodeType": "ExpressionStatement",
"src": "2731:75:161"
},
{
"expression": {
"id": 71397,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 71393,
"name": "_addressProvider",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71348,
"src": "2819:16:161",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 71395,
"name": "addressProvider",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71367,
"src": "2855:15:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 71394,
"name": "IAddressProvider",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 46447,
"src": "2838:16:161",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IAddressProvider_$46447_$",
"typeString": "type(contract IAddressProvider)"
}
},
"id": 71396,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2838:33:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
}
},
"src": "2819:52:161",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
}
},
"id": 71398,
"nodeType": "ExpressionStatement",
"src": "2819:52:161"
},
{
"expression": {
"id": 71401,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 71399,
"name": "_underlyingCollateral",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71350,
"src": "2884:21:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 71400,
"name": "underlyingCollateral",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71369,
"src": "2908:20:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2884:44:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 71402,
"nodeType": "ExpressionStatement",
"src": "2884:44:161"
},
{
"expression": {
"id": 71405,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 71403,
"name": "_underlyingAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71352,
"src": "2939:16:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 71404,
"name": "underlyingAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71371,
"src": "2958:15:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2939:34:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 71406,
"nodeType": "ExpressionStatement",
"src": "2939:34:161"
},
{
"expression": {
"id": 71409,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 71407,
"name": "_underlyingMaxTokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71354,
"src": "2984:21:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 71408,
"name": "underlyingMaxTokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71373,
"src": "3008:20:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2984:44:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 71410,
"nodeType": "ExpressionStatement",
"src": "2984:44:161"
},
{
"expression": {
"id": 71413,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 71411,
"name": "_underlyingMinTokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71356,
"src": "3039:21:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 71412,
"name": "underlyingMinTokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71375,
"src": "3063:20:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3039:44:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 71414,
"nodeType": "ExpressionStatement",
"src": "3039:44:161"
},
{
"eventCall": {
"arguments": [
{
"id": 71416,
"name": "underlyingCollateral",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71369,
"src": "3127:20:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 71417,
"name": "underlyingAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71371,
"src": "3162:15:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 71420,
"name": "_getLendingPool",
"nodeType": "Identifier",
"overloadedDeclarations": [
71763
],
"referencedDeclaration": 71763,
"src": "3200:15:161",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_ILendingPool_$48084_$",
"typeString": "function () view returns (contract ILendingPool)"
}
},
"id": 71421,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3200:17:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
],
"id": 71419,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3192:7:161",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 71418,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3192:7:161",
"typeDescriptions": {}
}
},
"id": 71422,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3192:26:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 71425,
"name": "_getPoolIncentivesController",
"nodeType": "Identifier",
"overloadedDeclarations": [
71740
],
"referencedDeclaration": 71740,
"src": "3241:28:161",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IPoolIncentivesController_$48421_$",
"typeString": "function () view returns (contract IPoolIncentivesController)"
}
},
"id": 71426,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3241:30:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
}
],
"id": 71424,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3233:7:161",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 71423,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3233:7:161",
"typeDescriptions": {}
}
},
"id": 71427,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3233:39:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 71428,
"name": "debtTokenDecimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71377,
"src": "3287:17:161",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"id": 71429,
"name": "debtTokenName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71379,
"src": "3319:13:161",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"id": 71430,
"name": "debtTokenSymbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71381,
"src": "3347:15:161",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 71415,
"name": "Initialized",
"nodeType": "Identifier",
"overloadedDeclarations": [
48742,
25982
],
"referencedDeclaration": 48742,
"src": "3101:11:161",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint8_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (address,address,address,address,uint8,string memory,string memory)"
}
},
"id": 71431,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3101:272:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 71432,
"nodeType": "EmitStatement",
"src": "3096:277:161"
}
]
},
"baseFunctions": [
48779
],
"documentation": {
"id": 71365,
"nodeType": "StructuredDocumentation",
"src": "1651:675:161",
"text": " @dev Initializes the debt token.\n @param addressProvider The address provider \n @param underlyingCollateral The address of the underlying collateral of this debtToken\n @param underlyingAsset The address of the underlying asset of this debtToken\n @param underlyingMaxTokenId The max tokenId of the underlying collateral of this debtToken\n @param underlyingMinTokenId The min tokenId of the underlying collateral of this debtToken\n @param debtTokenDecimals The decimals of the debtToken, same as the underlying asset's\n @param debtTokenName The name of the token\n @param debtTokenSymbol The symbol of the token"
},
"functionSelector": "1e5fa51f",
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 71385,
"kind": "modifierInvocation",
"modifierName": {
"id": 71384,
"name": "initializer",
"nameLocations": [
"2702:11:161"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 26038,
"src": "2702:11:161"
},
"nodeType": "ModifierInvocation",
"src": "2702:11:161"
}
],
"name": "initialize",
"nameLocation": "2341:10:161",
"overrides": {
"id": 71383,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2683:8:161"
},
"parameters": {
"id": 71382,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71367,
"mutability": "mutable",
"name": "addressProvider",
"nameLocation": "2370:15:161",
"nodeType": "VariableDeclaration",
"scope": 71434,
"src": "2362:23:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 71366,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2362:7:161",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 71369,
"mutability": "mutable",
"name": "underlyingCollateral",
"nameLocation": "2404:20:161",
"nodeType": "VariableDeclaration",
"scope": 71434,
"src": "2396:28:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 71368,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2396:7:161",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 71371,
"mutability": "mutable",
"name": "underlyingAsset",
"nameLocation": "2443:15:161",
"nodeType": "VariableDeclaration",
"scope": 71434,
"src": "2435:23:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 71370,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2435:7:161",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 71373,
"mutability": "mutable",
"name": "underlyingMaxTokenId",
"nameLocation": "2477:20:161",
"nodeType": "VariableDeclaration",
"scope": 71434,
"src": "2469:28:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71372,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2469:7:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 71375,
"mutability": "mutable",
"name": "underlyingMinTokenId",
"nameLocation": "2516:20:161",
"nodeType": "VariableDeclaration",
"scope": 71434,
"src": "2508:28:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71374,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2508:7:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 71377,
"mutability": "mutable",
"name": "debtTokenDecimals",
"nameLocation": "2553:17:161",
"nodeType": "VariableDeclaration",
"scope": 71434,
"src": "2547:23:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 71376,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "2547:5:161",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 71379,
"mutability": "mutable",
"name": "debtTokenName",
"nameLocation": "2595:13:161",
"nodeType": "VariableDeclaration",
"scope": 71434,
"src": "2581:27:161",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 71378,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2581:6:161",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 71381,
"mutability": "mutable",
"name": "debtTokenSymbol",
"nameLocation": "2633:15:161",
"nodeType": "VariableDeclaration",
"scope": 71434,
"src": "2619:29:161",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 71380,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2619:6:161",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "2351:304:161"
},
"returnParameters": {
"id": 71386,
"nodeType": "ParameterList",
"parameters": [],
"src": "2720:0:161"
},
"scope": 71764,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"id": 71515,
"nodeType": "FunctionDefinition",
"src": "3731:935:161",
"nodes": [],
"body": {
"id": 71514,
"nodeType": "Block",
"src": "3953:713:161",
"nodes": [],
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 71459,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 71453,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 71451,
"name": "initiator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71437,
"src": "3982:9:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"id": 71452,
"name": "onBehalfOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71439,
"src": "3995:10:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3982:23:161",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 71458,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 71454,
"name": "initiator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71437,
"src": "4022:9:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 71455,
"name": "_addressProvider",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71348,
"src": "4035:16:161",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
}
},
"id": 71456,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4052:14:161",
"memberName": "getWETHGateway",
"nodeType": "MemberAccess",
"referencedDeclaration": 46441,
"src": "4035:31:161",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
"typeString": "function () view external returns (address)"
}
},
"id": 71457,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4035:33:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "4022:46:161",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "3982:86:161",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 71467,
"nodeType": "IfStatement",
"src": "3964:198:161",
"trueBody": {
"id": 71466,
"nodeType": "Block",
"src": "4080:82:161",
"statements": [
{
"expression": {
"arguments": [
{
"id": 71461,
"name": "onBehalfOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71439,
"src": "4120:10:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 71462,
"name": "initiator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71437,
"src": "4132:9:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 71463,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71441,
"src": "4143:6:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 71460,
"name": "_decreaseBorrowAllowance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 72032,
"src": "4095:24:161",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 71464,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4095:55:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 71465,
"nodeType": "ExpressionStatement",
"src": "4095:55:161"
}
]
}
},
{
"assignments": [
71469
],
"declarations": [
{
"constant": false,
"id": 71469,
"mutability": "mutable",
"name": "previousBalance",
"nameLocation": "4180:15:161",
"nodeType": "VariableDeclaration",
"scope": 71514,
"src": "4172:23:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71468,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4172:7:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 71474,
"initialValue": {
"arguments": [
{
"id": 71472,
"name": "onBehalfOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71439,
"src": "4214:10:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 71470,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "4198:5:161",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_VariableDebtToken_$71764_$",
"typeString": "type(contract super VariableDebtToken)"
}
},
"id": 71471,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4204:9:161",
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 26618,
"src": "4198:15:161",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view returns (uint256)"
}
},
"id": 71473,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4198:27:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4172:53:161"
},
{
"assignments": [
71476
],
"declarations": [
{
"constant": false,
"id": 71476,
"mutability": "mutable",
"name": "amountScaled",
"nameLocation": "4366:12:161",
"nodeType": "VariableDeclaration",
"scope": 71514,
"src": "4358:20:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71475,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4358:7:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 71481,
"initialValue": {
"arguments": [
{
"id": 71479,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71443,
"src": "4395:5:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 71477,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71441,
"src": "4381:6:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 71478,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4388:6:161",
"memberName": "rayDiv",
"nodeType": "MemberAccess",
"referencedDeclaration": 64411,
"src": "4381:13:161",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 71480,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4381:20:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4358:43:161"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 71485,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 71483,
"name": "amountScaled",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71476,
"src": "4420:12:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"hexValue": "30",
"id": 71484,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4436:1:161",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "4420:17:161",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 71486,
"name": "Errors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 57944,
"src": "4439:6:161",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_Errors_$57944_$",
"typeString": "type(library Errors)"
}
},
"id": 71487,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "4446:22:161",
"memberName": "CT_INVALID_MINT_AMOUNT",
"nodeType": "MemberAccess",
"referencedDeclaration": 57769,
"src": "4439:29:161",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 71482,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "4412:7:161",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 71488,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4412:57:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 71489,
"nodeType": "ExpressionStatement",
"src": "4412:57:161"
},
{
"expression": {
"arguments": [
{
"id": 71491,
"name": "onBehalfOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71439,
"src": "4488:10:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 71492,
"name": "amountScaled",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71476,
"src": "4500:12:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 71490,
"name": "_mint",
"nodeType": "Identifier",
"overloadedDeclarations": [
72226
],
"referencedDeclaration": 72226,
"src": "4482:5:161",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 71493,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4482:31:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 71494,
"nodeType": "ExpressionStatement",
"src": "4482:31:161"
},
{
"eventCall": {
"arguments": [
{
"arguments": [
{
"hexValue": "30",
"id": 71498,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4548:1:161",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 71497,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "4540:7:161",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 71496,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4540:7:161",
"typeDescriptions": {}
}
},
"id": 71499,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4540:10:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 71500,
"name": "onBehalfOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71439,
"src": "4552:10:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 71501,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71441,
"src": "4564:6:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 71495,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27123,
"src": "4531:8:161",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 71502,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4531:40:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 71503,
"nodeType": "EmitStatement",
"src": "4526:45:161"
},
{
"eventCall": {
"arguments": [
{
"id": 71505,
"name": "onBehalfOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71439,
"src": "4592:10:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 71506,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71441,
"src": "4604:6:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 71507,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71443,
"src": "4612:5:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 71504,
"name": "Mint",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48751,
"src": "4587:4:161",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256,uint256)"
}
},
"id": 71508,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4587:31:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 71509,
"nodeType": "EmitStatement",
"src": "4582:36:161"
},
{
"expression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 71512,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 71510,
"name": "previousBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71469,
"src": "4638:15:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 71511,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4657:1:161",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "4638:20:161",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 71450,
"id": 71513,
"nodeType": "Return",
"src": "4631:27:161"
}
]
},
"baseFunctions": [
48792
],
"documentation": {
"id": 71435,
"nodeType": "StructuredDocumentation",
"src": "3389:336:161",
"text": " @dev Mints debt token to the `user` address\n - Only callable by the LendingPool\n @param initiator The address calling borrow\n @param amount The amount of debt being minted\n @param index The variable debt index of the reserve\n @return `true` if the the previous balance of the user is 0*"
},
"functionSelector": "b3f1c93d",
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 71447,
"kind": "modifierInvocation",
"modifierName": {
"id": 71446,
"name": "onlyLendingPool",
"nameLocations": [
"3906:15:161"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 71811,
"src": "3906:15:161"
},
"nodeType": "ModifierInvocation",
"src": "3906:15:161"
}
],
"name": "mint",
"nameLocation": "3740:4:161",
"overrides": {
"id": 71445,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "3887:8:161"
},
"parameters": {
"id": 71444,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71437,
"mutability": "mutable",
"name": "initiator",
"nameLocation": "3763:9:161",
"nodeType": "VariableDeclaration",
"scope": 71515,
"src": "3755:17:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 71436,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3755:7:161",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 71439,
"mutability": "mutable",
"name": "onBehalfOf",
"nameLocation": "3791:10:161",
"nodeType": "VariableDeclaration",
"scope": 71515,
"src": "3783:18:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 71438,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3783:7:161",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 71441,
"mutability": "mutable",
"name": "amount",
"nameLocation": "3820:6:161",
"nodeType": "VariableDeclaration",
"scope": 71515,
"src": "3812:14:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71440,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3812:7:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 71443,
"mutability": "mutable",
"name": "index",
"nameLocation": "3845:5:161",
"nodeType": "VariableDeclaration",
"scope": 71515,
"src": "3837:13:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71442,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3837:7:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "3744:113:161"
},
"returnParameters": {
"id": 71450,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71449,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71515,
"src": "3941:4:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 71448,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "3941:4:161",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "3940:6:161"
},
"scope": 71764,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 71568,
"nodeType": "FunctionDefinition",
"src": "4934:470:161",
"nodes": [],
"body": {
"id": 71567,
"nodeType": "Block",
"src": "5121:283:161",
"nodes": [],
"statements": [
{
"assignments": [
71531
],
"declarations": [
{
"constant": false,
"id": 71531,
"mutability": "mutable",
"name": "amountScaled",
"nameLocation": "5140:12:161",
"nodeType": "VariableDeclaration",
"scope": 71567,
"src": "5132:20:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71530,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5132:7:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 71536,
"initialValue": {
"arguments": [
{
"id": 71534,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71522,
"src": "5169:5:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 71532,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71520,
"src": "5155:6:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 71533,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5162:6:161",
"memberName": "rayDiv",
"nodeType": "MemberAccess",
"referencedDeclaration": 64411,
"src": "5155:13:161",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 71535,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5155:20:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5132:43:161"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 71540,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 71538,
"name": "amountScaled",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71531,
"src": "5194:12:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"hexValue": "30",
"id": 71539,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5210:1:161",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "5194:17:161",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 71541,
"name": "Errors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 57944,
"src": "5213:6:161",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_Errors_$57944_$",
"typeString": "type(library Errors)"
}
},
"id": 71542,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "5220:22:161",
"memberName": "CT_INVALID_BURN_AMOUNT",
"nodeType": "MemberAccess",
"referencedDeclaration": 57772,
"src": "5213:29:161",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 71537,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "5186:7:161",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 71543,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5186:57:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 71544,
"nodeType": "ExpressionStatement",
"src": "5186:57:161"
},
{
"expression": {
"arguments": [
{
"id": 71546,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71518,
"src": "5262:4:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 71547,
"name": "amountScaled",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71531,
"src": "5268:12:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 71545,
"name": "_burn",
"nodeType": "Identifier",
"overloadedDeclarations": [
72275
],
"referencedDeclaration": 72275,
"src": "5256:5:161",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 71548,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5256:25:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 71549,
"nodeType": "ExpressionStatement",
"src": "5256:25:161"
},
{
"eventCall": {
"arguments": [
{
"id": 71551,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71518,
"src": "5308:4:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"hexValue": "30",
"id": 71554,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5322:1:161",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 71553,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "5314:7:161",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 71552,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5314:7:161",
"typeDescriptions": {}
}
},
"id": 71555,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5314:10:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 71556,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71520,
"src": "5326:6:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 71550,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27123,
"src": "5299:8:161",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 71557,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5299:34:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 71558,
"nodeType": "EmitStatement",
"src": "5294:39:161"
},
{
"eventCall": {
"arguments": [
{
"id": 71560,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71518,
"src": "5354:4:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 71561,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71520,
"src": "5360:6:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 71562,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71522,
"src": "5368:5:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 71559,
"name": "Burn",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48760,
"src": "5349:4:161",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256,uint256)"
}
},
"id": 71563,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5349:25:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 71564,
"nodeType": "EmitStatement",
"src": "5344:30:161"
},
{
"expression": {
"hexValue": "74727565",
"id": 71565,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5392:4:161",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 71529,
"id": 71566,
"nodeType": "Return",
"src": "5385:11:161"
}
]
},
"baseFunctions": [
48803
],
"documentation": {
"id": 71516,
"nodeType": "StructuredDocumentation",
"src": "4674:254:161",
"text": " @dev Burns user variable debt\n - Only callable by the LendingPool\n @param user The user whose debt is getting burned\n @param amount The amount getting burned\n @param index The variable debt index of the reserve*"
},
"functionSelector": "f5298aca",
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 71526,
"kind": "modifierInvocation",
"modifierName": {
"id": 71525,
"name": "onlyLendingPool",
"nameLocations": [
"5075:15:161"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 71811,
"src": "5075:15:161"
},
"nodeType": "ModifierInvocation",
"src": "5075:15:161"
}
],
"name": "burn",
"nameLocation": "4943:4:161",
"overrides": {
"id": 71524,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "5056:8:161"
},
"parameters": {
"id": 71523,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71518,
"mutability": "mutable",
"name": "user",
"nameLocation": "4966:4:161",
"nodeType": "VariableDeclaration",
"scope": 71568,
"src": "4958:12:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 71517,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4958:7:161",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 71520,
"mutability": "mutable",
"name": "amount",
"nameLocation": "4989:6:161",
"nodeType": "VariableDeclaration",
"scope": 71568,
"src": "4981:14:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71519,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4981:7:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 71522,
"mutability": "mutable",
"name": "index",
"nameLocation": "5014:5:161",
"nodeType": "VariableDeclaration",
"scope": 71568,
"src": "5006:13:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71521,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5006:7:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "4947:79:161"
},
"returnParameters": {
"id": 71529,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71528,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71568,
"src": "5110:4:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 71527,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "5110:4:161",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "5109:6:161"
},
"scope": 71764,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 71614,
"nodeType": "FunctionDefinition",
"src": "5538:596:161",
"nodes": [],
"body": {
"id": 71613,
"nodeType": "Block",
"src": "5656:478:161",
"nodes": [],
"statements": [
{
"assignments": [
71580
],
"declarations": [
{
"constant": false,
"id": 71580,
"mutability": "mutable",
"name": "scaledBalance",
"nameLocation": "5675:13:161",
"nodeType": "VariableDeclaration",
"scope": 71613,
"src": "5667:21:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71579,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5667:7:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 71585,
"initialValue": {
"arguments": [
{
"id": 71583,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71571,
"src": "5707:4:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 71581,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "5691:5:161",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_VariableDebtToken_$71764_$",
"typeString": "type(contract super VariableDebtToken)"
}
},
"id": 71582,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5697:9:161",
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 26618,
"src": "5691:15:161",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view returns (uint256)"
}
},
"id": 71584,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5691:21:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5667:45:161"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 71588,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 71586,
"name": "scaledBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71580,
"src": "5729:13:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 71587,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5746:1:161",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "5729:18:161",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 71592,
"nodeType": "IfStatement",
"src": "5725:59:161",
"trueBody": {
"id": 71591,
"nodeType": "Block",
"src": "5749:35:161",
"statements": [
{
"expression": {
"hexValue": "30",
"id": 71589,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5771:1:161",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"functionReturnParameters": 71578,
"id": 71590,
"nodeType": "Return",
"src": "5764:8:161"
}
]
}
},
{
"assignments": [
71595
],
"declarations": [
{
"constant": false,
"id": 71595,
"mutability": "mutable",
"name": "pool",
"nameLocation": "5809:4:161",
"nodeType": "VariableDeclaration",
"scope": 71613,
"src": "5796:17:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
},
"typeName": {
"id": 71594,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 71593,
"name": "ILendingPool",
"nameLocations": [
"5796:12:161"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 48084,
"src": "5796:12:161"
},
"referencedDeclaration": 48084,
"src": "5796:12:161",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"visibility": "internal"
}
],
"id": 71598,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 71596,
"name": "_getLendingPool",
"nodeType": "Identifier",
"overloadedDeclarations": [
71763
],
"referencedDeclaration": 71763,
"src": "5816:15:161",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_ILendingPool_$48084_$",
"typeString": "function () view returns (contract ILendingPool)"
}
},
"id": 71597,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5816:17:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5796:37:161"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"id": 71605,
"name": "_underlyingCollateral",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71350,
"src": "5962:21:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 71606,
"name": "_underlyingAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71352,
"src": "6003:16:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 71607,
"name": "_underlyingMaxTokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71354,
"src": "6038:21:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 71608,
"name": "_underlyingMinTokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71356,
"src": "6078:21:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 71603,
"name": "pool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71595,
"src": "5926:4:161",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"id": 71604,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5931:12:161",
"memberName": "getReserveId",
"nodeType": "MemberAccess",
"referencedDeclaration": 48009,
"src": "5926:17:161",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (address,address,uint256,uint256) view external returns (uint256)"
}
},
"id": 71609,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5926:188:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 71601,
"name": "pool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71595,
"src": "5874:4:161",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"id": 71602,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5879:32:161",
"memberName": "getReserveNormalizedVariableDebt",
"nodeType": "MemberAccess",
"referencedDeclaration": 47988,
"src": "5874:37:161",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256) view external returns (uint256)"
}
},
"id": 71610,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5874:251:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 71599,
"name": "scaledBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71580,
"src": "5853:13:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 71600,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5867:6:161",
"memberName": "rayMul",
"nodeType": "MemberAccess",
"referencedDeclaration": 64384,
"src": "5853:20:161",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 71611,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5853:273:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 71578,
"id": 71612,
"nodeType": "Return",
"src": "5846:280:161"
}
]
},
"baseFunctions": [
26618,
27146
],
"documentation": {
"id": 71569,
"nodeType": "StructuredDocumentation",
"src": "5412:120:161",
"text": " @dev Calculates the accumulated debt balance of the user\n @return The debt balance of the user*"
},
"functionSelector": "70a08231",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "balanceOf",
"nameLocation": "5547:9:161",
"overrides": {
"id": 71575,
"nodeType": "OverrideSpecifier",
"overrides": [
{
"id": 71573,
"name": "ERC20Upgradeable",
"nameLocations": [
"5601:16:161"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 27111,
"src": "5601:16:161"
},
{
"id": 71574,
"name": "IERC20Upgradeable",
"nameLocations": [
"5619:17:161"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 27189,
"src": "5619:17:161"
}
],
"src": "5591:46:161"
},
"parameters": {
"id": 71572,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71571,
"mutability": "mutable",
"name": "user",
"nameLocation": "5565:4:161",
"nodeType": "VariableDeclaration",
"scope": 71614,
"src": "5557:12:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 71570,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5557:7:161",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "5556:14:161"
},
"returnParameters": {
"id": 71578,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71577,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71614,
"src": "5647:7:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71576,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5647:7:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "5646:9:161"
},
"scope": 71764,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 71629,
"nodeType": "FunctionDefinition",
"src": "6300:133:161",
"nodes": [],
"body": {
"id": 71628,
"nodeType": "Block",
"src": "6386:47:161",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"id": 71625,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71617,
"src": "6420:4:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 71623,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "6404:5:161",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_VariableDebtToken_$71764_$",
"typeString": "type(contract super VariableDebtToken)"
}
},
"id": 71624,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6410:9:161",
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 26618,
"src": "6404:15:161",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view returns (uint256)"
}
},
"id": 71626,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6404:21:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 71622,
"id": 71627,
"nodeType": "Return",
"src": "6397:28:161"
}
]
},
"baseFunctions": [
48542
],
"documentation": {
"id": 71615,
"nodeType": "StructuredDocumentation",
"src": "6142:152:161",
"text": " @dev Returns the principal debt balance of the user from\n @return The debt balance of the user since the last burn/mint action*"
},
"functionSelector": "1da24f3e",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "scaledBalanceOf",
"nameLocation": "6309:15:161",
"overrides": {
"id": 71619,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "6359:8:161"
},
"parameters": {
"id": 71618,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71617,
"mutability": "mutable",
"name": "user",
"nameLocation": "6333:4:161",
"nodeType": "VariableDeclaration",
"scope": 71629,
"src": "6325:12:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 71616,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6325:7:161",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "6324:14:161"
},
"returnParameters": {
"id": 71622,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71621,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71629,
"src": "6377:7:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71620,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6377:7:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "6376:9:161"
},
"scope": 71764,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 71661,
"nodeType": "FunctionDefinition",
"src": "6603:461:161",
"nodes": [],
"body": {
"id": 71660,
"nodeType": "Block",
"src": "6711:353:161",
"nodes": [],
"statements": [
{
"assignments": [
71640
],
"declarations": [
{
"constant": false,
"id": 71640,
"mutability": "mutable",
"name": "pool",
"nameLocation": "6735:4:161",
"nodeType": "VariableDeclaration",
"scope": 71660,
"src": "6722:17:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
},
"typeName": {
"id": 71639,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 71638,
"name": "ILendingPool",
"nameLocations": [
"6722:12:161"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 48084,
"src": "6722:12:161"
},
"referencedDeclaration": 48084,
"src": "6722:12:161",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"visibility": "internal"
}
],
"id": 71643,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 71641,
"name": "_getLendingPool",
"nodeType": "Identifier",
"overloadedDeclarations": [
71763
],
"referencedDeclaration": 71763,
"src": "6742:15:161",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_ILendingPool_$48084_$",
"typeString": "function () view returns (contract ILendingPool)"
}
},
"id": 71642,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6742:17:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "6722:37:161"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"id": 71652,
"name": "_underlyingCollateral",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71350,
"src": "6892:21:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 71653,
"name": "_underlyingAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71352,
"src": "6933:16:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 71654,
"name": "_underlyingMaxTokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71354,
"src": "6968:21:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 71655,
"name": "_underlyingMinTokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71356,
"src": "7008:21:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 71650,
"name": "pool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71640,
"src": "6856:4:161",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"id": 71651,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6861:12:161",
"memberName": "getReserveId",
"nodeType": "MemberAccess",
"referencedDeclaration": 48009,
"src": "6856:17:161",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (address,address,uint256,uint256) view external returns (uint256)"
}
},
"id": 71656,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6856:188:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 71648,
"name": "pool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71640,
"src": "6804:4:161",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"id": 71649,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6809:32:161",
"memberName": "getReserveNormalizedVariableDebt",
"nodeType": "MemberAccess",
"referencedDeclaration": 47988,
"src": "6804:37:161",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256) view external returns (uint256)"
}
},
"id": 71657,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6804:251:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 71644,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "6777:5:161",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_VariableDebtToken_$71764_$",
"typeString": "type(contract super VariableDebtToken)"
}
},
"id": 71645,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6783:11:161",
"memberName": "totalSupply",
"nodeType": "MemberAccess",
"referencedDeclaration": 26604,
"src": "6777:17:161",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 71646,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6777:19:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 71647,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6797:6:161",
"memberName": "rayMul",
"nodeType": "MemberAccess",
"referencedDeclaration": 64384,
"src": "6777:26:161",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 71658,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6777:279:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 71637,
"id": 71659,
"nodeType": "Return",
"src": "6770:286:161"
}
]
},
"baseFunctions": [
26604,
27138
],
"documentation": {
"id": 71630,
"nodeType": "StructuredDocumentation",
"src": "6441:156:161",
"text": " @dev Returns the total supply of the variable debt token. Represents the total debt accrued by the users\n @return The total supply*"
},
"functionSelector": "18160ddd",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "totalSupply",
"nameLocation": "6612:11:161",
"overrides": {
"id": 71634,
"nodeType": "OverrideSpecifier",
"overrides": [
{
"id": 71632,
"name": "ERC20Upgradeable",
"nameLocations": [
"6656:16:161"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 27111,
"src": "6656:16:161"
},
{
"id": 71633,
"name": "IERC20Upgradeable",
"nameLocations": [
"6674:17:161"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 27189,
"src": "6674:17:161"
}
],
"src": "6646:46:161"
},
"parameters": {
"id": 71631,
"nodeType": "ParameterList",
"parameters": [],
"src": "6623:2:161"
},
"returnParameters": {
"id": 71637,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71636,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71661,
"src": "6702:7:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71635,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6702:7:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "6701:9:161"
},
"scope": 71764,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 71673,
"nodeType": "FunctionDefinition",
"src": "7228:121:161",
"nodes": [],
"body": {
"id": 71672,
"nodeType": "Block",
"src": "7304:45:161",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 71668,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "7322:5:161",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_VariableDebtToken_$71764_$",
"typeString": "type(contract super VariableDebtToken)"
}
},
"id": 71669,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7328:11:161",
"memberName": "totalSupply",
"nodeType": "MemberAccess",
"referencedDeclaration": 26604,
"src": "7322:17:161",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 71670,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7322:19:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 71667,
"id": 71671,
"nodeType": "Return",
"src": "7315:26:161"
}
]
},
"baseFunctions": [
48814
],
"documentation": {
"id": 71662,
"nodeType": "StructuredDocumentation",
"src": "7072:150:161",
"text": " @dev Returns the scaled total supply of the variable debt token. Represents sum(debt/index)\n @return the scaled total supply*"
},
"functionSelector": "b1bf962d",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "scaledTotalSupply",
"nameLocation": "7237:17:161",
"overrides": {
"id": 71664,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "7277:8:161"
},
"parameters": {
"id": 71663,
"nodeType": "ParameterList",
"parameters": [],
"src": "7254:2:161"
},
"returnParameters": {
"id": 71667,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71666,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71673,
"src": "7295:7:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71665,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7295:7:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "7294:9:161"
},
"scope": 71764,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 71694,
"nodeType": "FunctionDefinition",
"src": "7591:173:161",
"nodes": [],
"body": {
"id": 71693,
"nodeType": "Block",
"src": "7694:70:161",
"nodes": [],
"statements": [
{
"expression": {
"components": [
{
"arguments": [
{
"id": 71686,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71676,
"src": "7729:4:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 71684,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "7713:5:161",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_VariableDebtToken_$71764_$",
"typeString": "type(contract super VariableDebtToken)"
}
},
"id": 71685,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7719:9:161",
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 26618,
"src": "7713:15:161",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view returns (uint256)"
}
},
"id": 71687,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7713:21:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 71688,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "7736:5:161",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_VariableDebtToken_$71764_$",
"typeString": "type(contract super VariableDebtToken)"
}
},
"id": 71689,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7742:11:161",
"memberName": "totalSupply",
"nodeType": "MemberAccess",
"referencedDeclaration": 26604,
"src": "7736:17:161",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 71690,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7736:19:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 71691,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "7712:44:161",
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
"typeString": "tuple(uint256,uint256)"
}
},
"functionReturnParameters": 71683,
"id": 71692,
"nodeType": "Return",
"src": "7705:51:161"
}
]
},
"baseFunctions": [
48552
],
"documentation": {
"id": 71674,
"nodeType": "StructuredDocumentation",
"src": "7357:228:161",
"text": " @dev Returns the principal balance of the user and principal total supply.\n @param user The address of the user\n @return The principal balance of the user\n @return The principal total supply*"
},
"functionSelector": "0afbcdc9",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getScaledUserBalanceAndSupply",
"nameLocation": "7600:29:161",
"overrides": {
"id": 71678,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "7658:8:161"
},
"parameters": {
"id": 71677,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71676,
"mutability": "mutable",
"name": "user",
"nameLocation": "7638:4:161",
"nodeType": "VariableDeclaration",
"scope": 71694,
"src": "7630:12:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 71675,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7630:7:161",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "7629:14:161"
},
"returnParameters": {
"id": 71683,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71680,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71694,
"src": "7676:7:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71679,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7676:7:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 71682,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71694,
"src": "7685:7:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 71681,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7685:7:161",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "7675:18:161"
},
"scope": 71764,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"id": 71703,
"nodeType": "FunctionDefinition",
"src": "7861:108:161",
"nodes": [],
"body": {
"id": 71702,
"nodeType": "Block",
"src": "7927:42:161",
"nodes": [],
"statements": [
{
"expression": {
"id": 71700,
"name": "_underlyingAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71352,
"src": "7945:16:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 71699,
"id": 71701,
"nodeType": "Return",
"src": "7938:23:161"
}
]
},
"documentation": {
"id": 71695,
"nodeType": "StructuredDocumentation",
"src": "7772:83:161",
"text": " @dev Returns the address of the underlying asset of this fToken*"
},
"functionSelector": "b16a19de",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "UNDERLYING_ASSET_ADDRESS",
"nameLocation": "7870:24:161",
"parameters": {
"id": 71696,
"nodeType": "ParameterList",
"parameters": [],
"src": "7894:2:161"
},
"returnParameters": {
"id": 71699,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71698,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71703,
"src": "7918:7:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 71697,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7918:7:161",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "7917:9:161"
},
"scope": 71764,
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"id": 71715,
"nodeType": "FunctionDefinition",
"src": "8065:154:161",
"nodes": [],
"body": {
"id": 71714,
"nodeType": "Block",
"src": "8163:56:161",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 71711,
"name": "_getPoolIncentivesController",
"nodeType": "Identifier",
"overloadedDeclarations": [
71740
],
"referencedDeclaration": 71740,
"src": "8181:28:161",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IPoolIncentivesController_$48421_$",
"typeString": "function () view returns (contract IPoolIncentivesController)"
}
},
"id": 71712,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8181:30:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
}
},
"functionReturnParameters": 71710,
"id": 71713,
"nodeType": "Return",
"src": "8174:37:161"
}
]
},
"baseFunctions": [
48809
],
"documentation": {
"id": 71704,
"nodeType": "StructuredDocumentation",
"src": "7977:82:161",
"text": " @dev Returns the address of the incentives controller contract*"
},
"functionSelector": "19ef9268",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getPoolIncentivesController",
"nameLocation": "8074:27:161",
"overrides": {
"id": 71706,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "8118:8:161"
},
"parameters": {
"id": 71705,
"nodeType": "ParameterList",
"parameters": [],
"src": "8101:2:161"
},
"returnParameters": {
"id": 71710,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71709,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71715,
"src": "8136:25:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
},
"typeName": {
"id": 71708,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 71707,
"name": "IPoolIncentivesController",
"nameLocations": [
"8136:25:161"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 48421,
"src": "8136:25:161"
},
"referencedDeclaration": 48421,
"src": "8136:25:161",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
}
},
"visibility": "internal"
}
],
"src": "8135:27:161"
},
"scope": 71764,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"id": 71726,
"nodeType": "FunctionDefinition",
"src": "8322:94:161",
"nodes": [],
"body": {
"id": 71725,
"nodeType": "Block",
"src": "8373:43:161",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 71722,
"name": "_getLendingPool",
"nodeType": "Identifier",
"overloadedDeclarations": [
71763
],
"referencedDeclaration": 71763,
"src": "8391:15:161",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_ILendingPool_$48084_$",
"typeString": "function () view returns (contract ILendingPool)"
}
},
"id": 71723,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8391:17:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"functionReturnParameters": 71721,
"id": 71724,
"nodeType": "Return",
"src": "8384:24:161"
}
]
},
"documentation": {
"id": 71716,
"nodeType": "StructuredDocumentation",
"src": "8227:89:161",
"text": " @dev Returns the address of the lending pool where this token is used*"
},
"functionSelector": "7535d246",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "POOL",
"nameLocation": "8331:4:161",
"parameters": {
"id": 71717,
"nodeType": "ParameterList",
"parameters": [],
"src": "8335:2:161"
},
"returnParameters": {
"id": 71721,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71720,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71726,
"src": "8359:12:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
},
"typeName": {
"id": 71719,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 71718,
"name": "ILendingPool",
"nameLocations": [
"8359:12:161"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 48084,
"src": "8359:12:161"
},
"referencedDeclaration": 48084,
"src": "8359:12:161",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"visibility": "internal"
}
],
"src": "8358:14:161"
},
"scope": 71764,
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"id": 71740,
"nodeType": "FunctionDefinition",
"src": "8424:198:161",
"nodes": [],
"body": {
"id": 71739,
"nodeType": "Block",
"src": "8523:99:161",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 71734,
"name": "_addressProvider",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71348,
"src": "8567:16:161",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
}
},
"id": 71735,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "8584:27:161",
"memberName": "getPoolIncentivesController",
"nodeType": "MemberAccess",
"referencedDeclaration": 46361,
"src": "8567:44:161",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
"typeString": "function () view external returns (address)"
}
},
"id": 71736,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8567:46:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 71733,
"name": "IPoolIncentivesController",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48421,
"src": "8541:25:161",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IPoolIncentivesController_$48421_$",
"typeString": "type(contract IPoolIncentivesController)"
}
},
"id": 71737,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8541:73:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
}
},
"functionReturnParameters": 71732,
"id": 71738,
"nodeType": "Return",
"src": "8534:80:161"
}
]
},
"baseFunctions": [
72100
],
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_getPoolIncentivesController",
"nameLocation": "8433:28:161",
"overrides": {
"id": 71728,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "8478:8:161"
},
"parameters": {
"id": 71727,
"nodeType": "ParameterList",
"parameters": [],
"src": "8461:2:161"
},
"returnParameters": {
"id": 71732,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71731,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71740,
"src": "8496:25:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
},
"typeName": {
"id": 71730,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 71729,
"name": "IPoolIncentivesController",
"nameLocations": [
"8496:25:161"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 48421,
"src": "8496:25:161"
},
"referencedDeclaration": 48421,
"src": "8496:25:161",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
}
},
"visibility": "internal"
}
],
"src": "8495:27:161"
},
"scope": 71764,
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
},
{
"id": 71749,
"nodeType": "FunctionDefinition",
"src": "8630:121:161",
"nodes": [],
"body": {
"id": 71748,
"nodeType": "Block",
"src": "8709:42:161",
"nodes": [],
"statements": [
{
"expression": {
"id": 71746,
"name": "_underlyingAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71352,
"src": "8727:16:161",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 71745,
"id": 71747,
"nodeType": "Return",
"src": "8720:23:161"
}
]
},
"baseFunctions": [
72038
],
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_getUnderlyingAssetAddress",
"nameLocation": "8639:26:161",
"overrides": {
"id": 71742,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "8682:8:161"
},
"parameters": {
"id": 71741,
"nodeType": "ParameterList",
"parameters": [],
"src": "8665:2:161"
},
"returnParameters": {
"id": 71745,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71744,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71749,
"src": "8700:7:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 71743,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8700:7:161",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "8699:9:161"
},
"scope": 71764,
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
},
{
"id": 71763,
"nodeType": "FunctionDefinition",
"src": "8759:146:161",
"nodes": [],
"body": {
"id": 71762,
"nodeType": "Block",
"src": "8832:73:161",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 71757,
"name": "_addressProvider",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 71348,
"src": "8863:16:161",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
}
},
"id": 71758,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "8880:14:161",
"memberName": "getLendingPool",
"nodeType": "MemberAccess",
"referencedDeclaration": 46256,
"src": "8863:31:161",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
"typeString": "function () view external returns (address)"
}
},
"id": 71759,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8863:33:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 71756,
"name": "ILendingPool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48084,
"src": "8850:12:161",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ILendingPool_$48084_$",
"typeString": "type(contract ILendingPool)"
}
},
"id": 71760,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8850:47:161",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"functionReturnParameters": 71755,
"id": 71761,
"nodeType": "Return",
"src": "8843:54:161"
}
]
},
"baseFunctions": [
72044
],
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_getLendingPool",
"nameLocation": "8768:15:161",
"overrides": {
"id": 71751,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "8800:8:161"
},
"parameters": {
"id": 71750,
"nodeType": "ParameterList",
"parameters": [],
"src": "8783:2:161"
},
"returnParameters": {
"id": 71755,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71754,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 71763,
"src": "8818:12:161",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
},
"typeName": {
"id": 71753,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 71752,
"name": "ILendingPool",
"nameLocations": [
"8818:12:161"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 48084,
"src": "8818:12:161"
},
"referencedDeclaration": 48084,
"src": "8818:12:161",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"visibility": "internal"
}
],
"src": "8817:14:161"
},
"scope": 71764,
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
}
],
"abstract": false,
"baseContracts": [
{
"baseName": {
"id": 71339,
"name": "IVariableDebtToken",
"nameLocations": [
"1224:18:161"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 48815,
"src": "1224:18:161"
},
"id": 71340,
"nodeType": "InheritanceSpecifier",
"src": "1224:18:161"
},
{
"baseName": {
"id": 71341,
"name": "DebtTokenBase",
"nameLocations": [
"1244:13:161"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 72045,
"src": "1244:13:161"
},
"id": 71342,
"nodeType": "InheritanceSpecifier",
"src": "1244:13:161"
}
],
"canonicalName": "VariableDebtToken",
"contractDependencies": [],
"contractKind": "contract",
"documentation": {
"id": 71338,
"nodeType": "StructuredDocumentation",
"src": "947:247:161",
"text": "@title VariableDebtToken\n @author FluidNFT\n @notice Allows for the tracking of debt for the purposes of APY calculations\n at a variable rate mode.\n @dev Debt tokens are non-transferable and so diverge from the ERC20 standard."
},
"fullyImplemented": true,
"linearizedBaseContracts": [
71764,
72045,
47120,
72276,
27111,
48815,
27214,
27189,
28988,
26136,
48559
],
"name": "VariableDebtToken",
"nameLocation": "1203:17:161",
"scope": 71765,
"usedErrors": []
}
],
"license": "AGPL-3.0"
},
"id": 161
}
Last updated