F Tokens
fTokens are yield-generating tokens that are minted and burned upon deposit
and withdraw
. The fTokens' value is pegged to the value of the corresponding deposited asset at a 1:1 ratio, and can be safely stored, transferred or traded. All interest collected by the fTokens reserves are distributed to fTokens holders directly by continuously increasing their wallet balance.
For all minting and burning actions, see Deposit()
and Withdraw()
methods in the LendingPool
contract.
EIP20 Methods
All standard EIP20 methods are implemented, such as balanceOf()
, transfer()
, transferFrom()
, approve()
, totalSupply()
, etc.
balanceOf()
will always return the most up to date balance of the user, which includes their principal balance + the interest generated by the principal balance.
EIP2612 Methods
permit()
function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
Allows a user to permit another account (or contract) to use their funds using a signed message. This enables gas-less transactions and single approval/transfer transactions.
owner
address
The owner of the funds
spender
address
The spender for the funds
value
uint256
The amount the spender
is permitted to use
deadline
uint256
The deadline timestamp that the permit is valid. Use type(uint).max
for no deadline.
v
uint8
Signature parameter
r
bytes32
Signature parameter
s
bytes32
Signature parameter
import { signTypedData_v4 } from 'eth-sig-util'
import { fromRpcSig } from 'ethereumjs-util'
// ... other imports
import fTokenAbi from "./fTokenAbi.json"
// ... setup your web3 provider
const fTokenAddress = "FTOKEN_ADDRESS"
const fTokenContract = new web3.eth.Contract(fTokenAbi, fTokenAddress)
const privateKey = "YOUR_PRIVATE_KEY_WITHOUT_0x"
const chainId = 1
const owner = "OWNER_ADDRESS"
const spender = "SPENDER_ADDRESS"
const value = 100 // Amount the spender is permitted
const nonce = 1 // The next valid nonce, use `_nonces()`
const deadline = 1600093162
const permitParams = {
types: {
EIP712Domain: [
{ name: "name", type: "string" },
{ name: "version", type: "string" },
{ name: "chainId", type: "uint256" },
{ name: "verifyingContract", type: "address" },
],
Permit: [
{ name: "owner", type: "address" },
{ name: "spender", type: "address" },
{ name: "value", type: "uint256" },
{ name: "nonce", type: "uint256" },
{ name: "deadline", type: "uint256" },
],
},
primaryType: "Permit",
domain: {
name: "fTOKEN_NAME",
version: "1",
chainId: chainId,
verifyingContract: fTokenAddress,
},
message: {
owner,
spender,
value,
nonce,
deadline,
},
}
const signature = signTypedData_v4(
Buffer.from(privateKey, "hex"),
{ data: permitParams }
)
// The signature can now be used to execute the transaction
const { v, r, s } = fromRpcSig(signature)
await fTokenContract.methods
.permit({
owner,
spender,
value,
deadline,
v,
r,
s
})
.send()
.catch((e) => {
throw Error(`Error permitting: ${e.message}`)
})
_nonces()
function _nonces(address owner) public
Returns the next valid nonce to submit when calling permit()
Methods
UNDERLYING_ASSET_ADDRESS()
function UNDERLYING_ASSET_ADDRESS()
Returns the underlying asset of the fToken.
RESERVE_TREASURY_ADDRESS()
function RESERVE_TREASURY_ADDRESS()
Returns the address of the fTokens reserve treasury.
POOL()
function POOL()
Returns the address of the associated LendingPool
for the fToken.
scaledBalanceOf()
function scaledBalanceOf(address user)
Returns the scaled balance of user
as a uint256
.
The scaled balance is the balance of the underlying asset of the user (amount deposited), divided by the current liquidity index at the moment of the update.
I.e. scaledBalance=amountDeposited/currentLiquidityIndex
This essentially 'marks' when a user has deposited in the reserve pool, and can be used to calculate the users current compounded fToken balance.
Example:
User A deposits 100 ETH at the liquidity index of 1.1
User B deposits another amount into the same pool
The liquidity index is now 1.2.
Therefore to calculate User A's current compounded fToken balance, the reverse operation should be performed: fTokenBalance=scaledBalance∗currentLiquidityIndex
getScaledUserBalanceAndSupply()
function getScaledUserBalanceAndSupply(address user)
Returns the scaled balance of user
and the principal total supply.
Return values
uint256
scaled balance of user
uint256
principal total supply
scaledTotalSupply()
function scaledTotalSupply()
Returns the scaled total supply of the fToken as uint256
.
The scaled total supply is the sum of all the updated stored balances, divided by the reserve index at the moment of the update.
function isTransferAllowed(address user, uint256 amount)
Returns true
if a transfer is allowed.
Specifically, a transfer will fail if the resulting Health Factor of user
will end up being below 1.
FToken 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": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"name": "BalanceTransfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "target",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"name": "Burn",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "creatorAddress",
"type": "uint256"
}
],
"name": "CreatorAddressUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "creatorPercentage",
"type": "uint256"
}
],
"name": "CreatorPecentageUpdated",
"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": "lendingPool",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "incentivesController",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "treasury",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "creator",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "creatorPercentage",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "auctionCallerPercentage",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "auctionCreatorPercentage",
"type": "uint256"
}
],
"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": "RESERVE_TREASURY_ADDRESS",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UNDERLYING_ASSET_ADDRESS",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UNDERLYING_COLLATERAL_ADDRESS",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UNDERLYING_MAX_TOKEN_ID",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UNDERLYING_MIN_TOKEN_ID",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"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": "user",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "address",
"name": "receiverOfUnderlying",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "index",
"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": "exchangeRate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getAuctionCallerPercentage",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getAuctionCreatorPercentage",
"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": "getReserveCreatorAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getReserveCreatorPercentage",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getReserveNormalizationFactor",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"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": "contract IAddressProvider",
"name": "addressProvider",
"type": "address"
},
{
"components": [
{
"internalType": "address",
"name": "underlyingCollateral",
"type": "address"
},
{
"internalType": "string",
"name": "underlyingCollateralName",
"type": "string"
},
{
"internalType": "string",
"name": "underlyingCollateralSymbol",
"type": "string"
},
{
"internalType": "uint256",
"name": "underlyingMaxTokenId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "underlyingMinTokenId",
"type": "uint256"
},
{
"internalType": "address",
"name": "underlyingAsset",
"type": "address"
},
{
"internalType": "string",
"name": "underlyingAssetName",
"type": "string"
},
{
"internalType": "string",
"name": "underlyingAssetSymbol",
"type": "string"
},
{
"internalType": "uint8",
"name": "underlyingAssetDecimals",
"type": "uint8"
},
{
"internalType": "address",
"name": "fTokenImpl",
"type": "address"
},
{
"internalType": "string",
"name": "fTokenName",
"type": "string"
},
{
"internalType": "string",
"name": "fTokenSymbol",
"type": "string"
},
{
"internalType": "address",
"name": "stableDebtTokenImpl",
"type": "address"
},
{
"internalType": "string",
"name": "stableDebtTokenName",
"type": "string"
},
{
"internalType": "string",
"name": "stableDebtTokenSymbol",
"type": "string"
},
{
"internalType": "address",
"name": "variableDebtTokenImpl",
"type": "address"
},
{
"internalType": "string",
"name": "variableDebtTokenName",
"type": "string"
},
{
"internalType": "string",
"name": "variableDebtTokenSymbol",
"type": "string"
},
{
"internalType": "address",
"name": "interestRateStrategy",
"type": "address"
},
{
"internalType": "uint256",
"name": "baseLTV",
"type": "uint256"
},
{
"internalType": "address",
"name": "treasury",
"type": "address"
},
{
"internalType": "address",
"name": "creator",
"type": "address"
},
{
"internalType": "uint256",
"name": "creatorPercentage",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "auctionCallerPercentage",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "auctionCreatorPercentage",
"type": "uint256"
},
{
"internalType": "string",
"name": "assetPriceFeed",
"type": "string"
}
],
"internalType": "struct ConfigTypes.InitReserveInput",
"name": "input",
"type": "tuple"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"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": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "liquidationFee",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"name": "mintAuctionPaymentToStakeholders",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"name": "mintStableDebtRepaymentToStakeholders",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"name": "mintVariableDebtRepaymentToStakeholders",
"outputs": [],
"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": [
{
"internalType": "uint256",
"name": "auctionCallerPercentage",
"type": "uint256"
}
],
"name": "setAuctionCallerPercentage",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "auctionCreatorPercentage",
"type": "uint256"
}
],
"name": "setAuctionCreatorPercentage",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "creator",
"type": "address"
}
],
"name": "setReserveCreatorAddress",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "creatorPercentage",
"type": "uint256"
}
],
"name": "setReserveCreatorPercentage",
"outputs": [],
"stateMutability": "nonpayable",
"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": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferUnderlyingTo",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": {
"object": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b612c6680620000f46000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c806357f1b83711610130578063acac18e4116100b8578063c35be0171161007c578063c35be01714610486578063d7020d0a1461048e578063dd62ed3e146104a1578063e8f7a1a5146104b4578063f9e2bf6b146104c757600080fd5b8063acac18e414610436578063ae16733514610449578063b16a19de1461045a578063b1bf962d1461046b578063bc1d19dd1461047357600080fd5b80637535d246116100ff5780637535d246146103ed5780637ccd3b46146103f557806395d89b4114610408578063a457c2d714610410578063a9059cbb1461042357600080fd5b806357f1b837146103a3578063679d0095146103b45780636b8465f8146103c757806370a08231146103da57600080fd5b80631da24f3e116101be57806336a722341161018257806336a722341461035c57806339509351146103645780633ba0b9a91461037757806347bec6f01461037f5780634efecaa51461039057600080fd5b80631da24f3e1461030657806323b872dd146103195780632d6aa1281461032c57806330c1e38b14610334578063313ce5671461034757600080fd5b806314ff75c91161020557806314ff75c9146102ae578063156e29f6146102b657806318160ddd146102c957806319ef9268146102d15780631d165564146102f157600080fd5b8063046016081461023757806306fdde031461024e578063095ea7b3146102635780630afbcdc914610286575b600080fd5b606a545b6040519081526020015b60405180910390f35b6102566104cf565b6040516102459190612654565b61027661027136600461269f565b610561565b6040519015158152602001610245565b6102996102943660046126cb565b61057b565b60408051928352602083019190915201610245565b606e5461023b565b6102766102c43660046126e8565b610593565b61023b610690565b6102d96107b3565b6040516001600160a01b039091168152602001610245565b6103046102ff36600461271d565b6107c2565b005b61023b6103143660046126cb565b610bcc565b610276610327366004612775565b610bd7565b606c5461023b565b6103046103423660046127b6565b610bfb565b60655460405160ff9091168152602001610245565b61023b610c68565b61027661037236600461269f565b610d66565b61023b610d88565b6066546001600160a01b03166102d9565b61023b61039e36600461269f565b610e92565b6068546001600160a01b03166102d9565b6103046103c23660046126e8565b610f08565b6103046103d536600461281b565b610f6f565b61023b6103e83660046126cb565b610fcb565b6102d96110dd565b61030461040336600461281b565b6110e7565b610256611143565b61027661041e36600461269f565b611152565b61027661043136600461269f565b6111cd565b61030461044436600461281b565b6111db565b6067546001600160a01b03166102d9565b6069546001600160a01b03166102d9565b61023b611237565b6103046104813660046126cb565b611242565b606b5461023b565b61030461049c366004612834565b6112bb565b61023b6104af36600461287a565b6113d8565b6103046104c23660046128a8565b611403565b606d5461023b565b6060603680546104de906128ca565b80601f016020809104026020016040519081016040528092919081815260200182805461050a906128ca565b80156105575780601f1061052c57610100808354040283529160200191610557565b820191906000526020600020905b81548152906001019060200180831161053a57829003601f168201915b5050505050905090565b60003361056f81858561146f565b60019150505b92915050565b60008061058783611593565b60355491509150915091565b600061059d6115ae565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b815250906105f45760405162461bcd60e51b81526004016105eb9190612654565b60405180910390fd5b50600061060085611593565b9050600061060e8585611627565b60408051808201909152600381526235303160e81b6020820152909150816106495760405162461bcd60e51b81526004016105eb9190612654565b506106548682611661565b60408051868152602081018690526001600160a01b03881691600080516020612bf1833981519152910160405180910390a25015949350505050565b60008061069b6115ae565b905060006106a860355490565b9050806000036106bb5760009250505090565b606854606954606a54606b546040516352120e2360e01b81526107ac946001600160a01b038881169563dcc5cded9587956352120e239561070595851694909316926004016128fe565b602060405180830381865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107469190612927565b6040518263ffffffff1660e01b815260040161076491815260200190565b602060405180830381865afa158015610781573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a59190612927565b8290611717565b9250505090565b60006107bd611753565b905090565b600054610100900460ff16158080156107e25750600054600160ff909116105b806107fc5750303b1580156107fc575060005460ff166001145b61085f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105eb565b6000805460ff191660011790558015610882576000805461ff0019166101001790555b610922610893610140840184612940565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506108d692505050610160850185612940565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061091d925050506101208601610100870161298e565b6117a8565b6109346102a0830161028084016126cb565b606780546001600160a01b0319166001600160a01b03929092169190911790556109666102c083016102a084016126cb565b606680546001600160a01b0319166001600160a01b03929092169190911790556102c0820135606c556102e0820135606d55610300820135606e556109b160c0830160a084016126cb565b606980546001600160a01b0319166001600160a01b03929092169190911790556109de60208301836126cb565b606880546001600160a01b0319166001600160a01b039283161790556060830135606a556080830135606b5560658054610100600160a81b0319166101008684168102919091179182905560408051630261bf8b60e01b815290519190920490921691630261bf8b916004808201926020929091908290030181865afa158015610a6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9091906129b1565b6069546068546065546040805163033df24d60e31b815290516001600160a01b039586169594851694938416937f4b3932defc851859c0883ec898429ef20ab50bf24355077458d5b5c266d8087593610100900416916319ef92689160048083019260209291908290030181865afa158015610b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3491906129b1565b606754606654606c54606d54606e54604080516001600160a01b039788168152958716602087015295909316848601526060840191909152608083015260a082015290519081900360c00190a48015610bc7576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b600061057582611593565b600033610be58582856117ca565b610bf085858561183e565b506001949350505050565b610c036115ae565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b81525090610c515760405162461bcd60e51b81526004016105eb9190612654565b50610c6086868686868661184b565b505050505050565b600080610c736115ae565b606854606954606a54606b546040516352120e2360e01b81529495506001600160a01b038087169563dcc5cded9587956352120e2395610cc09592851694909116929091906004016128fe565b602060405180830381865afa158015610cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d019190612927565b6040518263ffffffff1660e01b8152600401610d1f91815260200190565b602060405180830381865afa158015610d3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d609190612927565b91505090565b60003361056f818585610d7983836113d8565b610d8391906129e4565b61146f565b600080610d936115ae565b606854606954606a54606b546040516352120e2360e01b81529495506000946001600160a01b03808816956352120e2395610dda95918316949216929091906004016128fe565b602060405180830381865afa158015610df7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1b9190612927565b60405163dcc5cded60e01b8152600481018290529091506000906001600160a01b0384169063dcc5cded90602401602060405180830381865afa158015610e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8a9190612927565b949350505050565b6000610e9c6115ae565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b81525090610eea5760405162461bcd60e51b81526004016105eb9190612654565b50606954610f02906001600160a01b03168484611ac0565b50919050565b610f106115ae565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b81525090610f5e5760405162461bcd60e51b81526004016105eb9190612654565b50610bc7836000808560008661184b565b610f776115ae565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b81525090610fc55760405162461bcd60e51b81526004016105eb9190612654565b50606e55565b600080610fd66115ae565b606854606954606a54606b546040516352120e2360e01b81529495506110d6946001600160a01b038088169563dcc5cded9587956352120e23956110279593851694909216929091906004016128fe565b602060405180830381865afa158015611044573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110689190612927565b6040518263ffffffff1660e01b815260040161108691815260200190565b602060405180830381865afa1580156110a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c79190612927565b6110d085611593565b90611717565b9392505050565b60006107bd6115ae565b6110ef6115ae565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b8152509061113d5760405162461bcd60e51b81526004016105eb9190612654565b50606d55565b6060603780546104de906128ca565b6000338161116082866113d8565b9050838110156111c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105eb565b610bf0828686840361146f565b60003361056f81858561183e565b6111e36115ae565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b815250906112315760405162461bcd60e51b81526004016105eb9190612654565b50606c55565b60006107bd60355490565b61124a6115ae565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b815250906112985760405162461bcd60e51b81526004016105eb9190612654565b50606680546001600160a01b0319166001600160a01b0392909216919091179055565b6112c36115ae565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b815250906113115760405162461bcd60e51b81526004016105eb9190612654565b50600061131e8383611627565b6040805180820190915260038152621a981960e91b6020820152909150816113595760405162461bcd60e51b81526004016105eb9190612654565b506113648582611b12565b60695461137b906001600160a01b03168585611ac0565b836001600160a01b0316856001600160a01b03167f5d624aa9c148153ab3446c1b154f660ee7701e549fe9b62dab7171b1c80e6fa285856040516113c9929190918252602082015260400190565b60405180910390a35050505050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b61140b6115ae565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b815250906114595760405162461bcd60e51b81526004016105eb9190612654565b5061146b60008060008560008661184b565b5050565b6001600160a01b0383166114d15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105eb565b6001600160a01b0382166115325760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105eb565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b031660009081526033602052604090205490565b6000606560019054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611603573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bd91906129b1565b6000806116356002846129f7565b9050610e8a8361165b611654876b033b2e3c9fd0803ce8000000611b36565b8490611b42565b90611b4e565b600061166c60355490565b9050600061167984611593565b90506116858484611b5a565b600061168f611753565b6001600160a01b031614611711576116a5611753565b6040516318c39f1760e11b81526001600160a01b038681166004830152602482018590526044820184905291909116906331873e2e90606401600060405180830381600087803b1580156116f857600080fd5b505af115801561170c573d6000803e3d6000fd5b505050505b50505050565b60006110d66b033b2e3c9fd0803ce800000061165b6117368686611b36565b61174d60026b033b2e3c9fd0803ce80000006129f7565b90611b42565b6000606560019054906101000a90046001600160a01b03166001600160a01b03166319ef92686040518163ffffffff1660e01b8152600401602060405180830381865afa158015611603573d6000803e3d6000fd5b6117b28383611c09565b6065805460ff191660ff929092169190911790555050565b60006117d684846113d8565b9050600019811461171157818110156118315760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105eb565b611711848484840361146f565b610bc78383836001611c3a565b82158015611857575081155b610c60576066546067546001600160a01b039182169190811690600090819081908a166118915761188788611e58565b90925090506118a2565b61189a87611e86565b919450925090505b6118b5846118b08389611627565b611661565b6118c3856118b08489611627565b836001600160a01b03168b6001600160a01b0316600080516020612c11833981519152836040516118f691815260200190565b60405180910390a3846001600160a01b03168b6001600160a01b0316600080516020612c118339815191528460405161193191815260200190565b60405180910390a360408051828152602081018890526001600160a01b03861691600080516020612bf1833981519152910160405180910390a260408051838152602081018890526001600160a01b03871691600080516020612bf1833981519152910160405180910390a26001600160a01b038a1615611a28576119ba8a6118b08589611627565b896001600160a01b03168b6001600160a01b0316600080516020612c11833981519152856040516119ed91815260200190565b60405180910390a360408051848152602081018890526001600160a01b038c1691600080516020612bf1833981519152910160405180910390a25b6001600160a01b03891615611ab357611a45896118b08a89611627565b886001600160a01b03168b6001600160a01b0316600080516020612c118339815191528a604051611a7891815260200190565b60405180910390a360408051898152602081018890526001600160a01b038b1691600080516020612bf1833981519152910160405180910390a25b5050505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610bc7908490611ee1565b6000611b1d60355490565b90506000611b2a84611593565b90506116858484611fb3565b60006110d68284612a19565b60006110d682846129e4565b60006110d682846129f7565b6001600160a01b038216611bb05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105eb565b8060356000828254611bc291906129e4565b90915550506001600160a01b038216600081815260336020908152604080832080548601905551848152600080516020612c11833981519152910160405180910390a35050565b600054610100900460ff16611c305760405162461bcd60e51b81526004016105eb90612a38565b61146b82826120d5565b6000611c446115ae565b606854606954606a54606b546040516352120e2360e01b81529495506000946001600160a01b03808816956352120e2395611c8b95918316949216929091906004016128fe565b602060405180830381865afa158015611ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ccc9190612927565b60405163dcc5cded60e01b8152600481018290529091506000906001600160a01b0384169063dcc5cded90602401602060405180830381865afa158015611d17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3b9190612927565b90506000611d4c826110d08a611593565b90506000611d5d836110d08a611593565b9050611d738989611d6e8a87611627565b612115565b8515611df757604051636c130dc760e01b8152600481018590526001600160a01b038a811660248301528981166044830152606482018990526084820184905260a48201839052861690636c130dc79060c40160006040518083038186803b158015611dde57600080fd5b505afa158015611df2573d6000803e3d6000fd5b505050505b876001600160a01b0316896001600160a01b03167f4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda86668986604051611e45929190918252602082015260400190565b60405180910390a3505050505050505050565b606c54600090819081611e6b8583612267565b90506000611e798287612a83565b9196919550909350505050565b600080600080611ea1606d548661226790919063ffffffff16565b90506000611eba606e548761226790919063ffffffff16565b9050600081611ec98489612a83565b611ed39190612a83565b929791965091945092505050565b6000611f36826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661230f9092919063ffffffff16565b805190915015610bc75780806020019051810190611f549190612a96565b610bc75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105eb565b6001600160a01b0382166120135760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105eb565b6001600160a01b038216600090815260336020526040902054818110156120875760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105eb565b6001600160a01b0383166000818152603360209081526040808320868603905560358054879003905551858152919291600080516020612c11833981519152910160405180910390a3505050565b600054610100900460ff166120fc5760405162461bcd60e51b81526004016105eb90612a38565b60366121088382612b14565b506037610bc78282612b14565b600061212084611593565b9050600061212d84611593565b905061213a85858561231e565b6000612144611753565b6001600160a01b03161461226057600061215d60355490565b9050612167611753565b6040516318c39f1760e11b81526001600160a01b038881166004830152602482018490526044820186905291909116906331873e2e90606401600060405180830381600087803b1580156121ba57600080fd5b505af11580156121ce573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b031614610c60576121f3611753565b6040516318c39f1760e11b81526001600160a01b038781166004830152602482018490526044820185905291909116906331873e2e90606401600060405180830381600087803b15801561224657600080fd5b505af115801561225a573d6000803e3d6000fd5b50505050505b5050505050565b6000821580612274575081155b1561228157506000610575565b8161228f60026127106129f7565b61229b90600019612a83565b6122a591906129f7565b8311156040518060400160405280600381526020016203230360ec1b815250906122e25760405162461bcd60e51b81526004016105eb9190612654565b506127106122f16002826129f7565b6122fb8486612a19565b61230591906129e4565b6110d691906129f7565b6060610e8a84846000856124b7565b6001600160a01b0383166123825760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105eb565b6001600160a01b0382166123e45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105eb565b6001600160a01b0383166000908152603360205260409020548181101561245c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105eb565b6001600160a01b038085166000818152603360205260408082208686039055928616808252908390208054860190559151600080516020612c11833981519152906124aa9086815260200190565b60405180910390a3611711565b6060824710156125185760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105eb565b600080866001600160a01b031685876040516125349190612bd4565b60006040518083038185875af1925050503d8060008114612571576040519150601f19603f3d011682016040523d82523d6000602084013e612576565b606091505b509150915061258787838387612592565b979650505050505050565b606083156126015782516000036125fa576001600160a01b0385163b6125fa5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105eb565b5081610e8a565b610e8a83838151156126165781518083602001fd5b8060405162461bcd60e51b81526004016105eb9190612654565b60005b8381101561264b578181015183820152602001612633565b50506000910152565b6020815260008251806020840152612673816040850160208701612630565b601f01601f19169190910160400192915050565b6001600160a01b038116811461269c57600080fd5b50565b600080604083850312156126b257600080fd5b82356126bd81612687565b946020939093013593505050565b6000602082840312156126dd57600080fd5b81356110d681612687565b6000806000606084860312156126fd57600080fd5b833561270881612687565b95602085013595506040909401359392505050565b6000806040838503121561273057600080fd5b823561273b81612687565b9150602083013567ffffffffffffffff81111561275757600080fd5b8301610340818603121561276a57600080fd5b809150509250929050565b60008060006060848603121561278a57600080fd5b833561279581612687565b925060208401356127a581612687565b929592945050506040919091013590565b60008060008060008060c087890312156127cf57600080fd5b86356127da81612687565b955060208701356127ea81612687565b945060408701356127fa81612687565b959894975094956060810135955060808101359460a0909101359350915050565b60006020828403121561282d57600080fd5b5035919050565b6000806000806080858703121561284a57600080fd5b843561285581612687565b9350602085013561286581612687565b93969395505050506040820135916060013590565b6000806040838503121561288d57600080fd5b823561289881612687565b9150602083013561276a81612687565b600080604083850312156128bb57600080fd5b50508035926020909101359150565b600181811c908216806128de57607f821691505b602082108103610f0257634e487b7160e01b600052602260045260246000fd5b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b60006020828403121561293957600080fd5b5051919050565b6000808335601e1984360301811261295757600080fd5b83018035915067ffffffffffffffff82111561297257600080fd5b60200191503681900382131561298757600080fd5b9250929050565b6000602082840312156129a057600080fd5b813560ff811681146110d657600080fd5b6000602082840312156129c357600080fd5b81516110d681612687565b634e487b7160e01b600052601160045260246000fd5b80820180821115610575576105756129ce565b600082612a1457634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612a3357612a336129ce565b500290565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b81810381811115610575576105756129ce565b600060208284031215612aa857600080fd5b815180151581146110d657600080fd5b634e487b7160e01b600052604160045260246000fd5b601f821115610bc757600081815260208120601f850160051c81016020861015612af55750805b601f850160051c820191505b81811015610c6057828155600101612b01565b815167ffffffffffffffff811115612b2e57612b2e612ab8565b612b4281612b3c84546128ca565b84612ace565b602080601f831160018114612b775760008415612b5f5750858301515b600019600386901b1c1916600185901b178555610c60565b600085815260208120601f198616915b82811015612ba657888601518255948401946001909101908401612b87565b5085821015612bc45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251612be6818460208701612630565b919091019291505056fe4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220803dae48baefc31ac1ca6f12fce04b1028be511e5d6355449d118c23fb9bfd7d64736f6c63430008100033",
"sourceMap": "1311:22032:158:-:0;;;2129:53;;;;;;;;;-1:-1:-1;2153:22:158;:20;:22::i;:::-;1311:22032;;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:-;1311:22032:158;;;;;;",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x608060405234801561001057600080fd5b50600436106102325760003560e01c806357f1b83711610130578063acac18e4116100b8578063c35be0171161007c578063c35be01714610486578063d7020d0a1461048e578063dd62ed3e146104a1578063e8f7a1a5146104b4578063f9e2bf6b146104c757600080fd5b8063acac18e414610436578063ae16733514610449578063b16a19de1461045a578063b1bf962d1461046b578063bc1d19dd1461047357600080fd5b80637535d246116100ff5780637535d246146103ed5780637ccd3b46146103f557806395d89b4114610408578063a457c2d714610410578063a9059cbb1461042357600080fd5b806357f1b837146103a3578063679d0095146103b45780636b8465f8146103c757806370a08231146103da57600080fd5b80631da24f3e116101be57806336a722341161018257806336a722341461035c57806339509351146103645780633ba0b9a91461037757806347bec6f01461037f5780634efecaa51461039057600080fd5b80631da24f3e1461030657806323b872dd146103195780632d6aa1281461032c57806330c1e38b14610334578063313ce5671461034757600080fd5b806314ff75c91161020557806314ff75c9146102ae578063156e29f6146102b657806318160ddd146102c957806319ef9268146102d15780631d165564146102f157600080fd5b8063046016081461023757806306fdde031461024e578063095ea7b3146102635780630afbcdc914610286575b600080fd5b606a545b6040519081526020015b60405180910390f35b6102566104cf565b6040516102459190612654565b61027661027136600461269f565b610561565b6040519015158152602001610245565b6102996102943660046126cb565b61057b565b60408051928352602083019190915201610245565b606e5461023b565b6102766102c43660046126e8565b610593565b61023b610690565b6102d96107b3565b6040516001600160a01b039091168152602001610245565b6103046102ff36600461271d565b6107c2565b005b61023b6103143660046126cb565b610bcc565b610276610327366004612775565b610bd7565b606c5461023b565b6103046103423660046127b6565b610bfb565b60655460405160ff9091168152602001610245565b61023b610c68565b61027661037236600461269f565b610d66565b61023b610d88565b6066546001600160a01b03166102d9565b61023b61039e36600461269f565b610e92565b6068546001600160a01b03166102d9565b6103046103c23660046126e8565b610f08565b6103046103d536600461281b565b610f6f565b61023b6103e83660046126cb565b610fcb565b6102d96110dd565b61030461040336600461281b565b6110e7565b610256611143565b61027661041e36600461269f565b611152565b61027661043136600461269f565b6111cd565b61030461044436600461281b565b6111db565b6067546001600160a01b03166102d9565b6069546001600160a01b03166102d9565b61023b611237565b6103046104813660046126cb565b611242565b606b5461023b565b61030461049c366004612834565b6112bb565b61023b6104af36600461287a565b6113d8565b6103046104c23660046128a8565b611403565b606d5461023b565b6060603680546104de906128ca565b80601f016020809104026020016040519081016040528092919081815260200182805461050a906128ca565b80156105575780601f1061052c57610100808354040283529160200191610557565b820191906000526020600020905b81548152906001019060200180831161053a57829003601f168201915b5050505050905090565b60003361056f81858561146f565b60019150505b92915050565b60008061058783611593565b60355491509150915091565b600061059d6115ae565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b815250906105f45760405162461bcd60e51b81526004016105eb9190612654565b60405180910390fd5b50600061060085611593565b9050600061060e8585611627565b60408051808201909152600381526235303160e81b6020820152909150816106495760405162461bcd60e51b81526004016105eb9190612654565b506106548682611661565b60408051868152602081018690526001600160a01b03881691600080516020612bf1833981519152910160405180910390a25015949350505050565b60008061069b6115ae565b905060006106a860355490565b9050806000036106bb5760009250505090565b606854606954606a54606b546040516352120e2360e01b81526107ac946001600160a01b038881169563dcc5cded9587956352120e239561070595851694909316926004016128fe565b602060405180830381865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107469190612927565b6040518263ffffffff1660e01b815260040161076491815260200190565b602060405180830381865afa158015610781573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a59190612927565b8290611717565b9250505090565b60006107bd611753565b905090565b600054610100900460ff16158080156107e25750600054600160ff909116105b806107fc5750303b1580156107fc575060005460ff166001145b61085f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105eb565b6000805460ff191660011790558015610882576000805461ff0019166101001790555b610922610893610140840184612940565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506108d692505050610160850185612940565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061091d925050506101208601610100870161298e565b6117a8565b6109346102a0830161028084016126cb565b606780546001600160a01b0319166001600160a01b03929092169190911790556109666102c083016102a084016126cb565b606680546001600160a01b0319166001600160a01b03929092169190911790556102c0820135606c556102e0820135606d55610300820135606e556109b160c0830160a084016126cb565b606980546001600160a01b0319166001600160a01b03929092169190911790556109de60208301836126cb565b606880546001600160a01b0319166001600160a01b039283161790556060830135606a556080830135606b5560658054610100600160a81b0319166101008684168102919091179182905560408051630261bf8b60e01b815290519190920490921691630261bf8b916004808201926020929091908290030181865afa158015610a6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9091906129b1565b6069546068546065546040805163033df24d60e31b815290516001600160a01b039586169594851694938416937f4b3932defc851859c0883ec898429ef20ab50bf24355077458d5b5c266d8087593610100900416916319ef92689160048083019260209291908290030181865afa158015610b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3491906129b1565b606754606654606c54606d54606e54604080516001600160a01b039788168152958716602087015295909316848601526060840191909152608083015260a082015290519081900360c00190a48015610bc7576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b600061057582611593565b600033610be58582856117ca565b610bf085858561183e565b506001949350505050565b610c036115ae565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b81525090610c515760405162461bcd60e51b81526004016105eb9190612654565b50610c6086868686868661184b565b505050505050565b600080610c736115ae565b606854606954606a54606b546040516352120e2360e01b81529495506001600160a01b038087169563dcc5cded9587956352120e2395610cc09592851694909116929091906004016128fe565b602060405180830381865afa158015610cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d019190612927565b6040518263ffffffff1660e01b8152600401610d1f91815260200190565b602060405180830381865afa158015610d3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d609190612927565b91505090565b60003361056f818585610d7983836113d8565b610d8391906129e4565b61146f565b600080610d936115ae565b606854606954606a54606b546040516352120e2360e01b81529495506000946001600160a01b03808816956352120e2395610dda95918316949216929091906004016128fe565b602060405180830381865afa158015610df7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1b9190612927565b60405163dcc5cded60e01b8152600481018290529091506000906001600160a01b0384169063dcc5cded90602401602060405180830381865afa158015610e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8a9190612927565b949350505050565b6000610e9c6115ae565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b81525090610eea5760405162461bcd60e51b81526004016105eb9190612654565b50606954610f02906001600160a01b03168484611ac0565b50919050565b610f106115ae565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b81525090610f5e5760405162461bcd60e51b81526004016105eb9190612654565b50610bc7836000808560008661184b565b610f776115ae565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b81525090610fc55760405162461bcd60e51b81526004016105eb9190612654565b50606e55565b600080610fd66115ae565b606854606954606a54606b546040516352120e2360e01b81529495506110d6946001600160a01b038088169563dcc5cded9587956352120e23956110279593851694909216929091906004016128fe565b602060405180830381865afa158015611044573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110689190612927565b6040518263ffffffff1660e01b815260040161108691815260200190565b602060405180830381865afa1580156110a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c79190612927565b6110d085611593565b90611717565b9392505050565b60006107bd6115ae565b6110ef6115ae565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b8152509061113d5760405162461bcd60e51b81526004016105eb9190612654565b50606d55565b6060603780546104de906128ca565b6000338161116082866113d8565b9050838110156111c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105eb565b610bf0828686840361146f565b60003361056f81858561183e565b6111e36115ae565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b815250906112315760405162461bcd60e51b81526004016105eb9190612654565b50606c55565b60006107bd60355490565b61124a6115ae565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b815250906112985760405162461bcd60e51b81526004016105eb9190612654565b50606680546001600160a01b0319166001600160a01b0392909216919091179055565b6112c36115ae565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b815250906113115760405162461bcd60e51b81526004016105eb9190612654565b50600061131e8383611627565b6040805180820190915260038152621a981960e91b6020820152909150816113595760405162461bcd60e51b81526004016105eb9190612654565b506113648582611b12565b60695461137b906001600160a01b03168585611ac0565b836001600160a01b0316856001600160a01b03167f5d624aa9c148153ab3446c1b154f660ee7701e549fe9b62dab7171b1c80e6fa285856040516113c9929190918252602082015260400190565b60405180910390a35050505050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b61140b6115ae565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b815250906114595760405162461bcd60e51b81526004016105eb9190612654565b5061146b60008060008560008661184b565b5050565b6001600160a01b0383166114d15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105eb565b6001600160a01b0382166115325760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105eb565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b031660009081526033602052604090205490565b6000606560019054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611603573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bd91906129b1565b6000806116356002846129f7565b9050610e8a8361165b611654876b033b2e3c9fd0803ce8000000611b36565b8490611b42565b90611b4e565b600061166c60355490565b9050600061167984611593565b90506116858484611b5a565b600061168f611753565b6001600160a01b031614611711576116a5611753565b6040516318c39f1760e11b81526001600160a01b038681166004830152602482018590526044820184905291909116906331873e2e90606401600060405180830381600087803b1580156116f857600080fd5b505af115801561170c573d6000803e3d6000fd5b505050505b50505050565b60006110d66b033b2e3c9fd0803ce800000061165b6117368686611b36565b61174d60026b033b2e3c9fd0803ce80000006129f7565b90611b42565b6000606560019054906101000a90046001600160a01b03166001600160a01b03166319ef92686040518163ffffffff1660e01b8152600401602060405180830381865afa158015611603573d6000803e3d6000fd5b6117b28383611c09565b6065805460ff191660ff929092169190911790555050565b60006117d684846113d8565b9050600019811461171157818110156118315760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105eb565b611711848484840361146f565b610bc78383836001611c3a565b82158015611857575081155b610c60576066546067546001600160a01b039182169190811690600090819081908a166118915761188788611e58565b90925090506118a2565b61189a87611e86565b919450925090505b6118b5846118b08389611627565b611661565b6118c3856118b08489611627565b836001600160a01b03168b6001600160a01b0316600080516020612c11833981519152836040516118f691815260200190565b60405180910390a3846001600160a01b03168b6001600160a01b0316600080516020612c118339815191528460405161193191815260200190565b60405180910390a360408051828152602081018890526001600160a01b03861691600080516020612bf1833981519152910160405180910390a260408051838152602081018890526001600160a01b03871691600080516020612bf1833981519152910160405180910390a26001600160a01b038a1615611a28576119ba8a6118b08589611627565b896001600160a01b03168b6001600160a01b0316600080516020612c11833981519152856040516119ed91815260200190565b60405180910390a360408051848152602081018890526001600160a01b038c1691600080516020612bf1833981519152910160405180910390a25b6001600160a01b03891615611ab357611a45896118b08a89611627565b886001600160a01b03168b6001600160a01b0316600080516020612c118339815191528a604051611a7891815260200190565b60405180910390a360408051898152602081018890526001600160a01b038b1691600080516020612bf1833981519152910160405180910390a25b5050505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610bc7908490611ee1565b6000611b1d60355490565b90506000611b2a84611593565b90506116858484611fb3565b60006110d68284612a19565b60006110d682846129e4565b60006110d682846129f7565b6001600160a01b038216611bb05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105eb565b8060356000828254611bc291906129e4565b90915550506001600160a01b038216600081815260336020908152604080832080548601905551848152600080516020612c11833981519152910160405180910390a35050565b600054610100900460ff16611c305760405162461bcd60e51b81526004016105eb90612a38565b61146b82826120d5565b6000611c446115ae565b606854606954606a54606b546040516352120e2360e01b81529495506000946001600160a01b03808816956352120e2395611c8b95918316949216929091906004016128fe565b602060405180830381865afa158015611ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ccc9190612927565b60405163dcc5cded60e01b8152600481018290529091506000906001600160a01b0384169063dcc5cded90602401602060405180830381865afa158015611d17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3b9190612927565b90506000611d4c826110d08a611593565b90506000611d5d836110d08a611593565b9050611d738989611d6e8a87611627565b612115565b8515611df757604051636c130dc760e01b8152600481018590526001600160a01b038a811660248301528981166044830152606482018990526084820184905260a48201839052861690636c130dc79060c40160006040518083038186803b158015611dde57600080fd5b505afa158015611df2573d6000803e3d6000fd5b505050505b876001600160a01b0316896001600160a01b03167f4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda86668986604051611e45929190918252602082015260400190565b60405180910390a3505050505050505050565b606c54600090819081611e6b8583612267565b90506000611e798287612a83565b9196919550909350505050565b600080600080611ea1606d548661226790919063ffffffff16565b90506000611eba606e548761226790919063ffffffff16565b9050600081611ec98489612a83565b611ed39190612a83565b929791965091945092505050565b6000611f36826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661230f9092919063ffffffff16565b805190915015610bc75780806020019051810190611f549190612a96565b610bc75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105eb565b6001600160a01b0382166120135760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105eb565b6001600160a01b038216600090815260336020526040902054818110156120875760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105eb565b6001600160a01b0383166000818152603360209081526040808320868603905560358054879003905551858152919291600080516020612c11833981519152910160405180910390a3505050565b600054610100900460ff166120fc5760405162461bcd60e51b81526004016105eb90612a38565b60366121088382612b14565b506037610bc78282612b14565b600061212084611593565b9050600061212d84611593565b905061213a85858561231e565b6000612144611753565b6001600160a01b03161461226057600061215d60355490565b9050612167611753565b6040516318c39f1760e11b81526001600160a01b038881166004830152602482018490526044820186905291909116906331873e2e90606401600060405180830381600087803b1580156121ba57600080fd5b505af11580156121ce573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b031614610c60576121f3611753565b6040516318c39f1760e11b81526001600160a01b038781166004830152602482018490526044820185905291909116906331873e2e90606401600060405180830381600087803b15801561224657600080fd5b505af115801561225a573d6000803e3d6000fd5b50505050505b5050505050565b6000821580612274575081155b1561228157506000610575565b8161228f60026127106129f7565b61229b90600019612a83565b6122a591906129f7565b8311156040518060400160405280600381526020016203230360ec1b815250906122e25760405162461bcd60e51b81526004016105eb9190612654565b506127106122f16002826129f7565b6122fb8486612a19565b61230591906129e4565b6110d691906129f7565b6060610e8a84846000856124b7565b6001600160a01b0383166123825760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105eb565b6001600160a01b0382166123e45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105eb565b6001600160a01b0383166000908152603360205260409020548181101561245c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105eb565b6001600160a01b038085166000818152603360205260408082208686039055928616808252908390208054860190559151600080516020612c11833981519152906124aa9086815260200190565b60405180910390a3611711565b6060824710156125185760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105eb565b600080866001600160a01b031685876040516125349190612bd4565b60006040518083038185875af1925050503d8060008114612571576040519150601f19603f3d011682016040523d82523d6000602084013e612576565b606091505b509150915061258787838387612592565b979650505050505050565b606083156126015782516000036125fa576001600160a01b0385163b6125fa5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105eb565b5081610e8a565b610e8a83838151156126165781518083602001fd5b8060405162461bcd60e51b81526004016105eb9190612654565b60005b8381101561264b578181015183820152602001612633565b50506000910152565b6020815260008251806020840152612673816040850160208701612630565b601f01601f19169190910160400192915050565b6001600160a01b038116811461269c57600080fd5b50565b600080604083850312156126b257600080fd5b82356126bd81612687565b946020939093013593505050565b6000602082840312156126dd57600080fd5b81356110d681612687565b6000806000606084860312156126fd57600080fd5b833561270881612687565b95602085013595506040909401359392505050565b6000806040838503121561273057600080fd5b823561273b81612687565b9150602083013567ffffffffffffffff81111561275757600080fd5b8301610340818603121561276a57600080fd5b809150509250929050565b60008060006060848603121561278a57600080fd5b833561279581612687565b925060208401356127a581612687565b929592945050506040919091013590565b60008060008060008060c087890312156127cf57600080fd5b86356127da81612687565b955060208701356127ea81612687565b945060408701356127fa81612687565b959894975094956060810135955060808101359460a0909101359350915050565b60006020828403121561282d57600080fd5b5035919050565b6000806000806080858703121561284a57600080fd5b843561285581612687565b9350602085013561286581612687565b93969395505050506040820135916060013590565b6000806040838503121561288d57600080fd5b823561289881612687565b9150602083013561276a81612687565b600080604083850312156128bb57600080fd5b50508035926020909101359150565b600181811c908216806128de57607f821691505b602082108103610f0257634e487b7160e01b600052602260045260246000fd5b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b60006020828403121561293957600080fd5b5051919050565b6000808335601e1984360301811261295757600080fd5b83018035915067ffffffffffffffff82111561297257600080fd5b60200191503681900382131561298757600080fd5b9250929050565b6000602082840312156129a057600080fd5b813560ff811681146110d657600080fd5b6000602082840312156129c357600080fd5b81516110d681612687565b634e487b7160e01b600052601160045260246000fd5b80820180821115610575576105756129ce565b600082612a1457634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612a3357612a336129ce565b500290565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b81810381811115610575576105756129ce565b600060208284031215612aa857600080fd5b815180151581146110d657600080fd5b634e487b7160e01b600052604160045260246000fd5b601f821115610bc757600081815260208120601f850160051c81016020861015612af55750805b601f850160051c820191505b81811015610c6057828155600101612b01565b815167ffffffffffffffff811115612b2e57612b2e612ab8565b612b4281612b3c84546128ca565b84612ace565b602080601f831160018114612b775760008415612b5f5750858301515b600019600386901b1c1916600185901b178555610c60565b600085815260208120601f198616915b82811015612ba657888601518255948401946001909101908401612b87565b5085821015612bc45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251612be6818460208701612630565b919091019291505056fe4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220803dae48baefc31ac1ca6f12fce04b1028be511e5d6355449d118c23fb9bfd7d64736f6c63430008100033",
"sourceMap": "1311:22032:158:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18380:115;18467:21;;18380:115;;;160:25:187;;;148:2;133:18;18380:115:158;;;;;;;;2491:98:23;;;:::i;:::-;;;;;;;:::i;4768:197::-;;;;;;:::i;:::-;;:::i;:::-;;;1473:14:187;;1466:22;1448:41;;1436:2;1421:18;4768:197:23;1308:187:187;14802:171:158;;;;;;:::i;:::-;;:::i;:::-;;;;1926:25:187;;;1982:2;1967:18;;1960:34;;;;1899:18;14802:171:158;1752:248:187;17542:120:158;17630:25;;17542:120;;4827:478;;;;;;:::i;:::-;;:::i;15204:579::-;;;:::i;19531:152::-;;;:::i;:::-;;;-1:-1:-1;;;;;2592:32:187;;;2574:51;;2562:2;2547:18;19531:152:158;2393:238:187;2274:1186:158;;;;;;:::i;:::-;;:::i;:::-;;14428:125;;;;;;:::i;:::-;;:::i;5527:286:23:-;;;;;;:::i;:::-;;:::i;16963:111:158:-;17049:18;;16963:111;;6339:537;;;;;;:::i;:::-;;:::i;1025:145:163:-;1149:15;;1025:145;;1149:15;;;;4543:36:187;;4531:2;4516:18;1025:145:163;4401:184:187;13734:382:158;;;:::i;6208:234:23:-;;;;;;:::i;:::-;;:::i;16176:410:158:-;;;:::i;16709:98::-;16792:8;;-1:-1:-1;;;;;16792:8:158;16709:98;;19986:259;;;;;;:::i;:::-;;:::i;17970:112::-;18054:21;;-1:-1:-1;;;;;18054:21:158;17970:112;;5927:406;;;;;;:::i;:::-;;:::i;17371:165::-;;;;;;:::i;:::-;;:::i;13276:449::-;;;;;;:::i;:::-;;:::i;18790:92::-;;;:::i;17080:161::-;;;;;;:::i;:::-;;:::i;2702:102:23:-;;;:::i;6929:427::-;;;;;;:::i;:::-;;:::i;4064:189::-;;;;;;:::i;:::-;;:::i;16813:144:158:-;;;;;;:::i;:::-;;:::i;17775:99::-;17858:9;;-1:-1:-1;;;;;17858:9:158;17775:99;;18173:111;18261:16;;-1:-1:-1;;;;;18261:16:158;18173:111;;15941:119;;;:::i;16592:111::-;;;;;;:::i;:::-;;:::i;18591:115::-;18678:21;;18591:115;;3926:507;;;;;;:::i;:::-;;:::i;4311:149:23:-;;;;;;:::i;:::-;;:::i;5526:395:158:-;;;;;;:::i;:::-;;:::i;17247:118::-;17334:24;;17247:118;;2491:98:23;2545:13;2577:5;2570:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2491:98;:::o;4768:197::-;4851:4;929:10:33;4905:32:23;929:10:33;4921:7:23;4930:6;4905:8;:32::i;:::-;4954:4;4947:11;;;4768:197;;;;;:::o;14802:171:158:-;14887:7;14896;14923:21;14939:4;14923:15;:21::i;:::-;3666:12:23;;14915:51:158;;;;14802:171;;;:::o;4827:478::-;4995:4;1994:17;:15;:17::i;:::-;-1:-1:-1;;;;;1970:42:158;929:10:33;-1:-1:-1;;;;;1970:42:158;;2014:37;;;;;;;;;;;;;-1:-1:-1;;;2014:37:158;;;1962:90;;;;;-1:-1:-1;;;1962:90:158;;;;;;;;:::i;:::-;;;;;;;;;;5016:23:::1;5042:21;5058:4;5042:15;:21::i;:::-;5016:47:::0;-1:-1:-1;5074:20:158::1;5097;:6:::0;5111:5;5097:13:::1;:20::i;:::-;5154:29;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;5154:29:158::1;::::0;::::1;::::0;5074:43;;-1:-1:-1;5135:17:158;5127:57:::1;;;;-1:-1:-1::0;;;5127:57:158::1;;;;;;;;:::i;:::-;;5194:25;5200:4;5206:12;5194:5;:25::i;:::-;5235;::::0;;1926::187;;;1982:2;1967:18;;1960:34;;;-1:-1:-1;;;;;5235:25:158;::::1;::::0;-1:-1:-1;;;;;;;;;;;5235:25:158;1899:18:187;5235:25:158::1;;;;;;;-1:-1:-1::0;5278:20:158;;4827:478;-1:-1:-1;;;;4827:478:158:o;15204:579::-;15295:7;15314:17;15334;:15;:17::i;:::-;15314:37;;15370:27;15400:19;3666:12:23;;;3579:106;15400:19:158;15370:49;;15434:19;15457:1;15434:24;15430:63;;15481:1;15474:8;;;;15204:579;:::o;15430:63::-;15617:21;;15657:16;;15691:21;;15730;;15582:183;;-1:-1:-1;;;15582:183:158;;15510:266;;-1:-1:-1;;;;;15537:31:158;;;;;;;;15582:17;;:183;;15617:21;;;15657:16;;;;15582:183;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15537:238;;;;;;;;;;;;;160:25:187;;148:2;133:18;;14:177;15537:238:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15510:19;;:26;:266::i;:::-;15503:273;;;;15204:579;:::o;19531:152::-;19602:25;19646:30;:28;:30::i;:::-;19639:37;;19531:152;:::o;2274:1186::-;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;;7617:2:187;3314:201:18;;;7599:21:187;7656:2;7636:18;;;7629:30;7695:34;7675:18;;;7668:62;-1:-1:-1;;;7746:18:187;;;7739:44;7800:19;;3314:201:18;7415: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;2463:93:158::1;2488:16;;::::0;::::1;:5:::0;:16:::1;:::i;:::-;2463:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;2506:18:158::1;::::0;-1:-1:-1;;;2506:18:158::1;::::0;::::1;::::0;::::1;:::i;:::-;2463:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;2526:29:158::1;::::0;-1:-1:-1;;;2526:29:158;;;::::1;::::0;::::1;;:::i;:::-;2463:24;:93::i;:::-;2579:14;::::0;;;::::1;::::0;::::1;;:::i;:::-;2567:9;:26:::0;;-1:-1:-1;;;;;;2567:26:158::1;-1:-1:-1::0;;;;;2567:26:158;;;::::1;::::0;;;::::1;::::0;;2614:13:::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;2603:8;:24:::0;;-1:-1:-1;;;;;;2603:24:158::1;-1:-1:-1::0;;;;;2603:24:158;;;::::1;::::0;;;::::1;::::0;;2658:23:::1;::::0;::::1;;2637:18;:44:::0;2718:29:::1;::::0;::::1;;2691:24;:56:::0;2785:30:::1;::::0;::::1;;2757:25;:58:::0;2844:21:::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;2825:16;:40:::0;;-1:-1:-1;;;;;;2825:40:158::1;-1:-1:-1::0;;;;;2825:40:158;;;::::1;::::0;;;::::1;::::0;;2899:26:::1;;::::0;::::1;::::0;::::1;:::i;:::-;2875:21;:50:::0;;-1:-1:-1;;;;;;2875:50:158::1;-1:-1:-1::0;;;;;2875:50:158;;::::1;;::::0;;2959:26:::1;::::0;::::1;;2935:21;:50:::0;3019:26:::1;::::0;::::1;;2995:21;:50:::0;3055:16:::1;:34:::0;;-1:-1:-1;;;;;;3055:34:158::1;2875:50;3055:34:::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;3196:33:::1;::::0;;-1:-1:-1;;;3196:33:158;;;;:16;;;::::1;::::0;;::::1;::::0;:31:::1;::::0;:33:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:16;:33:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3166:16;::::0;3131:21:::1;::::0;3243:16:::1;::::0;:46:::1;::::0;;-1:-1:-1;;;3243:46:158;;;;-1:-1:-1;;;;;3106:347:158;;::::1;::::0;3166:16;;::::1;::::0;3131:21;;::::1;::::0;3106:347:::1;::::0;3166:16:::1;3243::::0;::::1;;::::0;:44:::1;::::0;:46:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:16;:46:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3303:9;::::0;3326:8:::1;::::0;3348:18:::1;::::0;3380:24:::1;::::0;3418:25:::1;::::0;3106:347:::1;::::0;;-1:-1:-1;;;;;9230:15:187;;;9212:34;;3303:9:158;;::::1;9277:2:187::0;9262:18;;9255:43;3326:8:158;;;::::1;9314:18:187::0;;;9307:43;9381:2;9366:18;;9359:34;;;;9424:3;9409:19;;9402:35;9192:3;9453:19;;9446:35;3106:347:158;;;;;;9161:3:187;3106:347:158;;::::1;3640:14:18::0;3636:99;;;3686:5;3670:21;;-1:-1:-1;;3670:21:18;;;3710:14;;-1:-1:-1;4543:36:187;;3710:14:18;;4531:2:187;4516:18;3710:14:18;;;;;;;3636:99;3258:483;2274:1186:158;;:::o;14428:125::-;14499:7;14525:21;14541:4;14525:15;:21::i;5527:286:23:-;5654:4;929:10:33;5710:38:23;5726:4;929:10:33;5741:6:23;5710:15;:38::i;:::-;5758:27;5768:4;5774:2;5778:6;5758:9;:27::i;:::-;-1:-1:-1;5802:4:23;;5527:286;-1:-1:-1;;;;5527:286:23:o;6339:537:158:-;1994:17;:15;:17::i;:::-;-1:-1:-1;;;;;1970:42:158;929:10:33;-1:-1:-1;;;;;1970:42:158;;2014:37;;;;;;;;;;;;;-1:-1:-1;;;2014:37:158;;;1962:90;;;;;-1:-1:-1;;;1962:90:158;;;;;;;;:::i;:::-;;6613:256:::1;6646:4;6681:6;6718:5;6754:6;6791:14;6836:5;6613:19;:256::i;:::-;6339:537:::0;;;;;;:::o;13734:382::-;13798:7;13817:17;13837;:15;:17::i;:::-;13951:21;;13991:16;;14025:21;;14064;;13916:183;;-1:-1:-1;;;13916:183:158;;13817:37;;-1:-1:-1;;;;;;13871:31:158;;;;;;;;13916:17;;:183;;13951:21;;;;13991:16;;;;14025:21;;14064;13916:183;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13871:238;;;;;;;;;;;;;160:25:187;;148:2;133:18;;14:177;13871:238:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13864:245;;;13734:382;:::o;6208:234:23:-;6296:4;929:10:33;6350:64:23;929:10:33;6366:7:23;6403:10;6375:25;929:10:33;6366:7:23;6375:9;:25::i;:::-;:38;;;;:::i;:::-;6350:8;:64::i;16176:410:158:-;16238:7;16257:17;16277;:15;:17::i;:::-;16356:21;;16392:16;;16422:21;;16457;;16325:163;;-1:-1:-1;;;16325:163:158;;16257:37;;-1:-1:-1;16305:17:158;;-1:-1:-1;;;;;16325:17:158;;;;;;:163;;16356:21;;;;16392:16;;;16422:21;;16457;16325:163;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16515:42;;-1:-1:-1;;;16515:42:158;;;;;160:25:187;;;16305:183:158;;-1:-1:-1;16499:13:158;;-1:-1:-1;;;;;16515:31:158;;;;;133:18:187;;16515:42:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16499:58;16176:410;-1:-1:-1;;;;16176:410:158:o;19986:259::-;20127:7;1994:17;:15;:17::i;:::-;-1:-1:-1;;;;;1970:42:158;929:10:33;-1:-1:-1;;;;;1970:42:158;;2014:37;;;;;;;;;;;;;-1:-1:-1;;;2014:37:158;;;1962:90;;;;;-1:-1:-1;;;1962:90:158;;;;;;;;:::i;:::-;-1:-1:-1;20169:16:158::1;::::0;20151:64:::1;::::0;-1:-1:-1;;;;;20169:16:158::1;20200:6:::0;20208;20151:48:::1;:64::i;:::-;-1:-1:-1::0;20232:6:158;19986:259;-1:-1:-1;19986:259:158:o;5927:406::-;1994:17;:15;:17::i;:::-;-1:-1:-1;;;;;1970:42:158;929:10:33;-1:-1:-1;;;;;1970:42:158;;2014:37;;;;;;;;;;;;;-1:-1:-1;;;2014:37:158;;;1962:90;;;;;-1:-1:-1;;;1962:90:158;;;;;;;;:::i;:::-;;6094:232:::1;6127:4;6166:1;6199::::0;6223:6:::1;6256:1;6297:5;6094:19;:232::i;17371:165::-:0;1994:17;:15;:17::i;:::-;-1:-1:-1;;;;;1970:42:158;929:10:33;-1:-1:-1;;;;;1970:42:158;;2014:37;;;;;;;;;;;;;-1:-1:-1;;;2014:37:158;;;1962:90;;;;;-1:-1:-1;;;1962:90:158;;;;;;;;:::i;:::-;-1:-1:-1;17477:25:158::1;:52:::0;17371:165::o;13276:449::-;13377:7;13396:17;13416;:15;:17::i;:::-;13559:21;;13599:16;;13633:21;;13672;;13524:183;;-1:-1:-1;;;13524:183:158;;13396:37;;-1:-1:-1;13450:268:158;;-1:-1:-1;;;;;13479:31:158;;;;;;;;13524:17;;:183;;13559:21;;;;13599:16;;;;13633:21;;13672;13524:183;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13479:238;;;;;;;;;;;;;160:25:187;;148:2;133:18;;14:177;13479:238:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13450:21;13466:4;13450:15;:21::i;:::-;:28;;:268::i;:::-;13443:275;13276:449;-1:-1:-1;;;13276:449:158:o;18790:92::-;18827:12;18858:17;:15;:17::i;17080:161::-;1994:17;:15;:17::i;:::-;-1:-1:-1;;;;;1970:42:158;929:10:33;-1:-1:-1;;;;;1970:42:158;;2014:37;;;;;;;;;;;;;-1:-1:-1;;;2014:37:158;;;1962:90;;;;;-1:-1:-1;;;1962:90:158;;;;;;;;:::i;:::-;-1:-1:-1;17184:24:158::1;:50:::0;17080:161::o;2702:102:23:-;2758:13;2790:7;2783:14;;;;;:::i;6929:427::-;7022:4;929:10:33;7022:4:23;7103:25;929:10:33;7120:7:23;7103:9;:25::i;:::-;7076:52;;7166:15;7146:16;:35;;7138:85;;;;-1:-1:-1;;;7138:85:23;;10155:2:187;7138:85:23;;;10137:21:187;10194:2;10174:18;;;10167:30;10233:34;10213:18;;;10206:62;-1:-1:-1;;;10284:18:187;;;10277:35;10329:19;;7138:85:23;9953:401:187;7138:85:23;7257:60;7266:5;7273:7;7301:15;7282:16;:34;7257:8;:60::i;4064:189::-;4143:4;929:10:33;4197:28:23;929:10:33;4214:2:23;4218:6;4197:9;:28::i;16813:144:158:-;1994:17;:15;:17::i;:::-;-1:-1:-1;;;;;1970:42:158;929:10:33;-1:-1:-1;;;;;1970:42:158;;2014:37;;;;;;;;;;;;;-1:-1:-1;;;2014:37:158;;;1962:90;;;;;-1:-1:-1;;;1962:90:158;;;;;;;;:::i;:::-;-1:-1:-1;16912:18:158::1;:38:::0;16813:144::o;15941:119::-;16008:7;16034:19;3666:12:23;;;3579:106;16592:111:158;1994:17;:15;:17::i;:::-;-1:-1:-1;;;;;1970:42:158;929:10:33;-1:-1:-1;;;;;1970:42:158;;2014:37;;;;;;;;;;;;;-1:-1:-1;;;2014:37:158;;;1962:90;;;;;-1:-1:-1;;;1962:90:158;;;;;;;;:::i;:::-;-1:-1:-1;16678:8:158::1;:18:::0;;-1:-1:-1;;;;;;16678:18:158::1;-1:-1:-1::0;;;;;16678:18:158;;;::::1;::::0;;;::::1;::::0;;16592:111::o;3926:507::-;1994:17;:15;:17::i;:::-;-1:-1:-1;;;;;1970:42:158;929:10:33;-1:-1:-1;;;;;1970:42:158;;2014:37;;;;;;;;;;;;;-1:-1:-1;;;2014:37:158;;;1962:90;;;;;-1:-1:-1;;;1962:90:158;;;;;;;;:::i;:::-;-1:-1:-1;4129:20:158::1;4152;:6:::0;4166:5;4152:13:::1;:20::i;:::-;4209:29;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;4209:29:158::1;::::0;::::1;::::0;4129:43;;-1:-1:-1;4190:17:158;4182:57:::1;;;;-1:-1:-1::0;;;4182:57:158::1;;;;;;;;:::i;:::-;;4249:25;4255:4;4261:12;4249:5;:25::i;:::-;4303:16;::::0;4285:78:::1;::::0;-1:-1:-1;;;;;4303:16:158::1;4334:20:::0;4356:6;4285:48:::1;:78::i;:::-;4390:20;-1:-1:-1::0;;;;;4379:47:158::1;4384:4;-1:-1:-1::0;;;;;4379:47:158::1;;4412:6;4420:5;4379:47;;;;;;1926:25:187::0;;;1982:2;1967:18;;1960:34;1914:2;1899:18;;1752:248;4379:47:158::1;;;;;;;;4119:314;3926:507:::0;;;;:::o;4311:149:23:-;-1:-1:-1;;;;;4426:18:23;;;4400:7;4426:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4311:149::o;5526:395:158:-;1994:17;:15;:17::i;:::-;-1:-1:-1;;;;;1970:42:158;929:10:33;-1:-1:-1;;;;;1970:42:158;;2014:37;;;;;;;;;;;;;-1:-1:-1;;;2014:37:158;;;1962:90;;;;;-1:-1:-1;;;1962:90:158;;;;;;;;:::i;:::-;;5682:232:::1;5723:1;5754::::0;5787::::1;5811:6;5844:1;5885:5;5682:19;:232::i;:::-;5526:395:::0;;:::o;10841:370:23:-;-1:-1:-1;;;;;10972:19:23;;10964:68;;;;-1:-1:-1;;;10964:68:23;;10561:2:187;10964:68:23;;;10543:21:187;10600:2;10580:18;;;10573:30;10639:34;10619:18;;;10612:62;-1:-1:-1;;;10690:18:187;;;10683:34;10734:19;;10964:68:23;10359:400:187;10964:68:23;-1:-1:-1;;;;;11050:21:23;;11042:68;;;;-1:-1:-1;;;11042:68:23;;10966:2:187;11042:68:23;;;10948:21:187;11005:2;10985:18;;;10978:30;11044:34;11024:18;;;11017:62;-1:-1:-1;;;11095:18:187;;;11088:32;11137:19;;11042:68:23;10764:398:187;11042:68:23;-1:-1:-1;;;;;11121:18:23;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11172:32;;160:25:187;;;11172:32:23;;133:18:187;11172:32:23;;;;;;;10841:370;;;:::o;3743:125::-;-1:-1:-1;;;;;3843:18:23;3817:7;3843:18;;;:9;:18;;;;;;;3743:125::o;20251:135:158:-;20301:12;20345:16;;;;;;;;;-1:-1:-1;;;;;20345:16:158;-1:-1:-1;;;;;20345:31:158;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;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;:::-;:25;;:28::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;;;;;11609:32:187;;;2531:87:163;;;11591:51:187;11658:18;;;11651:34;;;11701:18;;;11694:34;;;2531:43:163;;;;;;;11564:18:187;;2531:87:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2463:163;2307:324;;2233:398;;:::o;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;18988:197:158:-;19060:25;19130:16;;;;;;;;;-1:-1:-1;;;;;19130:16:158;-1:-1:-1;;;;;19130:44:158;;: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;11492:441:23:-;11622:24;11649:25;11659:5;11666:7;11649:9;:25::i;:::-;11622:52;;-1:-1:-1;;11688:16:23;:37;11684:243;;11769:6;11749:16;:26;;11741:68;;;;-1:-1:-1;;;11741:68:23;;11941:2:187;11741:68:23;;;11923:21:187;11980:2;11960:18;;;11953:30;12019:31;11999:18;;;11992:59;12068:18;;11741:68:23;11739:353:187;11741:68:23;11851:51;11860:5;11867:7;11895:6;11876:16;:25;11851:8;:51::i;22088:152:158:-;22200:33;22210:4;22216:2;22220:6;22228:4;22200:9;:33::i;7162:1885::-;7387:11;;:34;;;;-1:-1:-1;7402:19:158;;7387:34;7437:7;7383:71;7482:8;;7519:9;;-1:-1:-1;;;;;7482:8:158;;;;7519:9;;;;7464:15;;;;;;7638:20;;7634:345;;7734:25;7752:6;7734:17;:25::i;:::-;7700:59;;-1:-1:-1;7700:59:158;-1:-1:-1;7634:345:158;;;7926:42;7953:14;7926:26;:42::i;:::-;7814:154;;-1:-1:-1;7814:154:158;-1:-1:-1;7814:154:158;-1:-1:-1;7634:345:158;8318:45;8324:8;8334:28;:14;8356:5;8334:21;:28::i;:::-;8318:5;:45::i;:::-;8373:43;8379:7;8388:27;:13;8409:5;8388:20;:27::i;8373:43::-;8455:8;-1:-1:-1;;;;;8440:40:158;8449:4;-1:-1:-1;;;;;8440:40:158;-1:-1:-1;;;;;;;;;;;8465:14:158;8440:40;;;;160:25:187;;148:2;133:18;;14:177;8440:40:158;;;;;;;;8510:7;-1:-1:-1;;;;;8495:38:158;8504:4;-1:-1:-1;;;;;8495:38:158;-1:-1:-1;;;;;;;;;;;8519:13:158;8495:38;;;;160:25:187;;148:2;133:18;;14:177;8495:38:158;;;;;;;;8557:37;;;1926:25:187;;;1982:2;1967:18;;1960:34;;;-1:-1:-1;;;;;8557:37:158;;;-1:-1:-1;;;;;;;;;;;8557:37:158;1899:18:187;8557:37:158;;;;;;;8609:35;;;1926:25:187;;;1982:2;1967:18;;1960:34;;;-1:-1:-1;;;;;8609:35:158;;;-1:-1:-1;;;;;;;;;;;8609:35:158;1899:18:187;8609:35:158;;;;;;;-1:-1:-1;;;;;8659:20:158;;;8655:199;;8695:41;8701:6;8709:26;:12;8729:5;8709:19;:26::i;8695:41::-;8770:6;-1:-1:-1;;;;;8755:36:158;8764:4;-1:-1:-1;;;;;8755:36:158;-1:-1:-1;;;;;;;;;;;8778:12:158;8755:36;;;;160:25:187;;148:2;133:18;;14:177;8755:36:158;;;;;;;;8810:33;;;1926:25:187;;;1982:2;1967:18;;1960:34;;;-1:-1:-1;;;;;8810:33:158;;;-1:-1:-1;;;;;;;;;;;8810:33:158;1899:18:187;8810:33:158;;;;;;;8655:199;-1:-1:-1;;;;;8868:19:158;;;8864:177;;8903:34;8909:5;8916:20;:6;8930:5;8916:13;:20::i;8903:34::-;8971:5;-1:-1:-1;;;;;8956:29:158;8965:4;-1:-1:-1;;;;;8956:29:158;-1:-1:-1;;;;;;;;;;;8978:6:158;8956:29;;;;160:25:187;;148:2;133:18;;14:177;8956:29:158;;;;;;;;9004:26;;;1926:25:187;;;1982:2;1967:18;;1960:34;;;-1:-1:-1;;;;;9004:26:158;;;-1:-1:-1;;;;;;;;;;;9004:26:158;1899:18:187;9004:26:158;;;;;;;8864:177;7373:1674;;;;;7162:1885;;;;;;:::o;818:216:27:-;968:58;;;-1:-1:-1;;;;;12289:32:187;;968:58:27;;;12271:51:187;12338:18;;;;12331:34;;;968:58:27;;;;;;;;;;12244:18:187;;;;968:58:27;;;;;;;;-1:-1:-1;;;;;968:58:27;-1:-1:-1;;;968:58:27;;;941:86;;961:5;;941:19;:86::i;2637:398:163:-;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;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;8904:535:23:-;-1:-1:-1;;;;;8987:21:23;;8979:65;;;;-1:-1:-1;;;8979:65:23;;12751:2:187;8979:65:23;;;12733:21:187;12790:2;12770:18;;;12763:30;12829:33;12809:18;;;12802:61;12880:18;;8979:65:23;12549:355:187;8979:65:23;9131:6;9115:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;9283:18:23;;;;;;:9;:18;;;;;;;;:28;;;;;;9336:37;160:25:187;;;-1:-1:-1;;;;;;;;;;;9336:37:23;133:18:187;9336:37:23;;;;;;;5526:395:158;;:::o;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;20885:962:158:-:0;21018:17;21038;:15;:17::i;:::-;21117:21;;21153:16;;21183:21;;21218;;21086:163;;-1:-1:-1;;;21086:163:158;;21018:37;;-1:-1:-1;21066:17:158;;-1:-1:-1;;;;;21086:17:158;;;;;;:163;;21117:21;;;;21153:16;;;21183:21;;21218;21086:163;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21276:42;;-1:-1:-1;;;21276:42:158;;;;;160:25:187;;;21066:183:158;;-1:-1:-1;21260:13:158;;-1:-1:-1;;;;;21276:31:158;;;;;133:18:187;;21276:42:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21260:58;;21337:25;21365:35;21394:5;21365:21;21381:4;21365:15;:21::i;:35::-;21337:63;;21410:23;21436:33;21463:5;21436:19;21452:2;21436:15;:19::i;:33::-;21410:59;-1:-1:-1;21488:47:158;21504:4;21510:2;21514:20;:6;21528:5;21514:13;:20::i;:::-;21488:15;:47::i;:::-;21550:8;21546:239;;;21574:200;;-1:-1:-1;;;21574:200:158;;;;;13608:25:187;;;-1:-1:-1;;;;;13707:15:187;;;13687:18;;;13680:43;13759:15;;;13739:18;;;13732:43;13791:18;;;13784:34;;;13834:19;;;13827:35;;;13878:19;;;13871:35;;;21574:21:158;;;;;13580:19:187;;21574:200:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21546:239;21822:2;-1:-1:-1;;;;;21800:40:158;21816:4;-1:-1:-1;;;;;21800:40:158;;21826:6;21834:5;21800:40;;;;;;1926:25:187;;;1982:2;1967:18;;1960:34;1914:2;1899:18;;1752:248;21800:40:158;;;;;;;;21008:839;;;;;20885:962;;;;:::o;22385:332::-;22507:18;;22451:7;;;;;22568:36;:6;22507:18;22568:17;:36::i;:::-;22544:60;-1:-1:-1;22614:22:158;22639;22544:60;22639:6;:22;:::i;:::-;22680:13;;22614:47;;-1:-1:-1;22385:332:158;;-1:-1:-1;;;;22385:332:158:o;22862:478::-;22937:7;22946;22955;22982:20;23005:43;23023:24;;23005:6;:17;;:43;;;;:::i;:::-;22982:66;;23093:21;23117:44;23135:25;;23117:6;:17;;:44;;;;:::i;:::-;23093:68;-1:-1:-1;23208:22:158;23093:68;23233:21;23242:12;23233:6;:21;:::i;:::-;:37;;;;:::i;:::-;23289:12;;23303:13;;-1:-1:-1;23289:12:158;;-1:-1:-1;22862:478:158;-1:-1:-1;;;22862:478:158:o;3868:717:27:-;4298:23;4324:69;4352:4;4324:69;;;;;;;;;;;;;;;;;4332:5;-1:-1:-1;;;;;4324:27:27;;;:69;;;;;:::i;:::-;4407:17;;4298:95;;-1:-1:-1;4407:21:27;4403:176;;4502:10;4491:30;;;;;;;;;;;;:::i;:::-;4483:85;;;;-1:-1:-1;;;4483:85:27;;14534:2:187;4483:85:27;;;14516:21:187;14573:2;14553:18;;;14546:30;14612:34;14592:18;;;14585:62;-1:-1:-1;;;14663:18:187;;;14656:40;14713:19;;4483:85:27;14332:406:187;9759:659:23;-1:-1:-1;;;;;9842:21:23;;9834:67;;;;-1:-1:-1;;;9834:67:23;;14945:2:187;9834:67:23;;;14927:21:187;14984:2;14964:18;;;14957:30;15023:34;15003:18;;;14996:62;-1:-1:-1;;;15074:18:187;;;15067:31;15115:19;;9834:67:23;14743: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;;15347:2:187;10025:71:23;;;15329:21:187;15386:2;15366:18;;;15359:30;15425:34;15405:18;;;15398:62;-1:-1:-1;;;15476:18:187;;;15469:32;15518:19;;10025:71:23;15145:398:187;10025:71:23;-1:-1:-1;;;;;10130:18:23;;;;;;:9;:18;;;;;;;;10151:23;;;10130:44;;10267:12;:22;;;;;;;10315:37;160:25:187;;;10130:18:23;;;-1:-1:-1;;;;;;;;;;;10315:37:23;133:18:187;10315:37:23;;;;;;;3258:483:18;2274:1186:158;;:::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;1555:672:163:-:0;1678:24;1705:23;1721:6;1705:15;:23::i;:::-;1678:50;;1735:27;1765:26;1781:9;1765:15;:26::i;:::-;1735:56;;1800:42;1816:6;1824:9;1835:6;1800:15;:42::i;:::-;1906:1;1863:30;:28;:30::i;:::-;-1:-1:-1;;;;;1855:53:163;;1851:371;;1919:26;1948:19;3666:12:23;;;3579:106;1948:19:163;1919:48;;1976:30;:28;:30::i;:::-;:89;;-1:-1:-1;;;1976:89:163;;-1:-1:-1;;;;;11609:32:187;;;1976:89:163;;;11591:51:187;11658:18;;;11651:34;;;11701:18;;;11694:34;;;1976:43:163;;;;;;;11564:18:187;;1976:89:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2088:9;-1:-1:-1;;;;;2078:19:163;:6;-1:-1:-1;;;;;2078:19:163;;2074:141;;2110:30;:28;:30::i;:::-;:95;;-1:-1:-1;;;2110:95:163;;-1:-1:-1;;;;;11609:32:187;;;2110:95:163;;;11591:51:187;11658:18;;;11651:34;;;11701:18;;;11694:34;;;2110:43:163;;;;;;;11564:18:187;;2110:95:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1910:312;1851:371;1671:556;;1555:672;;;:::o;1026:333:145:-;1104:7;1123:10;;;:29;;-1:-1:-1;1137:15:145;;1123:29;1119:58;;;-1:-1:-1;1169:1:145;1162:8;;1119:58;1237:10;540:21;560:1;470:3;540:21;:::i;:::-;1201:32;;-1:-1:-1;;1201:32:145;:::i;:::-;1200:47;;;;:::i;:::-;1191:5;:56;;1249:35;;;;;;;;;;;;;-1:-1:-1;;;1249:35:145;;;1183:102;;;;;-1:-1:-1;;;1183:102:145;;;;;;;;:::i;:::-;-1:-1:-1;470:3:145;540:21;560:1;470:3;540:21;:::i;:::-;1300:18;1308:10;1300:5;:18;:::i;:::-;:33;;;;:::i;:::-;1299:55;;;;:::i;3884:223:32:-;4017:12;4048:52;4070:6;4078:4;4084:1;4087:12;4048:21;:52::i;7810:818:23:-;-1:-1:-1;;;;;7936:18:23;;7928:68;;;;-1:-1:-1;;;7928:68:23;;18086:2:187;7928:68:23;;;18068:21:187;18125:2;18105:18;;;18098:30;18164:34;18144:18;;;18137:62;-1:-1:-1;;;18215:18:187;;;18208:35;18260:19;;7928:68:23;17884:401:187;7928:68:23;-1:-1:-1;;;;;8014:16:23;;8006:64;;;;-1:-1:-1;;;8006:64:23;;18492:2:187;8006:64:23;;;18474:21:187;18531:2;18511:18;;;18504:30;18570:34;18550:18;;;18543:62;-1:-1:-1;;;18621:18:187;;;18614:33;18664:19;;8006:64:23;18290:399:187;8006:64:23;-1:-1:-1;;;;;8152:15:23;;8130:19;8152:15;;;:9;:15;;;;;;8185:21;;;;8177:72;;;;-1:-1:-1;;;8177:72:23;;18896:2:187;8177:72:23;;;18878:21:187;18935:2;18915:18;;;18908:30;18974:34;18954:18;;;18947:62;-1:-1:-1;;;19025:18:187;;;19018:36;19071:19;;8177:72:23;18694:402:187;8177:72:23;-1:-1:-1;;;;;8283:15:23;;;;;;;:9;:15;;;;;;8301:20;;;8283:38;;8498:13;;;;;;;;;;:23;;;;;;8547:26;;-1:-1:-1;;;;;;;;;;;8547:26:23;;;8315:6;160:25:187;;148:2;133:18;;14:177;8547:26:23;;;;;;;;8584:37;2274:1186:158;4971:446:32;5136:12;5193:5;5168:21;:30;;5160:81;;;;-1:-1:-1;;;5160:81:32;;19303:2:187;5160:81:32;;;19285:21:187;19342:2;19322:18;;;19315:30;19381:34;19361:18;;;19354:62;-1:-1:-1;;;19432:18:187;;;19425:36;19478:19;;5160:81:32;19101:402:187;5160:81:32;5252:12;5266:23;5293:6;-1:-1:-1;;;;;5293:11:32;5312:5;5319:4;5293:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5251:73;;;;5341:69;5368:6;5376:7;5385:10;5397:12;5341:26;:69::i;:::-;5334:76;4971:446;-1:-1:-1;;;;;;;4971:446:32:o;6589:628::-;6769:12;6797:7;6793:418;;;6824:10;:17;6845:1;6824:22;6820:286;;-1:-1:-1;;;;;1476:19:32;;;7031:60;;;;-1:-1:-1;;;7031:60:32;;20002:2:187;7031:60:32;;;19984:21:187;20041:2;20021:18;;;20014:30;20080:31;20060:18;;;20053:59;20129:18;;7031:60:32;19800:353:187;7031:60:32;-1:-1:-1;7126:10:32;7119:17;;6793:418;7167:33;7175:10;7187:12;7898:17;;:21;7894:379;;8126:10;8120:17;8182:15;8169:10;8165:2;8161:19;8154:44;7894:379;8249:12;8242:20;;-1:-1:-1;;;8242:20:32;;;;;;;;:::i;196:250:187:-;281:1;291:113;305:6;302:1;299:13;291:113;;;381:11;;;375:18;362:11;;;355:39;327:2;320:10;291:113;;;-1:-1:-1;;438:1:187;420:16;;413:27;196:250::o;451:396::-;600:2;589:9;582:21;563:4;632:6;626:13;675:6;670:2;659:9;655:18;648:34;691:79;763:6;758:2;747:9;743:18;738:2;730:6;726:15;691:79;:::i;:::-;831:2;810:15;-1:-1:-1;;806:29:187;791:45;;;;838:2;787:54;;451:396;-1:-1:-1;;451:396:187:o;852:131::-;-1:-1:-1;;;;;927:31:187;;917:42;;907:70;;973:1;970;963:12;907:70;852:131;:::o;988:315::-;1056:6;1064;1117:2;1105:9;1096:7;1092:23;1088:32;1085:52;;;1133:1;1130;1123:12;1085:52;1172:9;1159:23;1191:31;1216:5;1191:31;:::i;:::-;1241:5;1293:2;1278:18;;;;1265:32;;-1:-1:-1;;;988:315:187:o;1500:247::-;1559:6;1612:2;1600:9;1591:7;1587:23;1583:32;1580:52;;;1628:1;1625;1618:12;1580:52;1667:9;1654:23;1686:31;1711:5;1686:31;:::i;2005:383::-;2082:6;2090;2098;2151:2;2139:9;2130:7;2126:23;2122:32;2119:52;;;2167:1;2164;2157:12;2119:52;2206:9;2193:23;2225:31;2250:5;2225:31;:::i;:::-;2275:5;2327:2;2312:18;;2299:32;;-1:-1:-1;2378:2:187;2363:18;;;2350:32;;2005:383;-1:-1:-1;;;2005:383:187:o;2636:558::-;2767:6;2775;2828:2;2816:9;2807:7;2803:23;2799:32;2796:52;;;2844:1;2841;2834:12;2796:52;2883:9;2870:23;2902:31;2927:5;2902:31;:::i;:::-;2952:5;-1:-1:-1;3008:2:187;2993:18;;2980:32;3035:18;3024:30;;3021:50;;;3067:1;3064;3057:12;3021:50;3090:22;;3146:3;3128:16;;;3124:26;3121:46;;;3163:1;3160;3153:12;3121:46;3186:2;3176:12;;;2636:558;;;;;:::o;3199:456::-;3276:6;3284;3292;3345:2;3333:9;3324:7;3320:23;3316:32;3313:52;;;3361:1;3358;3351:12;3313:52;3400:9;3387:23;3419:31;3444:5;3419:31;:::i;:::-;3469:5;-1:-1:-1;3526:2:187;3511:18;;3498:32;3539:33;3498:32;3539:33;:::i;:::-;3199:456;;3591:7;;-1:-1:-1;;;3645:2:187;3630:18;;;;3617:32;;3199:456::o;3660:736::-;3764:6;3772;3780;3788;3796;3804;3857:3;3845:9;3836:7;3832:23;3828:33;3825:53;;;3874:1;3871;3864:12;3825:53;3913:9;3900:23;3932:31;3957:5;3932:31;:::i;:::-;3982:5;-1:-1:-1;4039:2:187;4024:18;;4011:32;4052:33;4011:32;4052:33;:::i;:::-;4104:7;-1:-1:-1;4163:2:187;4148:18;;4135:32;4176:33;4135:32;4176:33;:::i;:::-;3660:736;;;;-1:-1:-1;4228:7:187;;4282:2;4267:18;;4254:32;;-1:-1:-1;4333:3:187;4318:19;;4305:33;;4385:3;4370:19;;;4357:33;;-1:-1:-1;3660:736:187;-1:-1:-1;;3660:736:187:o;4798:180::-;4857:6;4910:2;4898:9;4889:7;4885:23;4881:32;4878:52;;;4926:1;4923;4916:12;4878:52;-1:-1:-1;4949:23:187;;4798:180;-1:-1:-1;4798:180:187:o;5213:525::-;5299:6;5307;5315;5323;5376:3;5364:9;5355:7;5351:23;5347:33;5344:53;;;5393:1;5390;5383:12;5344:53;5432:9;5419:23;5451:31;5476:5;5451:31;:::i;:::-;5501:5;-1:-1:-1;5558:2:187;5543:18;;5530:32;5571:33;5530:32;5571:33;:::i;:::-;5213:525;;5623:7;;-1:-1:-1;;;;5677:2:187;5662:18;;5649:32;;5728:2;5713:18;5700:32;;5213:525::o;5743:388::-;5811:6;5819;5872:2;5860:9;5851:7;5847:23;5843:32;5840:52;;;5888:1;5885;5878:12;5840:52;5927:9;5914:23;5946:31;5971:5;5946:31;:::i;:::-;5996:5;-1:-1:-1;6053:2:187;6038:18;;6025:32;6066:33;6025:32;6066:33;:::i;6136:248::-;6204:6;6212;6265:2;6253:9;6244:7;6240:23;6236:32;6233:52;;;6281:1;6278;6271:12;6233:52;-1:-1:-1;;6304:23:187;;;6374:2;6359:18;;;6346:32;;-1:-1:-1;6136:248:187:o;6389:380::-;6468:1;6464:12;;;;6511;;;6532:61;;6586:4;6578:6;6574:17;6564:27;;6532:61;6639:2;6631:6;6628:14;6608:18;6605:38;6602:161;;6685:10;6680:3;6676:20;6673:1;6666:31;6720:4;6717:1;6710:15;6748:4;6745:1;6738:15;6774:447;-1:-1:-1;;;;;7061:15:187;;;7043:34;;7113:15;;;;7108:2;7093:18;;7086:43;7160:2;7145:18;;7138:34;7203:2;7188:18;;7181:34;;;;6992:3;6977:19;;6774:447::o;7226:184::-;7296:6;7349:2;7337:9;7328:7;7324:23;7320:32;7317:52;;;7365:1;7362;7355:12;7317:52;-1:-1:-1;7388:16:187;;7226:184;-1:-1:-1;7226:184:187:o;7830:522::-;7908:4;7914:6;7974:11;7961:25;8068:2;8064:7;8053:8;8037:14;8033:29;8029:43;8009:18;8005:68;7995:96;;8087:1;8084;8077:12;7995:96;8114:33;;8166:20;;;-1:-1:-1;8209:18:187;8198:30;;8195:50;;;8241:1;8238;8231:12;8195:50;8274:4;8262:17;;-1:-1:-1;8305:14:187;8301:27;;;8291:38;;8288:58;;;8342:1;8339;8332:12;8288:58;7830:522;;;;;:::o;8357:269::-;8414:6;8467:2;8455:9;8446:7;8442:23;8438:32;8435:52;;;8483:1;8480;8473:12;8435:52;8522:9;8509:23;8572:4;8565:5;8561:16;8554:5;8551:27;8541:55;;8592:1;8589;8582:12;8631:251;8701:6;8754:2;8742:9;8733:7;8729:23;8725:32;8722:52;;;8770:1;8767;8760:12;8722:52;8802:9;8796:16;8821:31;8846:5;8821:31;:::i;9691:127::-;9752:10;9747:3;9743:20;9740:1;9733:31;9783:4;9780:1;9773:15;9807:4;9804:1;9797:15;9823:125;9888:9;;;9909:10;;;9906:36;;;9922:18;;:::i;11167:217::-;11207:1;11233;11223:132;;11277:10;11272:3;11268:20;11265:1;11258:31;11312:4;11309:1;11302:15;11340:4;11337:1;11330:15;11223:132;-1:-1:-1;11369:9:187;;11167:217::o;12376:168::-;12416:7;12482:1;12478;12474:6;12470:14;12467:1;12464:21;12459:1;12452:9;12445:17;12441:45;12438:71;;;12489:18;;:::i;:::-;-1:-1:-1;12529:9:187;;12376:168::o;12909:407::-;13111:2;13093:21;;;13150:2;13130:18;;;13123:30;13189:34;13184:2;13169:18;;13162:62;-1:-1:-1;;;13255:2:187;13240:18;;13233:41;13306:3;13291:19;;12909:407::o;13917:128::-;13984:9;;;14005:11;;;14002:37;;;14019:18;;:::i;14050:277::-;14117:6;14170:2;14158:9;14149:7;14145:23;14141:32;14138:52;;;14186:1;14183;14176:12;14138:52;14218:9;14212:16;14271:5;14264:13;14257:21;14250:5;14247:32;14237:60;;14293:1;14290;14283:12;15548:127;15609:10;15604:3;15600:20;15597:1;15590:31;15640:4;15637:1;15630:15;15664:4;15661:1;15654:15;15806:545;15908:2;15903:3;15900:11;15897:448;;;15944:1;15969:5;15965:2;15958:17;16014:4;16010:2;16000:19;16084:2;16072:10;16068:19;16065:1;16061:27;16055:4;16051:38;16120:4;16108:10;16105:20;16102:47;;;-1:-1:-1;16143:4:187;16102:47;16198:2;16193:3;16189:12;16186:1;16182:20;16176:4;16172:31;16162:41;;16253:82;16271:2;16264:5;16261:13;16253:82;;;16316:17;;;16297:1;16286:13;16253:82;;16527:1352;16653:3;16647:10;16680:18;16672:6;16669:30;16666:56;;;16702:18;;:::i;:::-;16731:97;16821:6;16781:38;16813:4;16807:11;16781:38;:::i;:::-;16775:4;16731:97;:::i;:::-;16883:4;;16947:2;16936:14;;16964:1;16959:663;;;;17666:1;17683:6;17680:89;;;-1:-1:-1;17735:19:187;;;17729:26;17680:89;-1:-1:-1;;16484:1:187;16480:11;;;16476:24;16472:29;16462:40;16508:1;16504:11;;;16459:57;17782:81;;16929:944;;16959:663;15753:1;15746:14;;;15790:4;15777:18;;-1:-1:-1;;16995:20:187;;;17113:236;17127:7;17124:1;17121:14;17113:236;;;17216:19;;;17210:26;17195:42;;17308:27;;;;17276:1;17264:14;;;;17143:19;;17113:236;;;17117:3;17377:6;17368:7;17365:19;17362:201;;;17438:19;;;17432:26;-1:-1:-1;;17521:1:187;17517:14;;;17533:3;17513:24;17509:37;17505:42;17490:58;17475:74;;17362:201;-1:-1:-1;;;;;17609:1:187;17593:14;;;17589:22;17576:36;;-1:-1:-1;16527:1352:187:o;19508:287::-;19637:3;19675:6;19669:13;19691:66;19750:6;19745:3;19738:4;19730:6;19726:17;19691:66;:::i;:::-;19773:16;;;;;19508:287;-1:-1:-1;;19508:287:187:o",
"linkReferences": {}
},
"methodIdentifiers": {
"POOL()": "7535d246",
"RESERVE_TREASURY_ADDRESS()": "ae167335",
"UNDERLYING_ASSET_ADDRESS()": "b16a19de",
"UNDERLYING_COLLATERAL_ADDRESS()": "57f1b837",
"UNDERLYING_MAX_TOKEN_ID()": "04601608",
"UNDERLYING_MIN_TOKEN_ID()": "c35be017",
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"burn(address,address,uint256,uint256)": "d7020d0a",
"decimals()": "313ce567",
"decreaseAllowance(address,uint256)": "a457c2d7",
"exchangeRate()": "3ba0b9a9",
"getAuctionCallerPercentage()": "f9e2bf6b",
"getAuctionCreatorPercentage()": "14ff75c9",
"getPoolIncentivesController()": "19ef9268",
"getReserveCreatorAddress()": "47bec6f0",
"getReserveCreatorPercentage()": "2d6aa128",
"getReserveNormalizationFactor()": "36a72234",
"getScaledUserBalanceAndSupply(address)": "0afbcdc9",
"increaseAllowance(address,uint256)": "39509351",
"initialize(address,(address,string,string,uint256,uint256,address,string,string,uint8,address,string,string,address,string,string,address,string,string,address,uint256,address,address,uint256,uint256,uint256,string))": "1d165564",
"mint(address,uint256,uint256)": "156e29f6",
"mintAuctionPaymentToStakeholders(address,address,address,uint256,uint256,uint256)": "30c1e38b",
"mintStableDebtRepaymentToStakeholders(address,uint256,uint256)": "679d0095",
"mintVariableDebtRepaymentToStakeholders(uint256,uint256)": "e8f7a1a5",
"name()": "06fdde03",
"scaledBalanceOf(address)": "1da24f3e",
"scaledTotalSupply()": "b1bf962d",
"setAuctionCallerPercentage(uint256)": "7ccd3b46",
"setAuctionCreatorPercentage(uint256)": "6b8465f8",
"setReserveCreatorAddress(address)": "bc1d19dd",
"setReserveCreatorPercentage(uint256)": "acac18e4",
"symbol()": "95d89b41",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd",
"transferUnderlyingTo(address,uint256)": "4efecaa5"
},
"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\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"BalanceTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"creatorAddress\",\"type\":\"uint256\"}],\"name\":\"CreatorAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"creatorPercentage\",\"type\":\"uint256\"}],\"name\":\"CreatorPecentageUpdated\",\"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\":\"lendingPool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"incentivesController\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"treasury\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"creatorPercentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"auctionCallerPercentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"auctionCreatorPercentage\",\"type\":\"uint256\"}],\"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\":\"RESERVE_TREASURY_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_ASSET_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_COLLATERAL_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_MAX_TOKEN_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNDERLYING_MIN_TOKEN_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":\"user\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiverOfUnderlying\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"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\":\"exchangeRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuctionCallerPercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuctionCreatorPercentage\",\"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\":\"getReserveCreatorAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserveCreatorPercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserveNormalizationFactor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":\"contract IAddressProvider\",\"name\":\"addressProvider\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"underlyingCollateral\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"underlyingCollateralName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"underlyingCollateralSymbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"underlyingMaxTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"underlyingMinTokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"underlyingAsset\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"underlyingAssetName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"underlyingAssetSymbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"underlyingAssetDecimals\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"fTokenImpl\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"fTokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"fTokenSymbol\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"stableDebtTokenImpl\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"stableDebtTokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"stableDebtTokenSymbol\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"variableDebtTokenImpl\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"variableDebtTokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"variableDebtTokenSymbol\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"interestRateStrategy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"baseLTV\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"treasury\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creatorPercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"auctionCallerPercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"auctionCreatorPercentage\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"assetPriceFeed\",\"type\":\"string\"}],\"internalType\":\"struct ConfigTypes.InitReserveInput\",\"name\":\"input\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"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\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidationFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"mintAuctionPaymentToStakeholders\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"mintStableDebtRepaymentToStakeholders\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"mintVariableDebtRepaymentToStakeholders\",\"outputs\":[],\"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\":[{\"internalType\":\"uint256\",\"name\":\"auctionCallerPercentage\",\"type\":\"uint256\"}],\"name\":\"setAuctionCallerPercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"auctionCreatorPercentage\",\"type\":\"uint256\"}],\"name\":\"setAuctionCreatorPercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"}],\"name\":\"setReserveCreatorAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"creatorPercentage\",\"type\":\"uint256\"}],\"name\":\"setReserveCreatorPercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferUnderlyingTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"FluidNFT \",\"details\":\"Implementation of the interest bearing token for the FluidNFT protocol\",\"kind\":\"dev\",\"methods\":{\"POOL()\":{\"details\":\"Returns the lending pool where this fToken is used*\"},\"RESERVE_TREASURY_ADDRESS()\":{\"details\":\"Returns the address of the FluidNFT treasury, receiving the fees on this fToken*\"},\"UNDERLYING_ASSET_ADDRESS()\":{\"details\":\"Returns the address of the underlyingAsset of this fToken*\"},\"UNDERLYING_COLLATERAL_ADDRESS()\":{\"details\":\"Returns the address of the underlyingCollateral of this fToken*\"},\"UNDERLYING_MAX_TOKEN_ID()\":{\"details\":\"Returns the tokenId of the underlyingMaxTokenId of this fToken*\"},\"UNDERLYING_MIN_TOKEN_ID()\":{\"details\":\"Returns the tokenId of the underlyingMinTokenId of this fToken*\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Calculates the balance of the user: principal balance + interest generated by the principal\",\"params\":{\"user\":\"The user whose balance is calculated\"},\"returns\":{\"_0\":\"The balance of the user*\"}},\"burn(address,address,uint256,uint256)\":{\"details\":\"Burns fTokens from `user` and sends the equivalent amount of underlying to `receiverOfUnderlying` - Only callable by the LendingPool, as extra state updates there need to be managed\",\"params\":{\"amount\":\"The amount being burned\",\"index\":\"The new liquidity index of the reserve*\",\"receiverOfUnderlying\":\"The address that will receive the underlying\",\"user\":\"The owner of the fTokens, getting them 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`.\"},\"exchangeRate()\":{\"details\":\"Returns the fTOKEN : underlyingASSET exchange rate\",\"returns\":{\"_0\":\"the exchange rate*\"}},\"getPoolIncentivesController()\":{\"details\":\"Returns the address of the incentives controller contract*\"},\"getScaledUserBalanceAndSupply(address)\":{\"details\":\"Returns the scaled balance of the user and the scaled total supply.\",\"params\":{\"user\":\"The address of the user\"},\"returns\":{\"_0\":\"The scaled balance of the user\",\"_1\":\"The scaled balance and the scaled 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,string,string,uint256,uint256,address,string,string,uint8,address,string,string,address,string,string,address,string,string,address,uint256,address,address,uint256,uint256,uint256,string))\":{\"details\":\"Initializes the fToken\",\"params\":{\"input\":\"The reserve input\"}},\"mint(address,uint256,uint256)\":{\"details\":\"Mints `amount` fTokens to `user` - Only callable by the LendingPool, as extra state updates there need to be managed\",\"params\":{\"amount\":\"The amount of tokens getting minted\",\"index\":\"The new liquidity index of the reserve\",\"user\":\"The address receiving the minted tokens\"},\"returns\":{\"_0\":\"`true` if the the previous balance of the user was 0\"}},\"mintVariableDebtRepaymentToStakeholders(uint256,uint256)\":{\"details\":\"Mints fTokens to the stakeholders - Only callable by the LendingPool\",\"params\":{\"amount\":\"The amount of tokens getting minted\",\"index\":\"The new liquidity index of the reserve\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"scaledBalanceOf(address)\":{\"details\":\"Returns the scaled balance of the user. The scaled balance is the sum of all the updated stored balance divided by the reserve's liquidity index at the moment of the update\",\"params\":{\"user\":\"The user whose balance is calculated\"},\"returns\":{\"_0\":\"The scaled balance of the user*\"}},\"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\":\"Calculates the total supply of the specific fToken Since the balance of every single user increases over time, the total supply does that too.\",\"returns\":{\"_0\":\"the current total supply*\"}},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"},\"transferUnderlyingTo(address,uint256)\":{\"details\":\"Transfers the underlying asset to `target`. Used by the LendingPool to transfer assets in borrow(), withdraw() and flashLoan()\",\"params\":{\"amount\":\"The amount getting transferred\",\"target\":\"The recipient of the fTokens\"},\"returns\":{\"_0\":\"The amount transferred*\"}}},\"title\":\"FluidNFT ERC20 FToken\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/protocol/tokenization/FToken.sol\":\"FToken\"},\"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/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol\":{\"keccak256\":\"0xcc70d8e2281fb3ff69e8ab242500f10142cd0a7fa8dd9e45882be270d4d09024\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://17a4063bc918df0f7bb9cbf04c6f0bb4977afab3f2fc212bc138a178312a221d\",\"dweb:/ipfs/QmZMdvsHP5mDEAAdrK4bNeNh47TfmSFgN9qEBFTbie7zmm\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol\":{\"keccak256\":\"0x220c4a5af915e656be2aaa85ca57505d102418e476b1e2ef6c62e0c6ac143871\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ed2c33173f7e7000889abed7c339b7a0e3b7867cdea546caaf6bc917ef1039c\",\"dweb:/ipfs/QmQ4Ye5h7jm6V4CdhT3r6hvf25DtiV74ErppQVE4SpRKj6\"]},\"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/IConfigurator.sol\":{\"keccak256\":\"0x39a8045982269f806b611033dc74b844a26faa5376dabe26a8e0eaeb2b457ed2\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://2e61c2b8df0daed7e900d2dcd89ae94a8a60d1b5551038d46726bf2c195102c8\",\"dweb:/ipfs/QmPwJzTcem2d72YbmySWJXLnHazpWQqmpXmnmmGZsT1Cwg\"]},\"src/interfaces/IFToken.sol\":{\"keccak256\":\"0x4c3ebc83c05720c9257d1b6b4930b647c08ba766b76928622a4c91c4a541a718\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://920cb41d52a659b88030fc3cf84fe5a87cc42f0c6e5c83a691c4732f84906689\",\"dweb:/ipfs/Qma657T4np5eBNono5yBXxE71jfT1TRDDkCPpH3kfw3SxM\"]},\"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/protocol/libraries/helpers/Errors.sol\":{\"keccak256\":\"0x490e76871922e89a13ba0bb88977be18c143fa9d0cd9afb033744a3d81479c52\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://1c409d4d1e1689d8d8f3c3e361198d20f3b6476608c5316d8e2d91f52373e8e3\",\"dweb:/ipfs/QmRZaYpxqjmBpbxb51KqswKYPSeCsU3ejbmk5E3MrMxJaM\"]},\"src/protocol/libraries/math/PercentageMath.sol\":{\"keccak256\":\"0xb84274fc3effba81036256cf7fde67b3dbfe86c4ffd0e062711a3270157952a2\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://3ecaf26e713b39d89ee21fb8bfefe55fe2fec4a2f5a2bffba7612f82182b7262\",\"dweb:/ipfs/QmZ6oXpNspwBEkiJEz1EhsU4EVBpG3anNjtzcycNEgAkfe\"]},\"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/FToken.sol\":{\"keccak256\":\"0xeb545a5da5b407255a2727e47fba1fb926ef49700d932c3a98730e952c8d413e\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://d60cb6136fdf721632ca1244ce99c402d40b670e3b6d844f03452bdd96e00ce0\",\"dweb:/ipfs/QmaNdee5q68QcCr1qrPyakaeibQiKvLH2VSH7ZrxUe8gqi\"]},\"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": "from",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "to",
"type": "address",
"indexed": true
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256",
"indexed": false
},
{
"internalType": "uint256",
"name": "index",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "BalanceTransfer",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "target",
"type": "address",
"indexed": true
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256",
"indexed": false
},
{
"internalType": "uint256",
"name": "index",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "Burn",
"anonymous": false
},
{
"inputs": [
{
"internalType": "uint256",
"name": "creatorAddress",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "CreatorAddressUpdated",
"anonymous": false
},
{
"inputs": [
{
"internalType": "uint256",
"name": "creatorPercentage",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "CreatorPecentageUpdated",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address",
"name": "underlyingCollateral",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "underlyingAsset",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "lendingPool",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "incentivesController",
"type": "address",
"indexed": false
},
{
"internalType": "address",
"name": "treasury",
"type": "address",
"indexed": false
},
{
"internalType": "address",
"name": "creator",
"type": "address",
"indexed": false
},
{
"internalType": "uint256",
"name": "creatorPercentage",
"type": "uint256",
"indexed": false
},
{
"internalType": "uint256",
"name": "auctionCallerPercentage",
"type": "uint256",
"indexed": false
},
{
"internalType": "uint256",
"name": "auctionCreatorPercentage",
"type": "uint256",
"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": "RESERVE_TREASURY_ADDRESS",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "UNDERLYING_ASSET_ADDRESS",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "UNDERLYING_COLLATERAL_ADDRESS",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "UNDERLYING_MAX_TOKEN_ID",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "UNDERLYING_MIN_TOKEN_ID",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"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": "user",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "address",
"name": "receiverOfUnderlying",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "index",
"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": "exchangeRate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "getAuctionCallerPercentage",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "getAuctionCreatorPercentage",
"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": "getReserveCreatorAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "getReserveCreatorPercentage",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "getReserveNormalizationFactor",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"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": "contract IAddressProvider",
"name": "addressProvider",
"type": "address"
},
{
"internalType": "struct ConfigTypes.InitReserveInput",
"name": "input",
"type": "tuple",
"components": [
{
"internalType": "address",
"name": "underlyingCollateral",
"type": "address"
},
{
"internalType": "string",
"name": "underlyingCollateralName",
"type": "string"
},
{
"internalType": "string",
"name": "underlyingCollateralSymbol",
"type": "string"
},
{
"internalType": "uint256",
"name": "underlyingMaxTokenId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "underlyingMinTokenId",
"type": "uint256"
},
{
"internalType": "address",
"name": "underlyingAsset",
"type": "address"
},
{
"internalType": "string",
"name": "underlyingAssetName",
"type": "string"
},
{
"internalType": "string",
"name": "underlyingAssetSymbol",
"type": "string"
},
{
"internalType": "uint8",
"name": "underlyingAssetDecimals",
"type": "uint8"
},
{
"internalType": "address",
"name": "fTokenImpl",
"type": "address"
},
{
"internalType": "string",
"name": "fTokenName",
"type": "string"
},
{
"internalType": "string",
"name": "fTokenSymbol",
"type": "string"
},
{
"internalType": "address",
"name": "stableDebtTokenImpl",
"type": "address"
},
{
"internalType": "string",
"name": "stableDebtTokenName",
"type": "string"
},
{
"internalType": "string",
"name": "stableDebtTokenSymbol",
"type": "string"
},
{
"internalType": "address",
"name": "variableDebtTokenImpl",
"type": "address"
},
{
"internalType": "string",
"name": "variableDebtTokenName",
"type": "string"
},
{
"internalType": "string",
"name": "variableDebtTokenSymbol",
"type": "string"
},
{
"internalType": "address",
"name": "interestRateStrategy",
"type": "address"
},
{
"internalType": "uint256",
"name": "baseLTV",
"type": "uint256"
},
{
"internalType": "address",
"name": "treasury",
"type": "address"
},
{
"internalType": "address",
"name": "creator",
"type": "address"
},
{
"internalType": "uint256",
"name": "creatorPercentage",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "auctionCallerPercentage",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "auctionCreatorPercentage",
"type": "uint256"
},
{
"internalType": "string",
"name": "assetPriceFeed",
"type": "string"
}
]
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "initialize"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"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": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "liquidationFee",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "mintAuctionPaymentToStakeholders"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "mintStableDebtRepaymentToStakeholders"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "mintVariableDebtRepaymentToStakeholders"
},
{
"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": [
{
"internalType": "uint256",
"name": "auctionCallerPercentage",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "setAuctionCallerPercentage"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "auctionCreatorPercentage",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "setAuctionCreatorPercentage"
},
{
"inputs": [
{
"internalType": "address",
"name": "creator",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "setReserveCreatorAddress"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "creatorPercentage",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "setReserveCreatorPercentage"
},
{
"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": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "transferUnderlyingTo",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
}
],
"devdoc": {
"kind": "dev",
"methods": {
"POOL()": {
"details": "Returns the lending pool where this fToken is used*"
},
"RESERVE_TREASURY_ADDRESS()": {
"details": "Returns the address of the FluidNFT treasury, receiving the fees on this fToken*"
},
"UNDERLYING_ASSET_ADDRESS()": {
"details": "Returns the address of the underlyingAsset of this fToken*"
},
"UNDERLYING_COLLATERAL_ADDRESS()": {
"details": "Returns the address of the underlyingCollateral of this fToken*"
},
"UNDERLYING_MAX_TOKEN_ID()": {
"details": "Returns the tokenId of the underlyingMaxTokenId of this fToken*"
},
"UNDERLYING_MIN_TOKEN_ID()": {
"details": "Returns the tokenId of the underlyingMinTokenId of this fToken*"
},
"allowance(address,address)": {
"details": "See {IERC20-allowance}."
},
"approve(address,uint256)": {
"details": "See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."
},
"balanceOf(address)": {
"details": "Calculates the balance of the user: principal balance + interest generated by the principal",
"params": {
"user": "The user whose balance is calculated"
},
"returns": {
"_0": "The balance of the user*"
}
},
"burn(address,address,uint256,uint256)": {
"details": "Burns fTokens from `user` and sends the equivalent amount of underlying to `receiverOfUnderlying` - Only callable by the LendingPool, as extra state updates there need to be managed",
"params": {
"amount": "The amount being burned",
"index": "The new liquidity index of the reserve*",
"receiverOfUnderlying": "The address that will receive the underlying",
"user": "The owner of the fTokens, getting them 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`."
},
"exchangeRate()": {
"details": "Returns the fTOKEN : underlyingASSET exchange rate",
"returns": {
"_0": "the exchange rate*"
}
},
"getPoolIncentivesController()": {
"details": "Returns the address of the incentives controller contract*"
},
"getScaledUserBalanceAndSupply(address)": {
"details": "Returns the scaled balance of the user and the scaled total supply.",
"params": {
"user": "The address of the user"
},
"returns": {
"_0": "The scaled balance of the user",
"_1": "The scaled balance and the scaled 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,string,string,uint256,uint256,address,string,string,uint8,address,string,string,address,string,string,address,string,string,address,uint256,address,address,uint256,uint256,uint256,string))": {
"details": "Initializes the fToken",
"params": {
"input": "The reserve input"
}
},
"mint(address,uint256,uint256)": {
"details": "Mints `amount` fTokens to `user` - Only callable by the LendingPool, as extra state updates there need to be managed",
"params": {
"amount": "The amount of tokens getting minted",
"index": "The new liquidity index of the reserve",
"user": "The address receiving the minted tokens"
},
"returns": {
"_0": "`true` if the the previous balance of the user was 0"
}
},
"mintVariableDebtRepaymentToStakeholders(uint256,uint256)": {
"details": "Mints fTokens to the stakeholders - Only callable by the LendingPool",
"params": {
"amount": "The amount of tokens getting minted",
"index": "The new liquidity index of the reserve"
}
},
"name()": {
"details": "Returns the name of the token."
},
"scaledBalanceOf(address)": {
"details": "Returns the scaled balance of the user. The scaled balance is the sum of all the updated stored balance divided by the reserve's liquidity index at the moment of the update",
"params": {
"user": "The user whose balance is calculated"
},
"returns": {
"_0": "The scaled balance of the user*"
}
},
"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": "Calculates the total supply of the specific fToken Since the balance of every single user increases over time, the total supply does that too.",
"returns": {
"_0": "the current total supply*"
}
},
"transfer(address,uint256)": {
"details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."
},
"transferFrom(address,address,uint256)": {
"details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."
},
"transferUnderlyingTo(address,uint256)": {
"details": "Transfers the underlying asset to `target`. Used by the LendingPool to transfer assets in borrow(), withdraw() and flashLoan()",
"params": {
"amount": "The amount getting transferred",
"target": "The recipient of the fTokens"
},
"returns": {
"_0": "The amount transferred*"
}
}
},
"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/FToken.sol": "FToken"
},
"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/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol": {
"keccak256": "0xcc70d8e2281fb3ff69e8ab242500f10142cd0a7fa8dd9e45882be270d4d09024",
"urls": [
"bzz-raw://17a4063bc918df0f7bb9cbf04c6f0bb4977afab3f2fc212bc138a178312a221d",
"dweb:/ipfs/QmZMdvsHP5mDEAAdrK4bNeNh47TfmSFgN9qEBFTbie7zmm"
],
"license": "MIT"
},
"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol": {
"keccak256": "0x220c4a5af915e656be2aaa85ca57505d102418e476b1e2ef6c62e0c6ac143871",
"urls": [
"bzz-raw://6ed2c33173f7e7000889abed7c339b7a0e3b7867cdea546caaf6bc917ef1039c",
"dweb:/ipfs/QmQ4Ye5h7jm6V4CdhT3r6hvf25DtiV74ErppQVE4SpRKj6"
],
"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/IConfigurator.sol": {
"keccak256": "0x39a8045982269f806b611033dc74b844a26faa5376dabe26a8e0eaeb2b457ed2",
"urls": [
"bzz-raw://2e61c2b8df0daed7e900d2dcd89ae94a8a60d1b5551038d46726bf2c195102c8",
"dweb:/ipfs/QmPwJzTcem2d72YbmySWJXLnHazpWQqmpXmnmmGZsT1Cwg"
],
"license": "AGPL-3.0"
},
"src/interfaces/IFToken.sol": {
"keccak256": "0x4c3ebc83c05720c9257d1b6b4930b647c08ba766b76928622a4c91c4a541a718",
"urls": [
"bzz-raw://920cb41d52a659b88030fc3cf84fe5a87cc42f0c6e5c83a691c4732f84906689",
"dweb:/ipfs/Qma657T4np5eBNono5yBXxE71jfT1TRDDkCPpH3kfw3SxM"
],
"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/protocol/libraries/helpers/Errors.sol": {
"keccak256": "0x490e76871922e89a13ba0bb88977be18c143fa9d0cd9afb033744a3d81479c52",
"urls": [
"bzz-raw://1c409d4d1e1689d8d8f3c3e361198d20f3b6476608c5316d8e2d91f52373e8e3",
"dweb:/ipfs/QmRZaYpxqjmBpbxb51KqswKYPSeCsU3ejbmk5E3MrMxJaM"
],
"license": "AGPL-3.0"
},
"src/protocol/libraries/math/PercentageMath.sol": {
"keccak256": "0xb84274fc3effba81036256cf7fde67b3dbfe86c4ffd0e062711a3270157952a2",
"urls": [
"bzz-raw://3ecaf26e713b39d89ee21fb8bfefe55fe2fec4a2f5a2bffba7612f82182b7262",
"dweb:/ipfs/QmZ6oXpNspwBEkiJEz1EhsU4EVBpG3anNjtzcycNEgAkfe"
],
"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/FToken.sol": {
"keccak256": "0xeb545a5da5b407255a2727e47fba1fb926ef49700d932c3a98730e952c8d413e",
"urls": [
"bzz-raw://d60cb6136fdf721632ca1244ce99c402d40b670e3b6d844f03452bdd96e00ce0",
"dweb:/ipfs/QmaNdee5q68QcCr1qrPyakaeibQiKvLH2VSH7ZrxUe8gqi"
],
"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/FToken.sol",
"id": 70241,
"exportedSymbols": {
"ConfigTypes": [
64693
],
"ERC20Upgradeable": [
27111
],
"Errors": [
57944
],
"FToken": [
70240
],
"IAddressProvider": [
46447
],
"IConfigurator": [
47089
],
"IERC20Upgradeable": [
27189
],
"IFToken": [
47449
],
"ILendingPool": [
48084
],
"IPoolIncentivesController": [
48421
],
"IncentivizedERC20": [
72276
],
"Initializable": [
26136
],
"PercentageMath": [
64257
],
"SafeERC20Upgradeable": [
27531
],
"WadRayMath": [
64503
]
},
"nodeType": "SourceUnit",
"src": "37:23307:158",
"nodes": [
{
"id": 69110,
"nodeType": "PragmaDirective",
"src": "37:23:158",
"nodes": [],
"literals": [
"solidity",
"0.8",
".16"
]
},
{
"id": 69112,
"nodeType": "ImportDirective",
"src": "62:73:158",
"nodes": [],
"absolutePath": "src/interfaces/IAddressProvider.sol",
"file": "../../interfaces/IAddressProvider.sol",
"nameLocation": "-1:-1:-1",
"scope": 70241,
"sourceUnit": 46448,
"symbolAliases": [
{
"foreign": {
"id": 69111,
"name": "IAddressProvider",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 46447,
"src": "71:16:158",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 69114,
"nodeType": "ImportDirective",
"src": "136:65:158",
"nodes": [],
"absolutePath": "src/interfaces/ILendingPool.sol",
"file": "../../interfaces/ILendingPool.sol",
"nameLocation": "-1:-1:-1",
"scope": 70241,
"sourceUnit": 48085,
"symbolAliases": [
{
"foreign": {
"id": 69113,
"name": "ILendingPool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48084,
"src": "145:12:158",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 69116,
"nodeType": "ImportDirective",
"src": "202:67:158",
"nodes": [],
"absolutePath": "src/interfaces/IConfigurator.sol",
"file": "../../interfaces/IConfigurator.sol",
"nameLocation": "-1:-1:-1",
"scope": 70241,
"sourceUnit": 47090,
"symbolAliases": [
{
"foreign": {
"id": 69115,
"name": "IConfigurator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47089,
"src": "211:13:158",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 69118,
"nodeType": "ImportDirective",
"src": "270:55:158",
"nodes": [],
"absolutePath": "src/interfaces/IFToken.sol",
"file": "../../interfaces/IFToken.sol",
"nameLocation": "-1:-1:-1",
"scope": 70241,
"sourceUnit": 47450,
"symbolAliases": [
{
"foreign": {
"id": 69117,
"name": "IFToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47449,
"src": "279:7:158",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 69120,
"nodeType": "ImportDirective",
"src": "326:91:158",
"nodes": [],
"absolutePath": "src/interfaces/IPoolIncentivesController.sol",
"file": "../../interfaces/IPoolIncentivesController.sol",
"nameLocation": "-1:-1:-1",
"scope": 70241,
"sourceUnit": 48422,
"symbolAliases": [
{
"foreign": {
"id": 69119,
"name": "IPoolIncentivesController",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48421,
"src": "335:25:158",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 69122,
"nodeType": "ImportDirective",
"src": "418:65:158",
"nodes": [],
"absolutePath": "src/protocol/tokenization/base/IncentivizedERC20.sol",
"file": "./base/IncentivizedERC20.sol",
"nameLocation": "-1:-1:-1",
"scope": 70241,
"sourceUnit": 72277,
"symbolAliases": [
{
"foreign": {
"id": 69121,
"name": "IncentivizedERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 72276,
"src": "427:17:158",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 69124,
"nodeType": "ImportDirective",
"src": "485:65:158",
"nodes": [],
"absolutePath": "src/protocol/libraries/types/ConfigTypes.sol",
"file": "../libraries/types/ConfigTypes.sol",
"nameLocation": "-1:-1:-1",
"scope": 70241,
"sourceUnit": 64694,
"symbolAliases": [
{
"foreign": {
"id": 69123,
"name": "ConfigTypes",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 64693,
"src": "494:11:158",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 69126,
"nodeType": "ImportDirective",
"src": "551:70:158",
"nodes": [],
"absolutePath": "src/protocol/libraries/math/PercentageMath.sol",
"file": "../libraries/math/PercentageMath.sol",
"nameLocation": "-1:-1:-1",
"scope": 70241,
"sourceUnit": 64258,
"symbolAliases": [
{
"foreign": {
"id": 69125,
"name": "PercentageMath",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 64257,
"src": "560:14:158",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 69128,
"nodeType": "ImportDirective",
"src": "622:62:158",
"nodes": [],
"absolutePath": "src/protocol/libraries/math/WadRayMath.sol",
"file": "../libraries/math/WadRayMath.sol",
"nameLocation": "-1:-1:-1",
"scope": 70241,
"sourceUnit": 64504,
"symbolAliases": [
{
"foreign": {
"id": 69127,
"name": "WadRayMath",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 64503,
"src": "631:10:158",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 69130,
"nodeType": "ImportDirective",
"src": "685:57:158",
"nodes": [],
"absolutePath": "src/protocol/libraries/helpers/Errors.sol",
"file": "../libraries/helpers/Errors.sol",
"nameLocation": "-1:-1:-1",
"scope": 70241,
"sourceUnit": 57945,
"symbolAliases": [
{
"foreign": {
"id": 69129,
"name": "Errors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 57944,
"src": "694:6:158",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 69132,
"nodeType": "ImportDirective",
"src": "744:106:158",
"nodes": [],
"absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol",
"file": "@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol",
"nameLocation": "-1:-1:-1",
"scope": 70241,
"sourceUnit": 27190,
"symbolAliases": [
{
"foreign": {
"id": 69131,
"name": "IERC20Upgradeable",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27189,
"src": "753:17:158",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 69134,
"nodeType": "ImportDirective",
"src": "851:118:158",
"nodes": [],
"absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol",
"file": "@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol",
"nameLocation": "-1:-1:-1",
"scope": 70241,
"sourceUnit": 27532,
"symbolAliases": [
{
"foreign": {
"id": 69133,
"name": "SafeERC20Upgradeable",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27531,
"src": "860:20:158",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 69136,
"nodeType": "ImportDirective",
"src": "970:104:158",
"nodes": [],
"absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol",
"file": "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol",
"nameLocation": "-1:-1:-1",
"scope": 70241,
"sourceUnit": 27112,
"symbolAliases": [
{
"foreign": {
"id": 69135,
"name": "ERC20Upgradeable",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27111,
"src": "979:16:158",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 69138,
"nodeType": "ImportDirective",
"src": "1075:98:158",
"nodes": [],
"absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol",
"file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
"nameLocation": "-1:-1:-1",
"scope": 70241,
"sourceUnit": 26137,
"symbolAliases": [
{
"foreign": {
"id": 69137,
"name": "Initializable",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26136,
"src": "1084:13:158",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 70240,
"nodeType": "ContractDefinition",
"src": "1311:22032:158",
"nodes": [
{
"id": 69148,
"nodeType": "UsingForDirective",
"src": "1378:29:158",
"nodes": [],
"global": false,
"libraryName": {
"id": 69146,
"name": "WadRayMath",
"nameLocations": [
"1384:10:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 64503,
"src": "1384:10:158"
},
"typeName": {
"id": 69147,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1399:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
{
"id": 69151,
"nodeType": "UsingForDirective",
"src": "1412:33:158",
"nodes": [],
"global": false,
"libraryName": {
"id": 69149,
"name": "PercentageMath",
"nameLocations": [
"1418:14:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 64257,
"src": "1418:14:158"
},
"typeName": {
"id": 69150,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1437:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
{
"id": 69155,
"nodeType": "UsingForDirective",
"src": "1450:49:158",
"nodes": [],
"global": false,
"libraryName": {
"id": 69152,
"name": "SafeERC20Upgradeable",
"nameLocations": [
"1456:20:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 27531,
"src": "1456:20:158"
},
"typeName": {
"id": 69154,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 69153,
"name": "IERC20Upgradeable",
"nameLocations": [
"1481:17:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 27189,
"src": "1481:17:158"
},
"referencedDeclaration": 27189,
"src": "1481:17:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Upgradeable_$27189",
"typeString": "contract IERC20Upgradeable"
}
}
},
{
"id": 69158,
"nodeType": "VariableDeclaration",
"src": "1505:42:158",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_addressProvider",
"nameLocation": "1531:16:158",
"scope": 70240,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
},
"typeName": {
"id": 69157,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 69156,
"name": "IAddressProvider",
"nameLocations": [
"1505:16:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 46447,
"src": "1505:16:158"
},
"referencedDeclaration": 46447,
"src": "1505:16:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
}
},
"visibility": "internal"
},
{
"id": 69160,
"nodeType": "VariableDeclaration",
"src": "1554:25:158",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_creator",
"nameLocation": "1571:8:158",
"scope": 70240,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69159,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1554:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"id": 69162,
"nodeType": "VariableDeclaration",
"src": "1585:26:158",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_treasury",
"nameLocation": "1602:9:158",
"scope": 70240,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69161,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1585:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"id": 69164,
"nodeType": "VariableDeclaration",
"src": "1617:38:158",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_underlyingCollateral",
"nameLocation": "1634:21:158",
"scope": 70240,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69163,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1617:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"id": 69166,
"nodeType": "VariableDeclaration",
"src": "1661:33:158",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_underlyingAsset",
"nameLocation": "1678:16:158",
"scope": 70240,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69165,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1661:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"id": 69168,
"nodeType": "VariableDeclaration",
"src": "1700:38:158",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_underlyingMaxTokenId",
"nameLocation": "1717:21:158",
"scope": 70240,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69167,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1700:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"id": 69170,
"nodeType": "VariableDeclaration",
"src": "1744:38:158",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_underlyingMinTokenId",
"nameLocation": "1761:21:158",
"scope": 70240,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69169,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1744:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"id": 69172,
"nodeType": "VariableDeclaration",
"src": "1788:35:158",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_creatorPercentage",
"nameLocation": "1805:18:158",
"scope": 70240,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69171,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1788:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"id": 69174,
"nodeType": "VariableDeclaration",
"src": "1829:41:158",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_auctionCallerPercentage",
"nameLocation": "1846:24:158",
"scope": 70240,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69173,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1829:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"id": 69176,
"nodeType": "VariableDeclaration",
"src": "1876:42:158",
"nodes": [],
"constant": false,
"mutability": "mutable",
"name": "_auctionCreatorPercentage",
"nameLocation": "1893:25:158",
"scope": 70240,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69175,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1876:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"id": 69193,
"nodeType": "ModifierDefinition",
"src": "1925:145:158",
"nodes": [],
"body": {
"id": 69192,
"nodeType": "Block",
"src": "1952:118:158",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 69186,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 69179,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 28973,
"src": "1970:10:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 69180,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1970:12:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 69183,
"name": "_getLendingPool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70047,
"src": "1994:15:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_ILendingPool_$48084_$",
"typeString": "function () view returns (contract ILendingPool)"
}
},
"id": 69184,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1994:17:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
],
"id": 69182,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1986:7:158",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 69181,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1986:7:158",
"typeDescriptions": {}
}
},
"id": 69185,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1986:26:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1970:42:158",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 69187,
"name": "Errors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 57944,
"src": "2014:6:158",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_Errors_$57944_$",
"typeString": "type(library Errors)"
}
},
"id": 69188,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "2021:30:158",
"memberName": "CT_CALLER_MUST_BE_LENDING_POOL",
"nodeType": "MemberAccess",
"referencedDeclaration": 57766,
"src": "2014:37:158",
"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": 69178,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1962:7:158",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 69189,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1962:90:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69190,
"nodeType": "ExpressionStatement",
"src": "1962:90:158"
},
{
"id": 69191,
"nodeType": "PlaceholderStatement",
"src": "2062:1:158"
}
]
},
"name": "onlyLendingPool",
"nameLocation": "1934:15:158",
"parameters": {
"id": 69177,
"nodeType": "ParameterList",
"parameters": [],
"src": "1949:2:158"
},
"virtual": false,
"visibility": "internal"
},
{
"id": 69201,
"nodeType": "FunctionDefinition",
"src": "2129:53:158",
"nodes": [],
"body": {
"id": 69200,
"nodeType": "Block",
"src": "2143:39:158",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 69197,
"name": "_disableInitializers",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26117,
"src": "2153:20:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
"typeString": "function ()"
}
},
"id": 69198,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2153:22:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69199,
"nodeType": "ExpressionStatement",
"src": "2153:22:158"
}
]
},
"documentation": {
"id": 69194,
"nodeType": "StructuredDocumentation",
"src": "2076:48:158",
"text": "@custom:oz-upgrades-unsafe-allow constructor"
},
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nameLocation": "-1:-1:-1",
"parameters": {
"id": 69195,
"nodeType": "ParameterList",
"parameters": [],
"src": "2140:2:158"
},
"returnParameters": {
"id": 69196,
"nodeType": "ParameterList",
"parameters": [],
"src": "2143:0:158"
},
"scope": 70240,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"id": 69289,
"nodeType": "FunctionDefinition",
"src": "2274:1186:158",
"nodes": [],
"body": {
"id": 69288,
"nodeType": "Block",
"src": "2453:1007:158",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"expression": {
"id": 69215,
"name": "input",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69208,
"src": "2488:5:158",
"typeDescriptions": {
"typeIdentifier": "t_struct$_InitReserveInput_$64606_calldata_ptr",
"typeString": "struct ConfigTypes.InitReserveInput calldata"
}
},
"id": 69216,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2494:10:158",
"memberName": "fTokenName",
"nodeType": "MemberAccess",
"referencedDeclaration": 64575,
"src": "2488:16:158",
"typeDescriptions": {
"typeIdentifier": "t_string_calldata_ptr",
"typeString": "string calldata"
}
},
{
"expression": {
"id": 69217,
"name": "input",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69208,
"src": "2506:5:158",
"typeDescriptions": {
"typeIdentifier": "t_struct$_InitReserveInput_$64606_calldata_ptr",
"typeString": "struct ConfigTypes.InitReserveInput calldata"
}
},
"id": 69218,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2512:12:158",
"memberName": "fTokenSymbol",
"nodeType": "MemberAccess",
"referencedDeclaration": 64577,
"src": "2506:18:158",
"typeDescriptions": {
"typeIdentifier": "t_string_calldata_ptr",
"typeString": "string calldata"
}
},
{
"expression": {
"id": 69219,
"name": "input",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69208,
"src": "2526:5:158",
"typeDescriptions": {
"typeIdentifier": "t_struct$_InitReserveInput_$64606_calldata_ptr",
"typeString": "struct ConfigTypes.InitReserveInput calldata"
}
},
"id": 69220,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2532:23:158",
"memberName": "underlyingAssetDecimals",
"nodeType": "MemberAccess",
"referencedDeclaration": 64571,
"src": "2526:29:158",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_calldata_ptr",
"typeString": "string calldata"
},
{
"typeIdentifier": "t_string_calldata_ptr",
"typeString": "string calldata"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 69214,
"name": "__IncentivizedERC20_init",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 72081,
"src": "2463:24:158",
"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": 69221,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2463:93:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69222,
"nodeType": "ExpressionStatement",
"src": "2463:93:158"
},
{
"expression": {
"id": 69226,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 69223,
"name": "_treasury",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69162,
"src": "2567:9:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"expression": {
"id": 69224,
"name": "input",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69208,
"src": "2579:5:158",
"typeDescriptions": {
"typeIdentifier": "t_struct$_InitReserveInput_$64606_calldata_ptr",
"typeString": "struct ConfigTypes.InitReserveInput calldata"
}
},
"id": 69225,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2585:8:158",
"memberName": "treasury",
"nodeType": "MemberAccess",
"referencedDeclaration": 64595,
"src": "2579:14:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2567:26:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 69227,
"nodeType": "ExpressionStatement",
"src": "2567:26:158"
},
{
"expression": {
"id": 69231,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 69228,
"name": "_creator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69160,
"src": "2603:8:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"expression": {
"id": 69229,
"name": "input",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69208,
"src": "2614:5:158",
"typeDescriptions": {
"typeIdentifier": "t_struct$_InitReserveInput_$64606_calldata_ptr",
"typeString": "struct ConfigTypes.InitReserveInput calldata"
}
},
"id": 69230,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2620:7:158",
"memberName": "creator",
"nodeType": "MemberAccess",
"referencedDeclaration": 64597,
"src": "2614:13:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2603:24:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 69232,
"nodeType": "ExpressionStatement",
"src": "2603:24:158"
},
{
"expression": {
"id": 69236,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 69233,
"name": "_creatorPercentage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69172,
"src": "2637:18:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"expression": {
"id": 69234,
"name": "input",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69208,
"src": "2658:5:158",
"typeDescriptions": {
"typeIdentifier": "t_struct$_InitReserveInput_$64606_calldata_ptr",
"typeString": "struct ConfigTypes.InitReserveInput calldata"
}
},
"id": 69235,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2664:17:158",
"memberName": "creatorPercentage",
"nodeType": "MemberAccess",
"referencedDeclaration": 64599,
"src": "2658:23:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2637:44:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 69237,
"nodeType": "ExpressionStatement",
"src": "2637:44:158"
},
{
"expression": {
"id": 69241,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 69238,
"name": "_auctionCallerPercentage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69174,
"src": "2691:24:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"expression": {
"id": 69239,
"name": "input",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69208,
"src": "2718:5:158",
"typeDescriptions": {
"typeIdentifier": "t_struct$_InitReserveInput_$64606_calldata_ptr",
"typeString": "struct ConfigTypes.InitReserveInput calldata"
}
},
"id": 69240,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2724:23:158",
"memberName": "auctionCallerPercentage",
"nodeType": "MemberAccess",
"referencedDeclaration": 64601,
"src": "2718:29:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2691:56:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 69242,
"nodeType": "ExpressionStatement",
"src": "2691:56:158"
},
{
"expression": {
"id": 69246,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 69243,
"name": "_auctionCreatorPercentage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69176,
"src": "2757:25:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"expression": {
"id": 69244,
"name": "input",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69208,
"src": "2785:5:158",
"typeDescriptions": {
"typeIdentifier": "t_struct$_InitReserveInput_$64606_calldata_ptr",
"typeString": "struct ConfigTypes.InitReserveInput calldata"
}
},
"id": 69245,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2791:24:158",
"memberName": "auctionCreatorPercentage",
"nodeType": "MemberAccess",
"referencedDeclaration": 64603,
"src": "2785:30:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2757:58:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 69247,
"nodeType": "ExpressionStatement",
"src": "2757:58:158"
},
{
"expression": {
"id": 69251,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 69248,
"name": "_underlyingAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69166,
"src": "2825:16:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"expression": {
"id": 69249,
"name": "input",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69208,
"src": "2844:5:158",
"typeDescriptions": {
"typeIdentifier": "t_struct$_InitReserveInput_$64606_calldata_ptr",
"typeString": "struct ConfigTypes.InitReserveInput calldata"
}
},
"id": 69250,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2850:15:158",
"memberName": "underlyingAsset",
"nodeType": "MemberAccess",
"referencedDeclaration": 64565,
"src": "2844:21:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2825:40:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 69252,
"nodeType": "ExpressionStatement",
"src": "2825:40:158"
},
{
"expression": {
"id": 69256,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 69253,
"name": "_underlyingCollateral",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69164,
"src": "2875:21:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"expression": {
"id": 69254,
"name": "input",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69208,
"src": "2899:5:158",
"typeDescriptions": {
"typeIdentifier": "t_struct$_InitReserveInput_$64606_calldata_ptr",
"typeString": "struct ConfigTypes.InitReserveInput calldata"
}
},
"id": 69255,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2905:20:158",
"memberName": "underlyingCollateral",
"nodeType": "MemberAccess",
"referencedDeclaration": 64555,
"src": "2899:26:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2875:50:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 69257,
"nodeType": "ExpressionStatement",
"src": "2875:50:158"
},
{
"expression": {
"id": 69261,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 69258,
"name": "_underlyingMaxTokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69168,
"src": "2935:21:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"expression": {
"id": 69259,
"name": "input",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69208,
"src": "2959:5:158",
"typeDescriptions": {
"typeIdentifier": "t_struct$_InitReserveInput_$64606_calldata_ptr",
"typeString": "struct ConfigTypes.InitReserveInput calldata"
}
},
"id": 69260,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2965:20:158",
"memberName": "underlyingMaxTokenId",
"nodeType": "MemberAccess",
"referencedDeclaration": 64561,
"src": "2959:26:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2935:50:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 69262,
"nodeType": "ExpressionStatement",
"src": "2935:50:158"
},
{
"expression": {
"id": 69266,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 69263,
"name": "_underlyingMinTokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69170,
"src": "2995:21:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"expression": {
"id": 69264,
"name": "input",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69208,
"src": "3019:5:158",
"typeDescriptions": {
"typeIdentifier": "t_struct$_InitReserveInput_$64606_calldata_ptr",
"typeString": "struct ConfigTypes.InitReserveInput calldata"
}
},
"id": 69265,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "3025:20:158",
"memberName": "underlyingMinTokenId",
"nodeType": "MemberAccess",
"referencedDeclaration": 64563,
"src": "3019:26:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2995:50:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 69267,
"nodeType": "ExpressionStatement",
"src": "2995:50:158"
},
{
"expression": {
"id": 69270,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 69268,
"name": "_addressProvider",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69158,
"src": "3055:16:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 69269,
"name": "addressProvider",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69205,
"src": "3074:15:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
}
},
"src": "3055:34:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
}
},
"id": 69271,
"nodeType": "ExpressionStatement",
"src": "3055:34:158"
},
{
"eventCall": {
"arguments": [
{
"id": 69273,
"name": "_underlyingCollateral",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69164,
"src": "3131:21:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69274,
"name": "_underlyingAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69166,
"src": "3166:16:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 69275,
"name": "_addressProvider",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69158,
"src": "3196:16:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
}
},
"id": 69276,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "3213:14:158",
"memberName": "getLendingPool",
"nodeType": "MemberAccess",
"referencedDeclaration": 46256,
"src": "3196:31:158",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
"typeString": "function () view external returns (address)"
}
},
"id": 69277,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3196:33:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 69278,
"name": "_addressProvider",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69158,
"src": "3243:16:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
}
},
"id": 69279,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "3260:27:158",
"memberName": "getPoolIncentivesController",
"nodeType": "MemberAccess",
"referencedDeclaration": 46361,
"src": "3243:44:158",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
"typeString": "function () view external returns (address)"
}
},
"id": 69280,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3243:46:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69281,
"name": "_treasury",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69162,
"src": "3303:9:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69282,
"name": "_creator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69160,
"src": "3326:8:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69283,
"name": "_creatorPercentage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69172,
"src": "3348:18:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 69284,
"name": "_auctionCallerPercentage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69174,
"src": "3380:24:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 69285,
"name": "_auctionCreatorPercentage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69176,
"src": "3418:25:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"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"
}
],
"id": 69272,
"name": "Initialized",
"nodeType": "Identifier",
"overloadedDeclarations": [
47255,
25982
],
"referencedDeclaration": 47255,
"src": "3106:11:158",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,address,address,address,address,address,uint256,uint256,uint256)"
}
},
"id": 69286,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3106:347:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69287,
"nodeType": "EmitStatement",
"src": "3101:352:158"
}
]
},
"baseFunctions": [
47305
],
"documentation": {
"id": 69202,
"nodeType": "StructuredDocumentation",
"src": "2188:81:158",
"text": " @dev Initializes the fToken\n @param input The reserve input"
},
"functionSelector": "1d165564",
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 69212,
"kind": "modifierInvocation",
"modifierName": {
"id": 69211,
"name": "initializer",
"nameLocations": [
"2437:11:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 26038,
"src": "2437:11:158"
},
"nodeType": "ModifierInvocation",
"src": "2437:11:158"
}
],
"name": "initialize",
"nameLocation": "2283:10:158",
"overrides": {
"id": 69210,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2420:8:158"
},
"parameters": {
"id": 69209,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69205,
"mutability": "mutable",
"name": "addressProvider",
"nameLocation": "2320:15:158",
"nodeType": "VariableDeclaration",
"scope": 69289,
"src": "2303:32:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
},
"typeName": {
"id": 69204,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 69203,
"name": "IAddressProvider",
"nameLocations": [
"2303:16:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 46447,
"src": "2303:16:158"
},
"referencedDeclaration": 46447,
"src": "2303:16:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 69208,
"mutability": "mutable",
"name": "input",
"nameLocation": "2383:5:158",
"nodeType": "VariableDeclaration",
"scope": 69289,
"src": "2345:43:158",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_struct$_InitReserveInput_$64606_calldata_ptr",
"typeString": "struct ConfigTypes.InitReserveInput"
},
"typeName": {
"id": 69207,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 69206,
"name": "ConfigTypes.InitReserveInput",
"nameLocations": [
"2345:11:158",
"2357:16:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 64606,
"src": "2345:28:158"
},
"referencedDeclaration": 64606,
"src": "2345:28:158",
"typeDescriptions": {
"typeIdentifier": "t_struct$_InitReserveInput_$64606_storage_ptr",
"typeString": "struct ConfigTypes.InitReserveInput"
}
},
"visibility": "internal"
}
],
"src": "2293:101:158"
},
"returnParameters": {
"id": 69213,
"nodeType": "ParameterList",
"parameters": [],
"src": "2453:0:158"
},
"scope": 70240,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 69340,
"nodeType": "FunctionDefinition",
"src": "3926:507:158",
"nodes": [],
"body": {
"id": 69339,
"nodeType": "Block",
"src": "4119:314:158",
"nodes": [],
"statements": [
{
"assignments": [
69305
],
"declarations": [
{
"constant": false,
"id": 69305,
"mutability": "mutable",
"name": "amountScaled",
"nameLocation": "4137:12:158",
"nodeType": "VariableDeclaration",
"scope": 69339,
"src": "4129:20:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69304,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4129:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 69310,
"initialValue": {
"arguments": [
{
"id": 69308,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69298,
"src": "4166:5:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 69306,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69296,
"src": "4152:6:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 69307,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4159:6:158",
"memberName": "rayDiv",
"nodeType": "MemberAccess",
"referencedDeclaration": 64411,
"src": "4152:13:158",
"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": 69309,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4152:20:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4129:43:158"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 69314,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 69312,
"name": "amountScaled",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69305,
"src": "4190:12:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"hexValue": "30",
"id": 69313,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4206:1:158",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "4190:17:158",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 69315,
"name": "Errors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 57944,
"src": "4209:6:158",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_Errors_$57944_$",
"typeString": "type(library Errors)"
}
},
"id": 69316,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "4216:22:158",
"memberName": "CT_INVALID_BURN_AMOUNT",
"nodeType": "MemberAccess",
"referencedDeclaration": 57772,
"src": "4209:29:158",
"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": 69311,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "4182:7:158",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 69317,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4182:57:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69318,
"nodeType": "ExpressionStatement",
"src": "4182:57:158"
},
{
"expression": {
"arguments": [
{
"id": 69320,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69292,
"src": "4255:4:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69321,
"name": "amountScaled",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69305,
"src": "4261:12:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 69319,
"name": "_burn",
"nodeType": "Identifier",
"overloadedDeclarations": [
72275
],
"referencedDeclaration": 72275,
"src": "4249:5:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 69322,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4249:25:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69323,
"nodeType": "ExpressionStatement",
"src": "4249:25:158"
},
{
"expression": {
"arguments": [
{
"id": 69328,
"name": "receiverOfUnderlying",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69294,
"src": "4334:20:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69329,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69296,
"src": "4356:6:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"arguments": [
{
"id": 69325,
"name": "_underlyingAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69166,
"src": "4303:16:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 69324,
"name": "IERC20Upgradeable",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27189,
"src": "4285:17:158",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20Upgradeable_$27189_$",
"typeString": "type(contract IERC20Upgradeable)"
}
},
"id": 69326,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4285:35:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Upgradeable_$27189",
"typeString": "contract IERC20Upgradeable"
}
},
"id": 69327,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4321:12:158",
"memberName": "safeTransfer",
"nodeType": "MemberAccess",
"referencedDeclaration": 27282,
"src": "4285:48:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$27189_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20Upgradeable_$27189_$",
"typeString": "function (contract IERC20Upgradeable,address,uint256)"
}
},
"id": 69330,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4285:78:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69331,
"nodeType": "ExpressionStatement",
"src": "4285:78:158"
},
{
"eventCall": {
"arguments": [
{
"id": 69333,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69292,
"src": "4384:4:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69334,
"name": "receiverOfUnderlying",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69294,
"src": "4390:20:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69335,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69296,
"src": "4412:6:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 69336,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69298,
"src": "4420:5:158",
"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"
}
],
"id": 69332,
"name": "Burn",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47275,
"src": "4379:4:158",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256,uint256)"
}
},
"id": 69337,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4379:47:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69338,
"nodeType": "EmitStatement",
"src": "4374:52:158"
}
]
},
"baseFunctions": [
47327
],
"documentation": {
"id": 69290,
"nodeType": "StructuredDocumentation",
"src": "3466:455:158",
"text": " @dev Burns fTokens from `user` and sends the equivalent amount of underlying to `receiverOfUnderlying`\n - Only callable by the LendingPool, as extra state updates there need to be managed\n @param user The owner of the fTokens, getting them burned\n @param receiverOfUnderlying The address that will receive the underlying\n @param amount The amount being burned\n @param index The new liquidity index of the reserve*"
},
"functionSelector": "d7020d0a",
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 69302,
"kind": "modifierInvocation",
"modifierName": {
"id": 69301,
"name": "onlyLendingPool",
"nameLocations": [
"4098:15:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 69193,
"src": "4098:15:158"
},
"nodeType": "ModifierInvocation",
"src": "4098:15:158"
}
],
"name": "burn",
"nameLocation": "3935:4:158",
"overrides": {
"id": 69300,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "4080:8:158"
},
"parameters": {
"id": 69299,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69292,
"mutability": "mutable",
"name": "user",
"nameLocation": "3957:4:158",
"nodeType": "VariableDeclaration",
"scope": 69340,
"src": "3949:12:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69291,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3949:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 69294,
"mutability": "mutable",
"name": "receiverOfUnderlying",
"nameLocation": "3979:20:158",
"nodeType": "VariableDeclaration",
"scope": 69340,
"src": "3971:28:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69293,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3971:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 69296,
"mutability": "mutable",
"name": "amount",
"nameLocation": "4017:6:158",
"nodeType": "VariableDeclaration",
"scope": 69340,
"src": "4009:14:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69295,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4009:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 69298,
"mutability": "mutable",
"name": "index",
"nameLocation": "4041:5:158",
"nodeType": "VariableDeclaration",
"scope": 69340,
"src": "4033:13:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69297,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4033:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "3939:113:158"
},
"returnParameters": {
"id": 69303,
"nodeType": "ParameterList",
"parameters": [],
"src": "4119:0:158"
},
"scope": 70240,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 69393,
"nodeType": "FunctionDefinition",
"src": "4827:478:158",
"nodes": [],
"body": {
"id": 69392,
"nodeType": "Block",
"src": "5006:299:158",
"nodes": [],
"statements": [
{
"assignments": [
69356
],
"declarations": [
{
"constant": false,
"id": 69356,
"mutability": "mutable",
"name": "previousBalance",
"nameLocation": "5024:15:158",
"nodeType": "VariableDeclaration",
"scope": 69392,
"src": "5016:23:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69355,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5016:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 69361,
"initialValue": {
"arguments": [
{
"id": 69359,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69343,
"src": "5058:4:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 69357,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "5042:5:158",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_FToken_$70240_$",
"typeString": "type(contract super FToken)"
}
},
"id": 69358,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5048:9:158",
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 26618,
"src": "5042:15:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view returns (uint256)"
}
},
"id": 69360,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5042:21:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5016:47:158"
},
{
"assignments": [
69363
],
"declarations": [
{
"constant": false,
"id": 69363,
"mutability": "mutable",
"name": "amountScaled",
"nameLocation": "5082:12:158",
"nodeType": "VariableDeclaration",
"scope": 69392,
"src": "5074:20:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69362,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5074:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 69368,
"initialValue": {
"arguments": [
{
"id": 69366,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69347,
"src": "5111:5:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 69364,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69345,
"src": "5097:6:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 69365,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5104:6:158",
"memberName": "rayDiv",
"nodeType": "MemberAccess",
"referencedDeclaration": 64411,
"src": "5097:13:158",
"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": 69367,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5097:20:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5074:43:158"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 69372,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 69370,
"name": "amountScaled",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69363,
"src": "5135:12:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"hexValue": "30",
"id": 69371,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5151:1:158",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "5135:17:158",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"expression": {
"id": 69373,
"name": "Errors",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 57944,
"src": "5154:6:158",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_Errors_$57944_$",
"typeString": "type(library Errors)"
}
},
"id": 69374,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "5161:22:158",
"memberName": "CT_INVALID_MINT_AMOUNT",
"nodeType": "MemberAccess",
"referencedDeclaration": 57769,
"src": "5154:29:158",
"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": 69369,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "5127:7:158",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 69375,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5127:57:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69376,
"nodeType": "ExpressionStatement",
"src": "5127:57:158"
},
{
"expression": {
"arguments": [
{
"id": 69378,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69343,
"src": "5200:4:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69379,
"name": "amountScaled",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69363,
"src": "5206:12:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 69377,
"name": "_mint",
"nodeType": "Identifier",
"overloadedDeclarations": [
72226
],
"referencedDeclaration": 72226,
"src": "5194:5:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 69380,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5194:25:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69381,
"nodeType": "ExpressionStatement",
"src": "5194:25:158"
},
{
"eventCall": {
"arguments": [
{
"id": 69383,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69343,
"src": "5240:4:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69384,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69345,
"src": "5246:6:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 69385,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69347,
"src": "5254:5:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 69382,
"name": "Mint",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47264,
"src": "5235:4:158",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256,uint256)"
}
},
"id": 69386,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5235:25:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69387,
"nodeType": "EmitStatement",
"src": "5230:30:158"
},
{
"expression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 69390,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 69388,
"name": "previousBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69356,
"src": "5278:15:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 69389,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5297:1:158",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "5278:20:158",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 69354,
"id": 69391,
"nodeType": "Return",
"src": "5271:27:158"
}
]
},
"baseFunctions": [
47316
],
"documentation": {
"id": 69341,
"nodeType": "StructuredDocumentation",
"src": "4439:383:158",
"text": " @dev Mints `amount` fTokens to `user`\n - Only callable by the LendingPool, as extra state updates there need to be managed\n @param user The address receiving the minted tokens\n @param amount The amount of tokens getting minted\n @param index The new liquidity index of the reserve\n @return `true` if the the previous balance of the user was 0"
},
"functionSelector": "156e29f6",
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 69351,
"kind": "modifierInvocation",
"modifierName": {
"id": 69350,
"name": "onlyLendingPool",
"nameLocations": [
"4961:15:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 69193,
"src": "4961:15:158"
},
"nodeType": "ModifierInvocation",
"src": "4961:15:158"
}
],
"name": "mint",
"nameLocation": "4836:4:158",
"overrides": {
"id": 69349,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "4943:8:158"
},
"parameters": {
"id": 69348,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69343,
"mutability": "mutable",
"name": "user",
"nameLocation": "4858:4:158",
"nodeType": "VariableDeclaration",
"scope": 69393,
"src": "4850:12:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69342,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4850:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 69345,
"mutability": "mutable",
"name": "amount",
"nameLocation": "4880:6:158",
"nodeType": "VariableDeclaration",
"scope": 69393,
"src": "4872:14:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69344,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4872:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 69347,
"mutability": "mutable",
"name": "index",
"nameLocation": "4904:5:158",
"nodeType": "VariableDeclaration",
"scope": 69393,
"src": "4896:13:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69346,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4896:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "4840:75:158"
},
"returnParameters": {
"id": 69354,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69353,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 69393,
"src": "4995:4:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 69352,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "4995:4:158",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "4994:6:158"
},
"scope": 70240,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 69423,
"nodeType": "FunctionDefinition",
"src": "5526:395:158",
"nodes": [],
"body": {
"id": 69422,
"nodeType": "Block",
"src": "5672:249:158",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"hexValue": "30",
"id": 69407,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5723:1:158",
"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": 69406,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "5715:7:158",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 69405,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5715:7:158",
"typeDescriptions": {}
}
},
"id": 69408,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5715:10:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"hexValue": "30",
"id": 69411,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5754:1:158",
"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": 69410,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "5746:7:158",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 69409,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5746:7:158",
"typeDescriptions": {}
}
},
"id": 69412,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5746:10:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"hexValue": "30",
"id": 69415,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5787:1:158",
"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": 69414,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "5779:7:158",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 69413,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5779:7:158",
"typeDescriptions": {}
}
},
"id": 69416,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5779:10:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69417,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69396,
"src": "5811:6:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"hexValue": "30",
"id": 69418,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5844:1:158",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
{
"id": 69419,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69398,
"src": "5885:5:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 69404,
"name": "_mintToStakeholders",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69645,
"src": "5682:19:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,address,address,uint256,uint256,uint256)"
}
},
"id": 69420,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5682:232:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69421,
"nodeType": "ExpressionStatement",
"src": "5682:232:158"
}
]
},
"baseFunctions": [
47334
],
"documentation": {
"id": 69394,
"nodeType": "StructuredDocumentation",
"src": "5311:210:158",
"text": " @dev Mints fTokens to the stakeholders\n - Only callable by the LendingPool\n @param amount The amount of tokens getting minted\n @param index The new liquidity index of the reserve"
},
"functionSelector": "e8f7a1a5",
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 69402,
"kind": "modifierInvocation",
"modifierName": {
"id": 69401,
"name": "onlyLendingPool",
"nameLocations": [
"5651:15:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 69193,
"src": "5651:15:158"
},
"nodeType": "ModifierInvocation",
"src": "5651:15:158"
}
],
"name": "mintVariableDebtRepaymentToStakeholders",
"nameLocation": "5535:39:158",
"overrides": {
"id": 69400,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "5633:8:158"
},
"parameters": {
"id": 69399,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69396,
"mutability": "mutable",
"name": "amount",
"nameLocation": "5583:6:158",
"nodeType": "VariableDeclaration",
"scope": 69423,
"src": "5575:14:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69395,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5575:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 69398,
"mutability": "mutable",
"name": "index",
"nameLocation": "5599:5:158",
"nodeType": "VariableDeclaration",
"scope": 69423,
"src": "5591:13:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69397,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5591:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "5574:31:158"
},
"returnParameters": {
"id": 69403,
"nodeType": "ParameterList",
"parameters": [],
"src": "5672:0:158"
},
"scope": 70240,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 69451,
"nodeType": "FunctionDefinition",
"src": "5927:406:158",
"nodes": [],
"body": {
"id": 69450,
"nodeType": "Block",
"src": "6084:249:158",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"id": 69436,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69425,
"src": "6127:4:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"hexValue": "30",
"id": 69439,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6166:1:158",
"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": 69438,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "6158:7:158",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 69437,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6158:7:158",
"typeDescriptions": {}
}
},
"id": 69440,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6158:10:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"hexValue": "30",
"id": 69443,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6199:1:158",
"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": 69442,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "6191:7:158",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 69441,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6191:7:158",
"typeDescriptions": {}
}
},
"id": 69444,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6191:10:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69445,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69427,
"src": "6223:6:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"hexValue": "30",
"id": 69446,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6256:1:158",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
{
"id": 69447,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69429,
"src": "6297:5:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 69435,
"name": "_mintToStakeholders",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69645,
"src": "6094:19:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,address,address,uint256,uint256,uint256)"
}
},
"id": 69448,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6094:232:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69449,
"nodeType": "ExpressionStatement",
"src": "6094:232:158"
}
]
},
"baseFunctions": [
47343
],
"functionSelector": "679d0095",
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 69433,
"kind": "modifierInvocation",
"modifierName": {
"id": 69432,
"name": "onlyLendingPool",
"nameLocations": [
"6063:15:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 69193,
"src": "6063:15:158"
},
"nodeType": "ModifierInvocation",
"src": "6063:15:158"
}
],
"name": "mintStableDebtRepaymentToStakeholders",
"nameLocation": "5936:37:158",
"overrides": {
"id": 69431,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "6045:8:158"
},
"parameters": {
"id": 69430,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69425,
"mutability": "mutable",
"name": "user",
"nameLocation": "5982:4:158",
"nodeType": "VariableDeclaration",
"scope": 69451,
"src": "5974:12:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69424,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5974:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 69427,
"mutability": "mutable",
"name": "amount",
"nameLocation": "5996:6:158",
"nodeType": "VariableDeclaration",
"scope": 69451,
"src": "5988:14:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69426,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5988:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 69429,
"mutability": "mutable",
"name": "index",
"nameLocation": "6012:5:158",
"nodeType": "VariableDeclaration",
"scope": 69451,
"src": "6004:13:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69428,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6004:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "5973:45:158"
},
"returnParameters": {
"id": 69434,
"nodeType": "ParameterList",
"parameters": [],
"src": "6084:0:158"
},
"scope": 70240,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 69479,
"nodeType": "FunctionDefinition",
"src": "6339:537:158",
"nodes": [],
"body": {
"id": 69478,
"nodeType": "Block",
"src": "6603:273:158",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"id": 69470,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69453,
"src": "6646:4:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69471,
"name": "caller",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69455,
"src": "6681:6:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69472,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69457,
"src": "6718:5:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69473,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69459,
"src": "6754:6:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 69474,
"name": "liquidationFee",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69461,
"src": "6791:14:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 69475,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69463,
"src": "6836:5:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"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"
}
],
"id": 69469,
"name": "_mintToStakeholders",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69645,
"src": "6613:19:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,address,address,uint256,uint256,uint256)"
}
},
"id": 69476,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6613:256:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69477,
"nodeType": "ExpressionStatement",
"src": "6613:256:158"
}
]
},
"baseFunctions": [
47358
],
"functionSelector": "30c1e38b",
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 69467,
"kind": "modifierInvocation",
"modifierName": {
"id": 69466,
"name": "onlyLendingPool",
"nameLocations": [
"6582:15:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 69193,
"src": "6582:15:158"
},
"nodeType": "ModifierInvocation",
"src": "6582:15:158"
}
],
"name": "mintAuctionPaymentToStakeholders",
"nameLocation": "6348:32:158",
"overrides": {
"id": 69465,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "6564:8:158"
},
"parameters": {
"id": 69464,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69453,
"mutability": "mutable",
"name": "user",
"nameLocation": "6398:4:158",
"nodeType": "VariableDeclaration",
"scope": 69479,
"src": "6390:12:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69452,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6390:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 69455,
"mutability": "mutable",
"name": "caller",
"nameLocation": "6421:6:158",
"nodeType": "VariableDeclaration",
"scope": 69479,
"src": "6413:14:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69454,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6413:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 69457,
"mutability": "mutable",
"name": "owner",
"nameLocation": "6446:5:158",
"nodeType": "VariableDeclaration",
"scope": 69479,
"src": "6438:13:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69456,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6438:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 69459,
"mutability": "mutable",
"name": "amount",
"nameLocation": "6469:6:158",
"nodeType": "VariableDeclaration",
"scope": 69479,
"src": "6461:14:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69458,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6461:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 69461,
"mutability": "mutable",
"name": "liquidationFee",
"nameLocation": "6494:14:158",
"nodeType": "VariableDeclaration",
"scope": 69479,
"src": "6486:22:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69460,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6486:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 69463,
"mutability": "mutable",
"name": "index",
"nameLocation": "6526:5:158",
"nodeType": "VariableDeclaration",
"scope": 69479,
"src": "6518:13:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69462,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6518:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "6380:157:158"
},
"returnParameters": {
"id": 69468,
"nodeType": "ParameterList",
"parameters": [],
"src": "6603:0:158"
},
"scope": 70240,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 69645,
"nodeType": "FunctionDefinition",
"src": "7162:1885:158",
"nodes": [],
"body": {
"id": 69644,
"nodeType": "Block",
"src": "7373:1674:158",
"nodes": [],
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 69501,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 69497,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 69495,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69488,
"src": "7387:6:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 69496,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7397:1:158",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "7387:11:158",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 69500,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 69498,
"name": "liquidationFee",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69490,
"src": "7402:14:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 69499,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7420:1:158",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "7402:19:158",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "7387:34:158",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 69504,
"nodeType": "IfStatement",
"src": "7383:71:158",
"trueBody": {
"id": 69503,
"nodeType": "Block",
"src": "7423:31:158",
"statements": [
{
"functionReturnParameters": 69494,
"id": 69502,
"nodeType": "Return",
"src": "7437:7:158"
}
]
}
},
{
"assignments": [
69506
],
"declarations": [
{
"constant": false,
"id": 69506,
"mutability": "mutable",
"name": "creator",
"nameLocation": "7472:7:158",
"nodeType": "VariableDeclaration",
"scope": 69644,
"src": "7464:15:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69505,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7464:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"id": 69508,
"initialValue": {
"id": 69507,
"name": "_creator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69160,
"src": "7482:8:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "7464:26:158"
},
{
"assignments": [
69510
],
"declarations": [
{
"constant": false,
"id": 69510,
"mutability": "mutable",
"name": "treasury",
"nameLocation": "7508:8:158",
"nodeType": "VariableDeclaration",
"scope": 69644,
"src": "7500:16:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69509,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7500:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"id": 69512,
"initialValue": {
"id": 69511,
"name": "_treasury",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69162,
"src": "7519:9:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "7500:28:158"
},
{
"assignments": [
69514
],
"declarations": [
{
"constant": false,
"id": 69514,
"mutability": "mutable",
"name": "callerAmount",
"nameLocation": "7546:12:158",
"nodeType": "VariableDeclaration",
"scope": 69644,
"src": "7538:20:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69513,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7538:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 69515,
"nodeType": "VariableDeclarationStatement",
"src": "7538:20:158"
},
{
"assignments": [
69517
],
"declarations": [
{
"constant": false,
"id": 69517,
"mutability": "mutable",
"name": "creatorAmount",
"nameLocation": "7576:13:158",
"nodeType": "VariableDeclaration",
"scope": 69644,
"src": "7568:21:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69516,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7568:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 69518,
"nodeType": "VariableDeclarationStatement",
"src": "7568:21:158"
},
{
"assignments": [
69520
],
"declarations": [
{
"constant": false,
"id": 69520,
"mutability": "mutable",
"name": "treasuryAmount",
"nameLocation": "7608:14:158",
"nodeType": "VariableDeclaration",
"scope": 69644,
"src": "7600:22:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69519,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7600:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 69521,
"nodeType": "VariableDeclarationStatement",
"src": "7600:22:158"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 69527,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 69522,
"name": "caller",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69484,
"src": "7638:6:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 69525,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7656:1:158",
"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": 69524,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "7648:7:158",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 69523,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7648:7:158",
"typeDescriptions": {}
}
},
"id": 69526,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7648:10:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "7638:20:158",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 69546,
"nodeType": "Block",
"src": "7776:203:158",
"statements": [
{
"expression": {
"id": 69544,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"components": [
{
"id": 69537,
"name": "callerAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69514,
"src": "7832:12:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 69538,
"name": "creatorAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69517,
"src": "7863:13:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 69539,
"name": "treasuryAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69520,
"src": "7895:14:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 69540,
"isConstant": false,
"isInlineArray": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "TupleExpression",
"src": "7814:109:158",
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
"typeString": "tuple(uint256,uint256,uint256)"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 69542,
"name": "liquidationFee",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69490,
"src": "7953:14:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 69541,
"name": "_splitWithCallerAndCreator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70239,
"src": "7926:26:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
"typeString": "function (uint256) view returns (uint256,uint256,uint256)"
}
},
"id": 69543,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7926:42:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
"typeString": "tuple(uint256,uint256,uint256)"
}
},
"src": "7814:154:158",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69545,
"nodeType": "ExpressionStatement",
"src": "7814:154:158"
}
]
},
"id": 69547,
"nodeType": "IfStatement",
"src": "7634:345:158",
"trueBody": {
"id": 69536,
"nodeType": "Block",
"src": "7660:110:158",
"statements": [
{
"expression": {
"id": 69534,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"components": [
{
"id": 69528,
"name": "creatorAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69517,
"src": "7701:13:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 69529,
"name": "treasuryAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69520,
"src": "7716:14:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 69530,
"isConstant": false,
"isInlineArray": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "TupleExpression",
"src": "7700:31:158",
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
"typeString": "tuple(uint256,uint256)"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 69532,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69488,
"src": "7752:6:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 69531,
"name": "_splitWithCreator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70199,
"src": "7734:17:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
"typeString": "function (uint256) view returns (uint256,uint256)"
}
},
"id": 69533,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "7734:25:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
"typeString": "tuple(uint256,uint256)"
}
},
"src": "7700:59:158",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69535,
"nodeType": "ExpressionStatement",
"src": "7700:59:158"
}
]
}
},
{
"expression": {
"arguments": [
{
"id": 69549,
"name": "treasury",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69510,
"src": "8324:8:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"id": 69552,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69492,
"src": "8356:5:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 69550,
"name": "treasuryAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69520,
"src": "8334:14:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 69551,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "8349:6:158",
"memberName": "rayDiv",
"nodeType": "MemberAccess",
"referencedDeclaration": 64411,
"src": "8334:21:158",
"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": 69553,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8334:28:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 69548,
"name": "_mint",
"nodeType": "Identifier",
"overloadedDeclarations": [
72226
],
"referencedDeclaration": 72226,
"src": "8318:5:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 69554,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8318:45:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69555,
"nodeType": "ExpressionStatement",
"src": "8318:45:158"
},
{
"expression": {
"arguments": [
{
"id": 69557,
"name": "creator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69506,
"src": "8379:7:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"id": 69560,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69492,
"src": "8409:5:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 69558,
"name": "creatorAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69517,
"src": "8388:13:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 69559,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "8402:6:158",
"memberName": "rayDiv",
"nodeType": "MemberAccess",
"referencedDeclaration": 64411,
"src": "8388:20:158",
"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": 69561,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8388:27:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 69556,
"name": "_mint",
"nodeType": "Identifier",
"overloadedDeclarations": [
72226
],
"referencedDeclaration": 72226,
"src": "8373:5:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 69562,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8373:43:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69563,
"nodeType": "ExpressionStatement",
"src": "8373:43:158"
},
{
"eventCall": {
"arguments": [
{
"id": 69565,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69482,
"src": "8449:4:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69566,
"name": "treasury",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69510,
"src": "8455:8:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69567,
"name": "treasuryAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69520,
"src": "8465:14:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 69564,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27123,
"src": "8440:8:158",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 69568,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8440:40:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69569,
"nodeType": "EmitStatement",
"src": "8435:45:158"
},
{
"eventCall": {
"arguments": [
{
"id": 69571,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69482,
"src": "8504:4:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69572,
"name": "creator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69506,
"src": "8510:7:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69573,
"name": "creatorAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69517,
"src": "8519:13:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 69570,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27123,
"src": "8495:8:158",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 69574,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8495:38:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69575,
"nodeType": "EmitStatement",
"src": "8490:43:158"
},
{
"eventCall": {
"arguments": [
{
"id": 69577,
"name": "treasury",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69510,
"src": "8562:8:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69578,
"name": "treasuryAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69520,
"src": "8572:14:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 69579,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69492,
"src": "8588:5:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 69576,
"name": "Mint",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47264,
"src": "8557:4:158",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256,uint256)"
}
},
"id": 69580,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8557:37:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69581,
"nodeType": "EmitStatement",
"src": "8552:42:158"
},
{
"eventCall": {
"arguments": [
{
"id": 69583,
"name": "creator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69506,
"src": "8614:7:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69584,
"name": "creatorAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69517,
"src": "8623:13:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 69585,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69492,
"src": "8638:5:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 69582,
"name": "Mint",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47264,
"src": "8609:4:158",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256,uint256)"
}
},
"id": 69586,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8609:35:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69587,
"nodeType": "EmitStatement",
"src": "8604:40:158"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 69593,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 69588,
"name": "caller",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69484,
"src": "8659:6:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 69591,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8677:1:158",
"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": 69590,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8669:7:158",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 69589,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8669:7:158",
"typeDescriptions": {}
}
},
"id": 69592,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8669:10:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "8659:20:158",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 69615,
"nodeType": "IfStatement",
"src": "8655:199:158",
"trueBody": {
"id": 69614,
"nodeType": "Block",
"src": "8681:173:158",
"statements": [
{
"expression": {
"arguments": [
{
"id": 69595,
"name": "caller",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69484,
"src": "8701:6:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"id": 69598,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69492,
"src": "8729:5:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 69596,
"name": "callerAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69514,
"src": "8709:12:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 69597,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "8722:6:158",
"memberName": "rayDiv",
"nodeType": "MemberAccess",
"referencedDeclaration": 64411,
"src": "8709:19:158",
"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": 69599,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8709:26:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 69594,
"name": "_mint",
"nodeType": "Identifier",
"overloadedDeclarations": [
72226
],
"referencedDeclaration": 72226,
"src": "8695:5:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 69600,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8695:41:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69601,
"nodeType": "ExpressionStatement",
"src": "8695:41:158"
},
{
"eventCall": {
"arguments": [
{
"id": 69603,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69482,
"src": "8764:4:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69604,
"name": "caller",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69484,
"src": "8770:6:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69605,
"name": "callerAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69514,
"src": "8778:12:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 69602,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27123,
"src": "8755:8:158",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 69606,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8755:36:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69607,
"nodeType": "EmitStatement",
"src": "8750:41:158"
},
{
"eventCall": {
"arguments": [
{
"id": 69609,
"name": "caller",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69484,
"src": "8815:6:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69610,
"name": "callerAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69514,
"src": "8823:12:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 69611,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69492,
"src": "8837:5:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 69608,
"name": "Mint",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47264,
"src": "8810:4:158",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256,uint256)"
}
},
"id": 69612,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8810:33:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69613,
"nodeType": "EmitStatement",
"src": "8805:38:158"
}
]
}
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 69621,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 69616,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69486,
"src": "8868:5:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"arguments": [
{
"hexValue": "30",
"id": 69619,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8885:1:158",
"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": 69618,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8877:7:158",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 69617,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8877:7:158",
"typeDescriptions": {}
}
},
"id": 69620,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8877:10:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "8868:19:158",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 69643,
"nodeType": "IfStatement",
"src": "8864:177:158",
"trueBody": {
"id": 69642,
"nodeType": "Block",
"src": "8889:152:158",
"statements": [
{
"expression": {
"arguments": [
{
"id": 69623,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69486,
"src": "8909:5:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"id": 69626,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69492,
"src": "8930:5:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 69624,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69488,
"src": "8916:6:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 69625,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "8923:6:158",
"memberName": "rayDiv",
"nodeType": "MemberAccess",
"referencedDeclaration": 64411,
"src": "8916:13:158",
"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": 69627,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8916:20:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 69622,
"name": "_mint",
"nodeType": "Identifier",
"overloadedDeclarations": [
72226
],
"referencedDeclaration": 72226,
"src": "8903:5:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 69628,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8903:34:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69629,
"nodeType": "ExpressionStatement",
"src": "8903:34:158"
},
{
"eventCall": {
"arguments": [
{
"id": 69631,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69482,
"src": "8965:4:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69632,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69486,
"src": "8971:5:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69633,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69488,
"src": "8978:6:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 69630,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27123,
"src": "8956:8:158",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 69634,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "8956:29:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69635,
"nodeType": "EmitStatement",
"src": "8951:34:158"
},
{
"eventCall": {
"arguments": [
{
"id": 69637,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69486,
"src": "9009:5:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69638,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69488,
"src": "9016:6:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 69639,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69492,
"src": "9024:5:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 69636,
"name": "Mint",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47264,
"src": "9004:4:158",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256,uint256)"
}
},
"id": 69640,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "9004:26:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 69641,
"nodeType": "EmitStatement",
"src": "8999:31:158"
}
]
}
}
]
},
"documentation": {
"id": 69480,
"nodeType": "StructuredDocumentation",
"src": "6882:275:158",
"text": " @dev Mints fTokens to the reserve treasury\n - Internal function to include user variable\n @param user The user initiating the transfer\n @param amount The amount of tokens getting minted\n @param index The new liquidity index of the reserve"
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_mintToStakeholders",
"nameLocation": "7171:19:158",
"parameters": {
"id": 69493,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69482,
"mutability": "mutable",
"name": "user",
"nameLocation": "7208:4:158",
"nodeType": "VariableDeclaration",
"scope": 69645,
"src": "7200:12:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69481,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7200:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 69484,
"mutability": "mutable",
"name": "caller",
"nameLocation": "7231:6:158",
"nodeType": "VariableDeclaration",
"scope": 69645,
"src": "7223:14:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69483,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7223:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 69486,
"mutability": "mutable",
"name": "owner",
"nameLocation": "7256:5:158",
"nodeType": "VariableDeclaration",
"scope": 69645,
"src": "7248:13:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69485,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7248:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 69488,
"mutability": "mutable",
"name": "amount",
"nameLocation": "7280:6:158",
"nodeType": "VariableDeclaration",
"scope": 69645,
"src": "7272:14:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69487,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7272:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 69490,
"mutability": "mutable",
"name": "liquidationFee",
"nameLocation": "7305:14:158",
"nodeType": "VariableDeclaration",
"scope": 69645,
"src": "7297:22:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69489,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7297:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 69492,
"mutability": "mutable",
"name": "index",
"nameLocation": "7338:5:158",
"nodeType": "VariableDeclaration",
"scope": 69645,
"src": "7330:13:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69491,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7330:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "7190:159:158"
},
"returnParameters": {
"id": 69494,
"nodeType": "ParameterList",
"parameters": [],
"src": "7373:0:158"
},
"scope": 70240,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"id": 69680,
"nodeType": "FunctionDefinition",
"src": "13276:449:158",
"nodes": [],
"body": {
"id": 69679,
"nodeType": "Block",
"src": "13386:339:158",
"nodes": [],
"statements": [
{
"assignments": [
69658
],
"declarations": [
{
"constant": false,
"id": 69658,
"mutability": "mutable",
"name": "pool",
"nameLocation": "13409:4:158",
"nodeType": "VariableDeclaration",
"scope": 69679,
"src": "13396:17:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
},
"typeName": {
"id": 69657,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 69656,
"name": "ILendingPool",
"nameLocations": [
"13396:12:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 48084,
"src": "13396:12:158"
},
"referencedDeclaration": 48084,
"src": "13396:12:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"visibility": "internal"
}
],
"id": 69661,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 69659,
"name": "_getLendingPool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70047,
"src": "13416:15:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_ILendingPool_$48084_$",
"typeString": "function () view returns (contract ILendingPool)"
}
},
"id": 69660,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "13416:17:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "13396:37:158"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"id": 69671,
"name": "_underlyingCollateral",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69164,
"src": "13559:21:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69672,
"name": "_underlyingAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69166,
"src": "13599:16:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69673,
"name": "_underlyingMaxTokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69168,
"src": "13633:21:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 69674,
"name": "_underlyingMinTokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69170,
"src": "13672:21:158",
"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": 69669,
"name": "pool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69658,
"src": "13524:4:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"id": 69670,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "13529:12:158",
"memberName": "getReserveId",
"nodeType": "MemberAccess",
"referencedDeclaration": 48009,
"src": "13524:17:158",
"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": 69675,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "13524:183:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 69667,
"name": "pool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69658,
"src": "13479:4:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"id": 69668,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "13484:26:158",
"memberName": "getReserveNormalizedIncome",
"nodeType": "MemberAccess",
"referencedDeclaration": 47925,
"src": "13479:31:158",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256) view external returns (uint256)"
}
},
"id": 69676,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "13479:238:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"arguments": [
{
"id": 69664,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69648,
"src": "13466:4:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 69662,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "13450:5:158",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_FToken_$70240_$",
"typeString": "type(contract super FToken)"
}
},
"id": 69663,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "13456:9:158",
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 26618,
"src": "13450:15:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view returns (uint256)"
}
},
"id": 69665,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "13450:21:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 69666,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "13472:6:158",
"memberName": "rayMul",
"nodeType": "MemberAccess",
"referencedDeclaration": 64384,
"src": "13450:28:158",
"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": 69677,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "13450:268:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 69655,
"id": 69678,
"nodeType": "Return",
"src": "13443:275:158"
}
]
},
"baseFunctions": [
26618,
27146
],
"documentation": {
"id": 69646,
"nodeType": "StructuredDocumentation",
"src": "13064:207:158",
"text": " @dev Calculates the balance of the user: principal balance + interest generated by the principal\n @param user The user whose balance is calculated\n @return The balance of the user*"
},
"functionSelector": "70a08231",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "balanceOf",
"nameLocation": "13285:9:158",
"overrides": {
"id": 69652,
"nodeType": "OverrideSpecifier",
"overrides": [
{
"id": 69650,
"name": "ERC20Upgradeable",
"nameLocations": [
"13331:16:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 27111,
"src": "13331:16:158"
},
{
"id": 69651,
"name": "IERC20Upgradeable",
"nameLocations": [
"13349:17:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 27189,
"src": "13349:17:158"
}
],
"src": "13321:46:158"
},
"parameters": {
"id": 69649,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69648,
"mutability": "mutable",
"name": "user",
"nameLocation": "13303:4:158",
"nodeType": "VariableDeclaration",
"scope": 69680,
"src": "13295:12:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69647,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "13295:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "13294:14:158"
},
"returnParameters": {
"id": 69655,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69654,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 69680,
"src": "13377:7:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69653,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "13377:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "13376:9:158"
},
"scope": 70240,
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"id": 69703,
"nodeType": "FunctionDefinition",
"src": "13734:382:158",
"nodes": [],
"body": {
"id": 69702,
"nodeType": "Block",
"src": "13807:309:158",
"nodes": [],
"statements": [
{
"assignments": [
69687
],
"declarations": [
{
"constant": false,
"id": 69687,
"mutability": "mutable",
"name": "pool",
"nameLocation": "13830:4:158",
"nodeType": "VariableDeclaration",
"scope": 69702,
"src": "13817:17:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
},
"typeName": {
"id": 69686,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 69685,
"name": "ILendingPool",
"nameLocations": [
"13817:12:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 48084,
"src": "13817:12:158"
},
"referencedDeclaration": 48084,
"src": "13817:12:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"visibility": "internal"
}
],
"id": 69690,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 69688,
"name": "_getLendingPool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70047,
"src": "13837:15:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_ILendingPool_$48084_$",
"typeString": "function () view returns (contract ILendingPool)"
}
},
"id": 69689,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "13837:17:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "13817:37:158"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"id": 69695,
"name": "_underlyingCollateral",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69164,
"src": "13951:21:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69696,
"name": "_underlyingAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69166,
"src": "13991:16:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69697,
"name": "_underlyingMaxTokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69168,
"src": "14025:21:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 69698,
"name": "_underlyingMinTokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69170,
"src": "14064:21:158",
"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": 69693,
"name": "pool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69687,
"src": "13916:4:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"id": 69694,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "13921:12:158",
"memberName": "getReserveId",
"nodeType": "MemberAccess",
"referencedDeclaration": 48009,
"src": "13916:17:158",
"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": 69699,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "13916:183:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 69691,
"name": "pool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69687,
"src": "13871:4:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"id": 69692,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "13876:26:158",
"memberName": "getReserveNormalizedIncome",
"nodeType": "MemberAccess",
"referencedDeclaration": 47925,
"src": "13871:31:158",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256) view external returns (uint256)"
}
},
"id": 69700,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "13871:238:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 69684,
"id": 69701,
"nodeType": "Return",
"src": "13864:245:158"
}
]
},
"baseFunctions": [
47372
],
"functionSelector": "36a72234",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getReserveNormalizationFactor",
"nameLocation": "13743:29:158",
"parameters": {
"id": 69681,
"nodeType": "ParameterList",
"parameters": [],
"src": "13772:2:158"
},
"returnParameters": {
"id": 69684,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69683,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 69703,
"src": "13798:7:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69682,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "13798:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "13797:9:158"
},
"scope": 70240,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"id": 69718,
"nodeType": "FunctionDefinition",
"src": "14428:125:158",
"nodes": [],
"body": {
"id": 69717,
"nodeType": "Block",
"src": "14508:45:158",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"id": 69714,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69706,
"src": "14541:4:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 69712,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "14525:5:158",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_FToken_$70240_$",
"typeString": "type(contract super FToken)"
}
},
"id": 69713,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "14531:9:158",
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 26618,
"src": "14525:15:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view returns (uint256)"
}
},
"id": 69715,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "14525:21:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 69711,
"id": 69716,
"nodeType": "Return",
"src": "14518:28:158"
}
]
},
"baseFunctions": [
48542
],
"documentation": {
"id": 69704,
"nodeType": "StructuredDocumentation",
"src": "14122:301:158",
"text": " @dev Returns the scaled balance of the user. The scaled balance is the sum of all the\n updated stored balance divided by the reserve's liquidity index at the moment of the update\n @param user The user whose balance is calculated\n @return The scaled balance of the user*"
},
"functionSelector": "1da24f3e",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "scaledBalanceOf",
"nameLocation": "14437:15:158",
"overrides": {
"id": 69708,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "14481:8:158"
},
"parameters": {
"id": 69707,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69706,
"mutability": "mutable",
"name": "user",
"nameLocation": "14461:4:158",
"nodeType": "VariableDeclaration",
"scope": 69718,
"src": "14453:12:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69705,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "14453:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "14452:14:158"
},
"returnParameters": {
"id": 69711,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69710,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 69718,
"src": "14499:7:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69709,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "14499:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "14498:9:158"
},
"scope": 70240,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"id": 69739,
"nodeType": "FunctionDefinition",
"src": "14802:171:158",
"nodes": [],
"body": {
"id": 69738,
"nodeType": "Block",
"src": "14905:68:158",
"nodes": [],
"statements": [
{
"expression": {
"components": [
{
"arguments": [
{
"id": 69731,
"name": "user",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69721,
"src": "14939:4:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 69729,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "14923:5:158",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_FToken_$70240_$",
"typeString": "type(contract super FToken)"
}
},
"id": 69730,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "14929:9:158",
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 26618,
"src": "14923:15:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view returns (uint256)"
}
},
"id": 69732,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "14923:21:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 69733,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "14946:5:158",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_FToken_$70240_$",
"typeString": "type(contract super FToken)"
}
},
"id": 69734,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "14952:11:158",
"memberName": "totalSupply",
"nodeType": "MemberAccess",
"referencedDeclaration": 26604,
"src": "14946:17:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 69735,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "14946:19:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 69736,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "14922:44:158",
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
"typeString": "tuple(uint256,uint256)"
}
},
"functionReturnParameters": 69728,
"id": 69737,
"nodeType": "Return",
"src": "14915:51:158"
}
]
},
"baseFunctions": [
48552
],
"documentation": {
"id": 69719,
"nodeType": "StructuredDocumentation",
"src": "14559:238:158",
"text": " @dev Returns the scaled balance of the user and the scaled total supply.\n @param user The address of the user\n @return The scaled balance of the user\n @return The scaled balance and the scaled total supply*"
},
"functionSelector": "0afbcdc9",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getScaledUserBalanceAndSupply",
"nameLocation": "14811:29:158",
"overrides": {
"id": 69723,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "14869:8:158"
},
"parameters": {
"id": 69722,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69721,
"mutability": "mutable",
"name": "user",
"nameLocation": "14849:4:158",
"nodeType": "VariableDeclaration",
"scope": 69739,
"src": "14841:12:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69720,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "14841:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "14840:14:158"
},
"returnParameters": {
"id": 69728,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69725,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 69739,
"src": "14887:7:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69724,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "14887:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 69727,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 69739,
"src": "14896:7:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69726,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "14896:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "14886:18:158"
},
"scope": 70240,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"id": 69782,
"nodeType": "FunctionDefinition",
"src": "15204:579:158",
"nodes": [],
"body": {
"id": 69781,
"nodeType": "Block",
"src": "15304:479:158",
"nodes": [],
"statements": [
{
"assignments": [
69750
],
"declarations": [
{
"constant": false,
"id": 69750,
"mutability": "mutable",
"name": "pool",
"nameLocation": "15327:4:158",
"nodeType": "VariableDeclaration",
"scope": 69781,
"src": "15314:17:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
},
"typeName": {
"id": 69749,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 69748,
"name": "ILendingPool",
"nameLocations": [
"15314:12:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 48084,
"src": "15314:12:158"
},
"referencedDeclaration": 48084,
"src": "15314:12:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"visibility": "internal"
}
],
"id": 69753,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 69751,
"name": "_getLendingPool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70047,
"src": "15334:15:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_ILendingPool_$48084_$",
"typeString": "function () view returns (contract ILendingPool)"
}
},
"id": 69752,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "15334:17:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "15314:37:158"
},
{
"assignments": [
69755
],
"declarations": [
{
"constant": false,
"id": 69755,
"mutability": "mutable",
"name": "currentSupplyScaled",
"nameLocation": "15378:19:158",
"nodeType": "VariableDeclaration",
"scope": 69781,
"src": "15370:27:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69754,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "15370:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 69759,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 69756,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "15400:5:158",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_FToken_$70240_$",
"typeString": "type(contract super FToken)"
}
},
"id": 69757,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "15406:11:158",
"memberName": "totalSupply",
"nodeType": "MemberAccess",
"referencedDeclaration": 26604,
"src": "15400:17:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 69758,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "15400:19:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "15370:49:158"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 69762,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 69760,
"name": "currentSupplyScaled",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69755,
"src": "15434:19:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 69761,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "15457:1:158",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "15434:24:158",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 69766,
"nodeType": "IfStatement",
"src": "15430:63:158",
"trueBody": {
"id": 69765,
"nodeType": "Block",
"src": "15460:33:158",
"statements": [
{
"expression": {
"hexValue": "30",
"id": 69763,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "15481:1:158",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"functionReturnParameters": 69747,
"id": 69764,
"nodeType": "Return",
"src": "15474:8:158"
}
]
}
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"id": 69773,
"name": "_underlyingCollateral",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69164,
"src": "15617:21:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69774,
"name": "_underlyingAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69166,
"src": "15657:16:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69775,
"name": "_underlyingMaxTokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69168,
"src": "15691:21:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 69776,
"name": "_underlyingMinTokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69170,
"src": "15730:21:158",
"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": 69771,
"name": "pool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69750,
"src": "15582:4:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"id": 69772,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "15587:12:158",
"memberName": "getReserveId",
"nodeType": "MemberAccess",
"referencedDeclaration": 48009,
"src": "15582:17:158",
"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": 69777,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "15582:183:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 69769,
"name": "pool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69750,
"src": "15537:4:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"id": 69770,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "15542:26:158",
"memberName": "getReserveNormalizedIncome",
"nodeType": "MemberAccess",
"referencedDeclaration": 47925,
"src": "15537:31:158",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256) view external returns (uint256)"
}
},
"id": 69778,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "15537:238:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 69767,
"name": "currentSupplyScaled",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69755,
"src": "15510:19:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 69768,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "15530:6:158",
"memberName": "rayMul",
"nodeType": "MemberAccess",
"referencedDeclaration": 64384,
"src": "15510:26:158",
"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": 69779,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "15510:266:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 69747,
"id": 69780,
"nodeType": "Return",
"src": "15503:273:158"
}
]
},
"baseFunctions": [
26604,
27138
],
"documentation": {
"id": 69740,
"nodeType": "StructuredDocumentation",
"src": "14983:216:158",
"text": " @dev Calculates the total supply of the specific fToken\n Since the balance of every single user increases over time, the total supply\n does that too.\n @return the current total supply*"
},
"functionSelector": "18160ddd",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "totalSupply",
"nameLocation": "15213:11:158",
"overrides": {
"id": 69744,
"nodeType": "OverrideSpecifier",
"overrides": [
{
"id": 69742,
"name": "ERC20Upgradeable",
"nameLocations": [
"15249:16:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 27111,
"src": "15249:16:158"
},
{
"id": 69743,
"name": "IERC20Upgradeable",
"nameLocations": [
"15267:17:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 27189,
"src": "15267:17:158"
}
],
"src": "15239:46:158"
},
"parameters": {
"id": 69741,
"nodeType": "ParameterList",
"parameters": [],
"src": "15224:2:158"
},
"returnParameters": {
"id": 69747,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69746,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 69782,
"src": "15295:7:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69745,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "15295:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "15294:9:158"
},
"scope": 70240,
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"id": 69794,
"nodeType": "FunctionDefinition",
"src": "15941:119:158",
"nodes": [],
"body": {
"id": 69793,
"nodeType": "Block",
"src": "16017:43:158",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 69789,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "16034:5:158",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_FToken_$70240_$",
"typeString": "type(contract super FToken)"
}
},
"id": 69790,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "16040:11:158",
"memberName": "totalSupply",
"nodeType": "MemberAccess",
"referencedDeclaration": 26604,
"src": "16034:17:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 69791,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "16034:19:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 69788,
"id": 69792,
"nodeType": "Return",
"src": "16027:26:158"
}
]
},
"baseFunctions": [
48558
],
"documentation": {
"id": 69783,
"nodeType": "StructuredDocumentation",
"src": "15789:147:158",
"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": "15950:17:158",
"overrides": {
"id": 69785,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "15990:8:158"
},
"parameters": {
"id": 69784,
"nodeType": "ParameterList",
"parameters": [],
"src": "15967:2:158"
},
"returnParameters": {
"id": 69788,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69787,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 69794,
"src": "16008:7:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69786,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "16008:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "16007:9:158"
},
"scope": 70240,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 69827,
"nodeType": "FunctionDefinition",
"src": "16176:410:158",
"nodes": [],
"body": {
"id": 69826,
"nodeType": "Block",
"src": "16247:339:158",
"nodes": [],
"statements": [
{
"assignments": [
69803
],
"declarations": [
{
"constant": false,
"id": 69803,
"mutability": "mutable",
"name": "pool",
"nameLocation": "16270:4:158",
"nodeType": "VariableDeclaration",
"scope": 69826,
"src": "16257:17:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
},
"typeName": {
"id": 69802,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 69801,
"name": "ILendingPool",
"nameLocations": [
"16257:12:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 48084,
"src": "16257:12:158"
},
"referencedDeclaration": 48084,
"src": "16257:12:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"visibility": "internal"
}
],
"id": 69806,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 69804,
"name": "_getLendingPool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70047,
"src": "16277:15:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_ILendingPool_$48084_$",
"typeString": "function () view returns (contract ILendingPool)"
}
},
"id": 69805,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "16277:17:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "16257:37:158"
},
{
"assignments": [
69808
],
"declarations": [
{
"constant": false,
"id": 69808,
"mutability": "mutable",
"name": "reserveId",
"nameLocation": "16313:9:158",
"nodeType": "VariableDeclaration",
"scope": 69826,
"src": "16305:17:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69807,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "16305:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 69816,
"initialValue": {
"arguments": [
{
"id": 69811,
"name": "_underlyingCollateral",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69164,
"src": "16356:21:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69812,
"name": "_underlyingAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69166,
"src": "16392:16:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 69813,
"name": "_underlyingMaxTokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69168,
"src": "16422:21:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 69814,
"name": "_underlyingMinTokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69170,
"src": "16457:21:158",
"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": 69809,
"name": "pool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69803,
"src": "16325:4:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"id": 69810,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "16330:12:158",
"memberName": "getReserveId",
"nodeType": "MemberAccess",
"referencedDeclaration": 48009,
"src": "16325:17:158",
"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": 69815,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "16325:163:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "16305:183:158"
},
{
"assignments": [
69818
],
"declarations": [
{
"constant": false,
"id": 69818,
"mutability": "mutable",
"name": "index",
"nameLocation": "16507:5:158",
"nodeType": "VariableDeclaration",
"scope": 69826,
"src": "16499:13:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69817,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "16499:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 69823,
"initialValue": {
"arguments": [
{
"id": 69821,
"name": "reserveId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69808,
"src": "16547:9:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 69819,
"name": "pool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69803,
"src": "16515:4:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"id": 69820,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "16520:26:158",
"memberName": "getReserveNormalizedIncome",
"nodeType": "MemberAccess",
"referencedDeclaration": 47925,
"src": "16515:31:158",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256) view external returns (uint256)"
}
},
"id": 69822,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "16515:42:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "16499:58:158"
},
{
"expression": {
"id": 69824,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69818,
"src": "16574:5:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 69800,
"id": 69825,
"nodeType": "Return",
"src": "16567:12:158"
}
]
},
"baseFunctions": [
47383
],
"documentation": {
"id": 69795,
"nodeType": "StructuredDocumentation",
"src": "16066:105:158",
"text": " @dev Returns the fTOKEN : underlyingASSET exchange rate\n @return the exchange rate*"
},
"functionSelector": "3ba0b9a9",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "exchangeRate",
"nameLocation": "16185:12:158",
"overrides": {
"id": 69797,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "16220:8:158"
},
"parameters": {
"id": 69796,
"nodeType": "ParameterList",
"parameters": [],
"src": "16197:2:158"
},
"returnParameters": {
"id": 69800,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69799,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 69827,
"src": "16238:7:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69798,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "16238:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "16237:9:158"
},
"scope": 70240,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 69839,
"nodeType": "FunctionDefinition",
"src": "16592:111:158",
"nodes": [],
"body": {
"id": 69838,
"nodeType": "Block",
"src": "16668:35:158",
"nodes": [],
"statements": [
{
"expression": {
"id": 69836,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 69834,
"name": "_creator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69160,
"src": "16678:8:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 69835,
"name": "creator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69829,
"src": "16689:7:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "16678:18:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 69837,
"nodeType": "ExpressionStatement",
"src": "16678:18:158"
}
]
},
"baseFunctions": [
47388
],
"functionSelector": "bc1d19dd",
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 69832,
"kind": "modifierInvocation",
"modifierName": {
"id": 69831,
"name": "onlyLendingPool",
"nameLocations": [
"16652:15:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 69193,
"src": "16652:15:158"
},
"nodeType": "ModifierInvocation",
"src": "16652:15:158"
}
],
"name": "setReserveCreatorAddress",
"nameLocation": "16601:24:158",
"parameters": {
"id": 69830,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69829,
"mutability": "mutable",
"name": "creator",
"nameLocation": "16634:7:158",
"nodeType": "VariableDeclaration",
"scope": 69839,
"src": "16626:15:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69828,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "16626:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "16625:17:158"
},
"returnParameters": {
"id": 69833,
"nodeType": "ParameterList",
"parameters": [],
"src": "16668:0:158"
},
"scope": 70240,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 69847,
"nodeType": "FunctionDefinition",
"src": "16709:98:158",
"nodes": [],
"body": {
"id": 69846,
"nodeType": "Block",
"src": "16775:32:158",
"nodes": [],
"statements": [
{
"expression": {
"id": 69844,
"name": "_creator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69160,
"src": "16792:8:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 69843,
"id": 69845,
"nodeType": "Return",
"src": "16785:15:158"
}
]
},
"baseFunctions": [
47393
],
"functionSelector": "47bec6f0",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getReserveCreatorAddress",
"nameLocation": "16718:24:158",
"parameters": {
"id": 69840,
"nodeType": "ParameterList",
"parameters": [],
"src": "16742:2:158"
},
"returnParameters": {
"id": 69843,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69842,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 69847,
"src": "16766:7:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69841,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "16766:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "16765:9:158"
},
"scope": 70240,
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"id": 69859,
"nodeType": "FunctionDefinition",
"src": "16813:144:158",
"nodes": [],
"body": {
"id": 69858,
"nodeType": "Block",
"src": "16902:55:158",
"nodes": [],
"statements": [
{
"expression": {
"id": 69856,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 69854,
"name": "_creatorPercentage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69172,
"src": "16912:18:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 69855,
"name": "creatorPercentage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69849,
"src": "16933:17:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "16912:38:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 69857,
"nodeType": "ExpressionStatement",
"src": "16912:38:158"
}
]
},
"baseFunctions": [
47398
],
"functionSelector": "acac18e4",
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 69852,
"kind": "modifierInvocation",
"modifierName": {
"id": 69851,
"name": "onlyLendingPool",
"nameLocations": [
"16886:15:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 69193,
"src": "16886:15:158"
},
"nodeType": "ModifierInvocation",
"src": "16886:15:158"
}
],
"name": "setReserveCreatorPercentage",
"nameLocation": "16822:27:158",
"parameters": {
"id": 69850,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69849,
"mutability": "mutable",
"name": "creatorPercentage",
"nameLocation": "16858:17:158",
"nodeType": "VariableDeclaration",
"scope": 69859,
"src": "16850:25:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69848,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "16850:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "16849:27:158"
},
"returnParameters": {
"id": 69853,
"nodeType": "ParameterList",
"parameters": [],
"src": "16902:0:158"
},
"scope": 70240,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 69867,
"nodeType": "FunctionDefinition",
"src": "16963:111:158",
"nodes": [],
"body": {
"id": 69866,
"nodeType": "Block",
"src": "17032:42:158",
"nodes": [],
"statements": [
{
"expression": {
"id": 69864,
"name": "_creatorPercentage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69172,
"src": "17049:18:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 69863,
"id": 69865,
"nodeType": "Return",
"src": "17042:25:158"
}
]
},
"baseFunctions": [
47403
],
"functionSelector": "2d6aa128",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getReserveCreatorPercentage",
"nameLocation": "16972:27:158",
"parameters": {
"id": 69860,
"nodeType": "ParameterList",
"parameters": [],
"src": "16999:2:158"
},
"returnParameters": {
"id": 69863,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69862,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 69867,
"src": "17023:7:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69861,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "17023:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "17022:9:158"
},
"scope": 70240,
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"id": 69879,
"nodeType": "FunctionDefinition",
"src": "17080:161:158",
"nodes": [],
"body": {
"id": 69878,
"nodeType": "Block",
"src": "17174:67:158",
"nodes": [],
"statements": [
{
"expression": {
"id": 69876,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 69874,
"name": "_auctionCallerPercentage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69174,
"src": "17184:24:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 69875,
"name": "auctionCallerPercentage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69869,
"src": "17211:23:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "17184:50:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 69877,
"nodeType": "ExpressionStatement",
"src": "17184:50:158"
}
]
},
"baseFunctions": [
47408
],
"functionSelector": "7ccd3b46",
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 69872,
"kind": "modifierInvocation",
"modifierName": {
"id": 69871,
"name": "onlyLendingPool",
"nameLocations": [
"17158:15:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 69193,
"src": "17158:15:158"
},
"nodeType": "ModifierInvocation",
"src": "17158:15:158"
}
],
"name": "setAuctionCallerPercentage",
"nameLocation": "17089:26:158",
"parameters": {
"id": 69870,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69869,
"mutability": "mutable",
"name": "auctionCallerPercentage",
"nameLocation": "17124:23:158",
"nodeType": "VariableDeclaration",
"scope": 69879,
"src": "17116:31:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69868,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "17116:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "17115:33:158"
},
"returnParameters": {
"id": 69873,
"nodeType": "ParameterList",
"parameters": [],
"src": "17174:0:158"
},
"scope": 70240,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 69887,
"nodeType": "FunctionDefinition",
"src": "17247:118:158",
"nodes": [],
"body": {
"id": 69886,
"nodeType": "Block",
"src": "17317:48:158",
"nodes": [],
"statements": [
{
"expression": {
"id": 69884,
"name": "_auctionCallerPercentage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69174,
"src": "17334:24:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 69883,
"id": 69885,
"nodeType": "Return",
"src": "17327:31:158"
}
]
},
"baseFunctions": [
47413
],
"functionSelector": "f9e2bf6b",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getAuctionCallerPercentage",
"nameLocation": "17256:26:158",
"parameters": {
"id": 69880,
"nodeType": "ParameterList",
"parameters": [],
"src": "17282:2:158"
},
"returnParameters": {
"id": 69883,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69882,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 69887,
"src": "17308:7:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69881,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "17308:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "17307:9:158"
},
"scope": 70240,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"id": 69899,
"nodeType": "FunctionDefinition",
"src": "17371:165:158",
"nodes": [],
"body": {
"id": 69898,
"nodeType": "Block",
"src": "17467:69:158",
"nodes": [],
"statements": [
{
"expression": {
"id": 69896,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 69894,
"name": "_auctionCreatorPercentage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69176,
"src": "17477:25:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 69895,
"name": "auctionCreatorPercentage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69889,
"src": "17505:24:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "17477:52:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 69897,
"nodeType": "ExpressionStatement",
"src": "17477:52:158"
}
]
},
"baseFunctions": [
47418
],
"functionSelector": "6b8465f8",
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 69892,
"kind": "modifierInvocation",
"modifierName": {
"id": 69891,
"name": "onlyLendingPool",
"nameLocations": [
"17451:15:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 69193,
"src": "17451:15:158"
},
"nodeType": "ModifierInvocation",
"src": "17451:15:158"
}
],
"name": "setAuctionCreatorPercentage",
"nameLocation": "17380:27:158",
"parameters": {
"id": 69890,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69889,
"mutability": "mutable",
"name": "auctionCreatorPercentage",
"nameLocation": "17416:24:158",
"nodeType": "VariableDeclaration",
"scope": 69899,
"src": "17408:32:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69888,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "17408:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "17407:34:158"
},
"returnParameters": {
"id": 69893,
"nodeType": "ParameterList",
"parameters": [],
"src": "17467:0:158"
},
"scope": 70240,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 69907,
"nodeType": "FunctionDefinition",
"src": "17542:120:158",
"nodes": [],
"body": {
"id": 69906,
"nodeType": "Block",
"src": "17613:49:158",
"nodes": [],
"statements": [
{
"expression": {
"id": 69904,
"name": "_auctionCreatorPercentage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69176,
"src": "17630:25:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 69903,
"id": 69905,
"nodeType": "Return",
"src": "17623:32:158"
}
]
},
"baseFunctions": [
47423
],
"functionSelector": "14ff75c9",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getAuctionCreatorPercentage",
"nameLocation": "17551:27:158",
"parameters": {
"id": 69900,
"nodeType": "ParameterList",
"parameters": [],
"src": "17578:2:158"
},
"returnParameters": {
"id": 69903,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69902,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 69907,
"src": "17604:7:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69901,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "17604:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "17603:9:158"
},
"scope": 70240,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"id": 69916,
"nodeType": "FunctionDefinition",
"src": "17775:99:158",
"nodes": [],
"body": {
"id": 69915,
"nodeType": "Block",
"src": "17841:33:158",
"nodes": [],
"statements": [
{
"expression": {
"id": 69913,
"name": "_treasury",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69162,
"src": "17858:9:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 69912,
"id": 69914,
"nodeType": "Return",
"src": "17851:16:158"
}
]
},
"baseFunctions": [
47428
],
"documentation": {
"id": 69908,
"nodeType": "StructuredDocumentation",
"src": "17668:102:158",
"text": " @dev Returns the address of the FluidNFT treasury, receiving the fees on this fToken*"
},
"functionSelector": "ae167335",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "RESERVE_TREASURY_ADDRESS",
"nameLocation": "17784:24:158",
"parameters": {
"id": 69909,
"nodeType": "ParameterList",
"parameters": [],
"src": "17808:2:158"
},
"returnParameters": {
"id": 69912,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69911,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 69916,
"src": "17832:7:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69910,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "17832:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "17831:9:158"
},
"scope": 70240,
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"id": 69925,
"nodeType": "FunctionDefinition",
"src": "17970:112:158",
"nodes": [],
"body": {
"id": 69924,
"nodeType": "Block",
"src": "18041:41:158",
"nodes": [],
"statements": [
{
"expression": {
"id": 69922,
"name": "_underlyingCollateral",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69164,
"src": "18054:21:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 69921,
"id": 69923,
"nodeType": "Return",
"src": "18047:28:158"
}
]
},
"baseFunctions": [
47433
],
"documentation": {
"id": 69917,
"nodeType": "StructuredDocumentation",
"src": "17880:85:158",
"text": " @dev Returns the address of the underlyingCollateral of this fToken*"
},
"functionSelector": "57f1b837",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "UNDERLYING_COLLATERAL_ADDRESS",
"nameLocation": "17979:29:158",
"parameters": {
"id": 69918,
"nodeType": "ParameterList",
"parameters": [],
"src": "18008:2:158"
},
"returnParameters": {
"id": 69921,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69920,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 69925,
"src": "18032:7:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69919,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "18032:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "18031:9:158"
},
"scope": 70240,
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"id": 69935,
"nodeType": "FunctionDefinition",
"src": "18173:111:158",
"nodes": [],
"body": {
"id": 69934,
"nodeType": "Block",
"src": "18248:36:158",
"nodes": [],
"statements": [
{
"expression": {
"id": 69932,
"name": "_underlyingAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69166,
"src": "18261:16:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 69931,
"id": 69933,
"nodeType": "Return",
"src": "18254:23:158"
}
]
},
"baseFunctions": [
47438
],
"documentation": {
"id": 69926,
"nodeType": "StructuredDocumentation",
"src": "18088:80:158",
"text": " @dev Returns the address of the underlyingAsset of this fToken*"
},
"functionSelector": "b16a19de",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "UNDERLYING_ASSET_ADDRESS",
"nameLocation": "18182:24:158",
"overrides": {
"id": 69928,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "18221:8:158"
},
"parameters": {
"id": 69927,
"nodeType": "ParameterList",
"parameters": [],
"src": "18206:2:158"
},
"returnParameters": {
"id": 69931,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69930,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 69935,
"src": "18239:7:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69929,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "18239:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "18238:9:158"
},
"scope": 70240,
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"id": 69945,
"nodeType": "FunctionDefinition",
"src": "18380:115:158",
"nodes": [],
"body": {
"id": 69944,
"nodeType": "Block",
"src": "18454:41:158",
"nodes": [],
"statements": [
{
"expression": {
"id": 69942,
"name": "_underlyingMaxTokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69168,
"src": "18467:21:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 69941,
"id": 69943,
"nodeType": "Return",
"src": "18460:28:158"
}
]
},
"baseFunctions": [
47443
],
"documentation": {
"id": 69936,
"nodeType": "StructuredDocumentation",
"src": "18290:85:158",
"text": " @dev Returns the tokenId of the underlyingMaxTokenId of this fToken*"
},
"functionSelector": "04601608",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "UNDERLYING_MAX_TOKEN_ID",
"nameLocation": "18389:23:158",
"overrides": {
"id": 69938,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "18427:8:158"
},
"parameters": {
"id": 69937,
"nodeType": "ParameterList",
"parameters": [],
"src": "18412:2:158"
},
"returnParameters": {
"id": 69941,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69940,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 69945,
"src": "18445:7:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69939,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "18445:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "18444:9:158"
},
"scope": 70240,
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"id": 69955,
"nodeType": "FunctionDefinition",
"src": "18591:115:158",
"nodes": [],
"body": {
"id": 69954,
"nodeType": "Block",
"src": "18665:41:158",
"nodes": [],
"statements": [
{
"expression": {
"id": 69952,
"name": "_underlyingMinTokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69170,
"src": "18678:21:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 69951,
"id": 69953,
"nodeType": "Return",
"src": "18671:28:158"
}
]
},
"baseFunctions": [
47448
],
"documentation": {
"id": 69946,
"nodeType": "StructuredDocumentation",
"src": "18501:85:158",
"text": " @dev Returns the tokenId of the underlyingMinTokenId of this fToken*"
},
"functionSelector": "c35be017",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "UNDERLYING_MIN_TOKEN_ID",
"nameLocation": "18600:23:158",
"overrides": {
"id": 69948,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "18638:8:158"
},
"parameters": {
"id": 69947,
"nodeType": "ParameterList",
"parameters": [],
"src": "18623:2:158"
},
"returnParameters": {
"id": 69951,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69950,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 69955,
"src": "18656:7:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 69949,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "18656:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "18655:9:158"
},
"scope": 70240,
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"id": 69966,
"nodeType": "FunctionDefinition",
"src": "18790:92:158",
"nodes": [],
"body": {
"id": 69965,
"nodeType": "Block",
"src": "18841:41:158",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 69962,
"name": "_getLendingPool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70047,
"src": "18858:15:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_ILendingPool_$48084_$",
"typeString": "function () view returns (contract ILendingPool)"
}
},
"id": 69963,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "18858:17:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"functionReturnParameters": 69961,
"id": 69964,
"nodeType": "Return",
"src": "18851:24:158"
}
]
},
"documentation": {
"id": 69956,
"nodeType": "StructuredDocumentation",
"src": "18712:73:158",
"text": " @dev Returns the lending pool where this fToken is used*"
},
"functionSelector": "7535d246",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "POOL",
"nameLocation": "18799:4:158",
"parameters": {
"id": 69957,
"nodeType": "ParameterList",
"parameters": [],
"src": "18803:2:158"
},
"returnParameters": {
"id": 69961,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69960,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 69966,
"src": "18827:12:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
},
"typeName": {
"id": 69959,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 69958,
"name": "ILendingPool",
"nameLocations": [
"18827:12:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 48084,
"src": "18827:12:158"
},
"referencedDeclaration": 48084,
"src": "18827:12:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"visibility": "internal"
}
],
"src": "18826:14:158"
},
"scope": 70240,
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"id": 69981,
"nodeType": "FunctionDefinition",
"src": "18988:197:158",
"nodes": [],
"body": {
"id": 69980,
"nodeType": "Block",
"src": "19087:98:158",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 69975,
"name": "_addressProvider",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69158,
"src": "19130:16:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
}
},
"id": 69976,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "19147:27:158",
"memberName": "getPoolIncentivesController",
"nodeType": "MemberAccess",
"referencedDeclaration": 46361,
"src": "19130:44:158",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
"typeString": "function () view external returns (address)"
}
},
"id": 69977,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "19130:46:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 69974,
"name": "IPoolIncentivesController",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48421,
"src": "19104:25:158",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IPoolIncentivesController_$48421_$",
"typeString": "type(contract IPoolIncentivesController)"
}
},
"id": 69978,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "19104:73:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
}
},
"functionReturnParameters": 69973,
"id": 69979,
"nodeType": "Return",
"src": "19097:80:158"
}
]
},
"baseFunctions": [
72100
],
"documentation": {
"id": 69967,
"nodeType": "StructuredDocumentation",
"src": "18888:95:158",
"text": " @dev For internal usage in the logic of the parent contract IncentivizedERC20*"
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_getPoolIncentivesController",
"nameLocation": "18997:28:158",
"overrides": {
"id": 69969,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "19042:8:158"
},
"parameters": {
"id": 69968,
"nodeType": "ParameterList",
"parameters": [],
"src": "19025:2:158"
},
"returnParameters": {
"id": 69973,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69972,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 69981,
"src": "19060:25:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
},
"typeName": {
"id": 69971,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 69970,
"name": "IPoolIncentivesController",
"nameLocations": [
"19060:25:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 48421,
"src": "19060:25:158"
},
"referencedDeclaration": 48421,
"src": "19060:25:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
}
},
"visibility": "internal"
}
],
"src": "19059:27:158"
},
"scope": 70240,
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
},
{
"id": 69989,
"nodeType": "FunctionDefinition",
"src": "19191:120:158",
"nodes": [],
"body": {
"id": 69988,
"nodeType": "Block",
"src": "19266:45:158",
"nodes": [],
"statements": [
{
"expression": {
"id": 69986,
"name": "_underlyingCollateral",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69164,
"src": "19283:21:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 69985,
"id": 69987,
"nodeType": "Return",
"src": "19276:28:158"
}
]
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_getUnderlyingCollateralAddress",
"nameLocation": "19200:31:158",
"parameters": {
"id": 69982,
"nodeType": "ParameterList",
"parameters": [],
"src": "19231:2:158"
},
"returnParameters": {
"id": 69985,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69984,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 69989,
"src": "19257:7:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69983,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "19257:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "19256:9:158"
},
"scope": 70240,
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
},
{
"id": 69998,
"nodeType": "FunctionDefinition",
"src": "19319:119:158",
"nodes": [],
"body": {
"id": 69997,
"nodeType": "Block",
"src": "19398:40:158",
"nodes": [],
"statements": [
{
"expression": {
"id": 69995,
"name": "_underlyingAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69166,
"src": "19415:16:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 69994,
"id": 69996,
"nodeType": "Return",
"src": "19408:23:158"
}
]
},
"baseFunctions": [
72105
],
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_getUnderlyingAssetAddress",
"nameLocation": "19328:26:158",
"overrides": {
"id": 69991,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "19371:8:158"
},
"parameters": {
"id": 69990,
"nodeType": "ParameterList",
"parameters": [],
"src": "19354:2:158"
},
"returnParameters": {
"id": 69994,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 69993,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 69998,
"src": "19389:7:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 69992,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "19389:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "19388:9:158"
},
"scope": 70240,
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
},
{
"id": 70010,
"nodeType": "FunctionDefinition",
"src": "19531:152:158",
"nodes": [],
"body": {
"id": 70009,
"nodeType": "Block",
"src": "19629:54:158",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 70006,
"name": "_getPoolIncentivesController",
"nodeType": "Identifier",
"overloadedDeclarations": [
69981
],
"referencedDeclaration": 69981,
"src": "19646:28:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IPoolIncentivesController_$48421_$",
"typeString": "function () view returns (contract IPoolIncentivesController)"
}
},
"id": 70007,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "19646:30:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
}
},
"functionReturnParameters": 70005,
"id": 70008,
"nodeType": "Return",
"src": "19639:37:158"
}
]
},
"baseFunctions": [
47378
],
"documentation": {
"id": 69999,
"nodeType": "StructuredDocumentation",
"src": "19446:80:158",
"text": " @dev Returns the address of the incentives controller contract*"
},
"functionSelector": "19ef9268",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getPoolIncentivesController",
"nameLocation": "19540:27:158",
"overrides": {
"id": 70001,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "19584:8:158"
},
"parameters": {
"id": 70000,
"nodeType": "ParameterList",
"parameters": [],
"src": "19567:2:158"
},
"returnParameters": {
"id": 70005,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 70004,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 70010,
"src": "19602:25:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
},
"typeName": {
"id": 70003,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 70002,
"name": "IPoolIncentivesController",
"nameLocations": [
"19602:25:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 48421,
"src": "19602:25:158"
},
"referencedDeclaration": 48421,
"src": "19602:25:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolIncentivesController_$48421",
"typeString": "contract IPoolIncentivesController"
}
},
"visibility": "internal"
}
],
"src": "19601:27:158"
},
"scope": 70240,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"id": 70034,
"nodeType": "FunctionDefinition",
"src": "19986:259:158",
"nodes": [],
"body": {
"id": 70033,
"nodeType": "Block",
"src": "20141:104:158",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"id": 70027,
"name": "target",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70013,
"src": "20200:6:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 70028,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70015,
"src": "20208:6:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"arguments": [
{
"id": 70024,
"name": "_underlyingAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69166,
"src": "20169:16:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 70023,
"name": "IERC20Upgradeable",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27189,
"src": "20151:17:158",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20Upgradeable_$27189_$",
"typeString": "type(contract IERC20Upgradeable)"
}
},
"id": 70025,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "20151:35:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Upgradeable_$27189",
"typeString": "contract IERC20Upgradeable"
}
},
"id": 70026,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "20187:12:158",
"memberName": "safeTransfer",
"nodeType": "MemberAccess",
"referencedDeclaration": 27282,
"src": "20151:48:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20Upgradeable_$27189_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20Upgradeable_$27189_$",
"typeString": "function (contract IERC20Upgradeable,address,uint256)"
}
},
"id": 70029,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "20151:64:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 70030,
"nodeType": "ExpressionStatement",
"src": "20151:64:158"
},
{
"expression": {
"id": 70031,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70015,
"src": "20232:6:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 70022,
"id": 70032,
"nodeType": "Return",
"src": "20225:13:158"
}
]
},
"baseFunctions": [
47367
],
"documentation": {
"id": 70011,
"nodeType": "StructuredDocumentation",
"src": "19689:292:158",
"text": " @dev Transfers the underlying asset to `target`. Used by the LendingPool to transfer\n assets in borrow(), withdraw() and flashLoan()\n @param target The recipient of the fTokens\n @param amount The amount getting transferred\n @return The amount transferred*"
},
"functionSelector": "4efecaa5",
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 70019,
"kind": "modifierInvocation",
"modifierName": {
"id": 70018,
"name": "onlyLendingPool",
"nameLocations": [
"20093:15:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 69193,
"src": "20093:15:158"
},
"nodeType": "ModifierInvocation",
"src": "20093:15:158"
}
],
"name": "transferUnderlyingTo",
"nameLocation": "19995:20:158",
"overrides": {
"id": 70017,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "20075:8:158"
},
"parameters": {
"id": 70016,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 70013,
"mutability": "mutable",
"name": "target",
"nameLocation": "20024:6:158",
"nodeType": "VariableDeclaration",
"scope": 70034,
"src": "20016:14:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 70012,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "20016:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70015,
"mutability": "mutable",
"name": "amount",
"nameLocation": "20040:6:158",
"nodeType": "VariableDeclaration",
"scope": 70034,
"src": "20032:14:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70014,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "20032:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "20015:32:158"
},
"returnParameters": {
"id": 70022,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 70021,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 70034,
"src": "20127:7:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70020,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "20127:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "20126:9:158"
},
"scope": 70240,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 70047,
"nodeType": "FunctionDefinition",
"src": "20251:135:158",
"nodes": [],
"body": {
"id": 70046,
"nodeType": "Block",
"src": "20315:71:158",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 70041,
"name": "_addressProvider",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69158,
"src": "20345:16:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
}
},
"id": 70042,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "20362:14:158",
"memberName": "getLendingPool",
"nodeType": "MemberAccess",
"referencedDeclaration": 46256,
"src": "20345:31:158",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
"typeString": "function () view external returns (address)"
}
},
"id": 70043,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "20345:33:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 70040,
"name": "ILendingPool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48084,
"src": "20332:12:158",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ILendingPool_$48084_$",
"typeString": "type(contract ILendingPool)"
}
},
"id": 70044,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "20332:47:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"functionReturnParameters": 70039,
"id": 70045,
"nodeType": "Return",
"src": "20325:54:158"
}
]
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_getLendingPool",
"nameLocation": "20260:15:158",
"parameters": {
"id": 70035,
"nodeType": "ParameterList",
"parameters": [],
"src": "20275:2:158"
},
"returnParameters": {
"id": 70039,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 70038,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 70047,
"src": "20301:12:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
},
"typeName": {
"id": 70037,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 70036,
"name": "ILendingPool",
"nameLocations": [
"20301:12:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 48084,
"src": "20301:12:158"
},
"referencedDeclaration": 48084,
"src": "20301:12:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"visibility": "internal"
}
],
"src": "20300:14:158"
},
"scope": 70240,
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
},
{
"id": 70060,
"nodeType": "FunctionDefinition",
"src": "20392:139:158",
"nodes": [],
"body": {
"id": 70059,
"nodeType": "Block",
"src": "20458:73:158",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 70054,
"name": "_addressProvider",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69158,
"src": "20489:16:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IAddressProvider_$46447",
"typeString": "contract IAddressProvider"
}
},
"id": 70055,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "20506:15:158",
"memberName": "getConfigurator",
"nodeType": "MemberAccess",
"referencedDeclaration": 46266,
"src": "20489:32:158",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
"typeString": "function () view external returns (address)"
}
},
"id": 70056,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "20489:34:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 70053,
"name": "IConfigurator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47089,
"src": "20475:13:158",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IConfigurator_$47089_$",
"typeString": "type(contract IConfigurator)"
}
},
"id": 70057,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "20475:49:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConfigurator_$47089",
"typeString": "contract IConfigurator"
}
},
"functionReturnParameters": 70052,
"id": 70058,
"nodeType": "Return",
"src": "20468:56:158"
}
]
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_getConfigurator",
"nameLocation": "20401:16:158",
"parameters": {
"id": 70048,
"nodeType": "ParameterList",
"parameters": [],
"src": "20417:2:158"
},
"returnParameters": {
"id": 70052,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 70051,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 70060,
"src": "20443:13:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConfigurator_$47089",
"typeString": "contract IConfigurator"
},
"typeName": {
"id": 70050,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 70049,
"name": "IConfigurator",
"nameLocations": [
"20443:13:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 47089,
"src": "20443:13:158"
},
"referencedDeclaration": 47089,
"src": "20443:13:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IConfigurator_$47089",
"typeString": "contract IConfigurator"
}
},
"visibility": "internal"
}
],
"src": "20442:15:158"
},
"scope": 70240,
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
},
{
"id": 70148,
"nodeType": "FunctionDefinition",
"src": "20885:962:158",
"nodes": [],
"body": {
"id": 70147,
"nodeType": "Block",
"src": "21008:839:158",
"nodes": [],
"statements": [
{
"assignments": [
70074
],
"declarations": [
{
"constant": false,
"id": 70074,
"mutability": "mutable",
"name": "pool",
"nameLocation": "21031:4:158",
"nodeType": "VariableDeclaration",
"scope": 70147,
"src": "21018:17:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
},
"typeName": {
"id": 70073,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 70072,
"name": "ILendingPool",
"nameLocations": [
"21018:12:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 48084,
"src": "21018:12:158"
},
"referencedDeclaration": 48084,
"src": "21018:12:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"visibility": "internal"
}
],
"id": 70077,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 70075,
"name": "_getLendingPool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70047,
"src": "21038:15:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_ILendingPool_$48084_$",
"typeString": "function () view returns (contract ILendingPool)"
}
},
"id": 70076,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "21038:17:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "21018:37:158"
},
{
"assignments": [
70079
],
"declarations": [
{
"constant": false,
"id": 70079,
"mutability": "mutable",
"name": "reserveId",
"nameLocation": "21074:9:158",
"nodeType": "VariableDeclaration",
"scope": 70147,
"src": "21066:17:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70078,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "21066:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 70087,
"initialValue": {
"arguments": [
{
"id": 70082,
"name": "_underlyingCollateral",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69164,
"src": "21117:21:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 70083,
"name": "_underlyingAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69166,
"src": "21153:16:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 70084,
"name": "_underlyingMaxTokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69168,
"src": "21183:21:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 70085,
"name": "_underlyingMinTokenId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69170,
"src": "21218:21:158",
"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": 70080,
"name": "pool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70074,
"src": "21086:4:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"id": 70081,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "21091:12:158",
"memberName": "getReserveId",
"nodeType": "MemberAccess",
"referencedDeclaration": 48009,
"src": "21086:17:158",
"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": 70086,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "21086:163:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "21066:183:158"
},
{
"assignments": [
70089
],
"declarations": [
{
"constant": false,
"id": 70089,
"mutability": "mutable",
"name": "index",
"nameLocation": "21268:5:158",
"nodeType": "VariableDeclaration",
"scope": 70147,
"src": "21260:13:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70088,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "21260:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 70094,
"initialValue": {
"arguments": [
{
"id": 70092,
"name": "reserveId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70079,
"src": "21308:9:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 70090,
"name": "pool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70074,
"src": "21276:4:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"id": 70091,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "21281:26:158",
"memberName": "getReserveNormalizedIncome",
"nodeType": "MemberAccess",
"referencedDeclaration": 47925,
"src": "21276:31:158",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256) view external returns (uint256)"
}
},
"id": 70093,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "21276:42:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "21260:58:158"
},
{
"assignments": [
70096
],
"declarations": [
{
"constant": false,
"id": 70096,
"mutability": "mutable",
"name": "fromBalanceBefore",
"nameLocation": "21345:17:158",
"nodeType": "VariableDeclaration",
"scope": 70147,
"src": "21337:25:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70095,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "21337:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 70104,
"initialValue": {
"arguments": [
{
"id": 70102,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70089,
"src": "21394:5:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"arguments": [
{
"id": 70099,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70063,
"src": "21381:4:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 70097,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "21365:5:158",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_FToken_$70240_$",
"typeString": "type(contract super FToken)"
}
},
"id": 70098,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "21371:9:158",
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 26618,
"src": "21365:15:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view returns (uint256)"
}
},
"id": 70100,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "21365:21:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70101,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "21387:6:158",
"memberName": "rayMul",
"nodeType": "MemberAccess",
"referencedDeclaration": 64384,
"src": "21365:28:158",
"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": 70103,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "21365:35:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "21337:63:158"
},
{
"assignments": [
70106
],
"declarations": [
{
"constant": false,
"id": 70106,
"mutability": "mutable",
"name": "toBalanceBefore",
"nameLocation": "21418:15:158",
"nodeType": "VariableDeclaration",
"scope": 70147,
"src": "21410:23:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70105,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "21410:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 70114,
"initialValue": {
"arguments": [
{
"id": 70112,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70089,
"src": "21463:5:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"arguments": [
{
"id": 70109,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70065,
"src": "21452:2:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 70107,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "21436:5:158",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_FToken_$70240_$",
"typeString": "type(contract super FToken)"
}
},
"id": 70108,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "21442:9:158",
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 26618,
"src": "21436:15:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view returns (uint256)"
}
},
"id": 70110,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "21436:19:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70111,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "21456:6:158",
"memberName": "rayMul",
"nodeType": "MemberAccess",
"referencedDeclaration": 64384,
"src": "21436:26:158",
"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": 70113,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "21436:33:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "21410:59:158"
},
{
"expression": {
"arguments": [
{
"id": 70118,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70063,
"src": "21504:4:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 70119,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70065,
"src": "21510:2:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"id": 70122,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70089,
"src": "21528:5:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 70120,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70067,
"src": "21514:6:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70121,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "21521:6:158",
"memberName": "rayDiv",
"nodeType": "MemberAccess",
"referencedDeclaration": 64411,
"src": "21514:13:158",
"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": 70123,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "21514:20:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 70115,
"name": "super",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -25,
"src": "21488:5:158",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_super$_FToken_$70240_$",
"typeString": "type(contract super FToken)"
}
},
"id": 70117,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "21494:9:158",
"memberName": "_transfer",
"nodeType": "MemberAccess",
"referencedDeclaration": 72177,
"src": "21488:15:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 70124,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "21488:47:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 70125,
"nodeType": "ExpressionStatement",
"src": "21488:47:158"
},
{
"condition": {
"id": 70126,
"name": "validate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70069,
"src": "21550:8:158",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 70139,
"nodeType": "IfStatement",
"src": "21546:239:158",
"trueBody": {
"id": 70138,
"nodeType": "Block",
"src": "21560:225:158",
"statements": [
{
"expression": {
"arguments": [
{
"id": 70130,
"name": "reserveId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70079,
"src": "21613:9:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 70131,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70063,
"src": "21640:4:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 70132,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70065,
"src": "21663:2:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 70133,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70067,
"src": "21684:6:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 70134,
"name": "fromBalanceBefore",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70096,
"src": "21709:17:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 70135,
"name": "toBalanceBefore",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70106,
"src": "21745:15:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"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"
}
],
"expression": {
"id": 70127,
"name": "pool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70074,
"src": "21574:4:158",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILendingPool_$48084",
"typeString": "contract ILendingPool"
}
},
"id": 70129,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "21579:16:158",
"memberName": "finalizeTransfer",
"nodeType": "MemberAccess",
"referencedDeclaration": 47981,
"src": "21574:21:158",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (uint256,address,address,uint256,uint256,uint256) view external"
}
},
"id": 70136,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "21574:200:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 70137,
"nodeType": "ExpressionStatement",
"src": "21574:200:158"
}
]
}
},
{
"eventCall": {
"arguments": [
{
"id": 70141,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70063,
"src": "21816:4:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 70142,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70065,
"src": "21822:2:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 70143,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70067,
"src": "21826:6:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 70144,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70089,
"src": "21834:5:158",
"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"
}
],
"id": 70140,
"name": "BalanceTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47286,
"src": "21800:15:158",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256,uint256)"
}
},
"id": 70145,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "21800:40:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 70146,
"nodeType": "EmitStatement",
"src": "21795:45:158"
}
]
},
"documentation": {
"id": 70061,
"nodeType": "StructuredDocumentation",
"src": "20537:343:158",
"text": " @dev Transfers the fTokens between two users. Validates the transfer\n (ie checks for valid HF after the transfer) if required\n @param from The source address\n @param to The destination address\n @param amount The amount getting transferred\n @param validate `true` if the transfer needs to be validated*"
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_transfer",
"nameLocation": "20894:9:158",
"parameters": {
"id": 70070,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 70063,
"mutability": "mutable",
"name": "from",
"nameLocation": "20921:4:158",
"nodeType": "VariableDeclaration",
"scope": 70148,
"src": "20913:12:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 70062,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "20913:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70065,
"mutability": "mutable",
"name": "to",
"nameLocation": "20943:2:158",
"nodeType": "VariableDeclaration",
"scope": 70148,
"src": "20935:10:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 70064,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "20935:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70067,
"mutability": "mutable",
"name": "amount",
"nameLocation": "20963:6:158",
"nodeType": "VariableDeclaration",
"scope": 70148,
"src": "20955:14:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70066,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "20955:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70069,
"mutability": "mutable",
"name": "validate",
"nameLocation": "20984:8:158",
"nodeType": "VariableDeclaration",
"scope": 70148,
"src": "20979:13:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 70068,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "20979:4:158",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "20903:95:158"
},
"returnParameters": {
"id": 70071,
"nodeType": "ParameterList",
"parameters": [],
"src": "21008:0:158"
},
"scope": 70240,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"id": 70167,
"nodeType": "FunctionDefinition",
"src": "22088:152:158",
"nodes": [],
"body": {
"id": 70166,
"nodeType": "Block",
"src": "22190:50:158",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"id": 70160,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70151,
"src": "22210:4:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 70161,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70153,
"src": "22216:2:158",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 70162,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70155,
"src": "22220:6:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"hexValue": "74727565",
"id": 70163,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "22228:4:158",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 70159,
"name": "_transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [
70148,
70167
],
"referencedDeclaration": 70148,
"src": "22200:9:158",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$",
"typeString": "function (address,address,uint256,bool)"
}
},
"id": 70164,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "22200:33:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 70165,
"nodeType": "ExpressionStatement",
"src": "22200:33:158"
}
]
},
"baseFunctions": [
72177
],
"documentation": {
"id": 70149,
"nodeType": "StructuredDocumentation",
"src": "21853:230:158",
"text": " @dev Overrides the parent _transfer to force validated transfer() and transferFrom()\n @param from The source address\n @param to The destination address\n @param amount The amount getting transferred*"
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_transfer",
"nameLocation": "22097:9:158",
"overrides": {
"id": 70157,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "22176:8:158"
},
"parameters": {
"id": 70156,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 70151,
"mutability": "mutable",
"name": "from",
"nameLocation": "22115:4:158",
"nodeType": "VariableDeclaration",
"scope": 70167,
"src": "22107:12:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 70150,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "22107:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70153,
"mutability": "mutable",
"name": "to",
"nameLocation": "22129:2:158",
"nodeType": "VariableDeclaration",
"scope": 70167,
"src": "22121:10:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 70152,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "22121:7:158",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70155,
"mutability": "mutable",
"name": "amount",
"nameLocation": "22141:6:158",
"nodeType": "VariableDeclaration",
"scope": 70167,
"src": "22133:14:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70154,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "22133:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "22106:42:158"
},
"returnParameters": {
"id": 70158,
"nodeType": "ParameterList",
"parameters": [],
"src": "22190:0:158"
},
"scope": 70240,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"id": 70199,
"nodeType": "FunctionDefinition",
"src": "22385:332:158",
"nodes": [],
"body": {
"id": 70198,
"nodeType": "Block",
"src": "22469:248:158",
"nodes": [],
"statements": [
{
"assignments": [
70178
],
"declarations": [
{
"constant": false,
"id": 70178,
"mutability": "mutable",
"name": "creatorPercentage",
"nameLocation": "22487:17:158",
"nodeType": "VariableDeclaration",
"scope": 70198,
"src": "22479:25:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70177,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "22479:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 70180,
"initialValue": {
"id": 70179,
"name": "_creatorPercentage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69172,
"src": "22507:18:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "22479:46:158"
},
{
"assignments": [
70182
],
"declarations": [
{
"constant": false,
"id": 70182,
"mutability": "mutable",
"name": "creatorAmount",
"nameLocation": "22552:13:158",
"nodeType": "VariableDeclaration",
"scope": 70198,
"src": "22544:21:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70181,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "22544:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 70187,
"initialValue": {
"arguments": [
{
"id": 70185,
"name": "creatorPercentage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70178,
"src": "22586:17:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 70183,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70170,
"src": "22568:6:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70184,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "22575:10:158",
"memberName": "percentMul",
"nodeType": "MemberAccess",
"referencedDeclaration": 64205,
"src": "22568:17:158",
"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": 70186,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "22568:36:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "22544:60:158"
},
{
"assignments": [
70189
],
"declarations": [
{
"constant": false,
"id": 70189,
"mutability": "mutable",
"name": "treasuryAmount",
"nameLocation": "22622:14:158",
"nodeType": "VariableDeclaration",
"scope": 70198,
"src": "22614:22:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70188,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "22614:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 70193,
"initialValue": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 70192,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 70190,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70170,
"src": "22639:6:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"id": 70191,
"name": "creatorAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70182,
"src": "22648:13:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "22639:22:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "22614:47:158"
},
{
"expression": {
"components": [
{
"id": 70194,
"name": "creatorAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70182,
"src": "22680:13:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 70195,
"name": "treasuryAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70189,
"src": "22695:14:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 70196,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "22679:31:158",
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
"typeString": "tuple(uint256,uint256)"
}
},
"functionReturnParameters": 70176,
"id": 70197,
"nodeType": "Return",
"src": "22672:38:158"
}
]
},
"documentation": {
"id": 70168,
"nodeType": "StructuredDocumentation",
"src": "22246:134:158",
"text": " @dev Splits protocol repayment amounts between the creator and treasury\n @param amount The amount getting split*"
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_splitWithCreator",
"nameLocation": "22394:17:158",
"parameters": {
"id": 70171,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 70170,
"mutability": "mutable",
"name": "amount",
"nameLocation": "22420:6:158",
"nodeType": "VariableDeclaration",
"scope": 70199,
"src": "22412:14:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70169,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "22412:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "22411:16:158"
},
"returnParameters": {
"id": 70176,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 70173,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 70199,
"src": "22451:7:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70172,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "22451:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70175,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 70199,
"src": "22460:7:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70174,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "22460:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "22450:18:158"
},
"scope": 70240,
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
},
{
"id": 70239,
"nodeType": "FunctionDefinition",
"src": "22862:478:158",
"nodes": [],
"body": {
"id": 70238,
"nodeType": "Block",
"src": "22964:376:158",
"nodes": [],
"statements": [
{
"assignments": [
70212
],
"declarations": [
{
"constant": false,
"id": 70212,
"mutability": "mutable",
"name": "callerAmount",
"nameLocation": "22990:12:158",
"nodeType": "VariableDeclaration",
"scope": 70238,
"src": "22982:20:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70211,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "22982:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 70217,
"initialValue": {
"arguments": [
{
"id": 70215,
"name": "_auctionCallerPercentage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69174,
"src": "23023:24:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 70213,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70202,
"src": "23005:6:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70214,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "23012:10:158",
"memberName": "percentMul",
"nodeType": "MemberAccess",
"referencedDeclaration": 64205,
"src": "23005:17:158",
"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": 70216,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "23005:43:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "22982:66:158"
},
{
"assignments": [
70219
],
"declarations": [
{
"constant": false,
"id": 70219,
"mutability": "mutable",
"name": "creatorAmount",
"nameLocation": "23101:13:158",
"nodeType": "VariableDeclaration",
"scope": 70238,
"src": "23093:21:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70218,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "23093:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 70224,
"initialValue": {
"arguments": [
{
"id": 70222,
"name": "_auctionCreatorPercentage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 69176,
"src": "23135:25:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 70220,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70202,
"src": "23117:6:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 70221,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "23124:10:158",
"memberName": "percentMul",
"nodeType": "MemberAccess",
"referencedDeclaration": 64205,
"src": "23117:17:158",
"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": 70223,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "23117:44:158",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "23093:68:158"
},
{
"assignments": [
70226
],
"declarations": [
{
"constant": false,
"id": 70226,
"mutability": "mutable",
"name": "treasuryAmount",
"nameLocation": "23216:14:158",
"nodeType": "VariableDeclaration",
"scope": 70238,
"src": "23208:22:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70225,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "23208:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 70232,
"initialValue": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 70231,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 70229,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 70227,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70202,
"src": "23233:6:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"id": 70228,
"name": "callerAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70212,
"src": "23242:12:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "23233:21:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"id": 70230,
"name": "creatorAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70219,
"src": "23257:13:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "23233:37:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "23208:62:158"
},
{
"expression": {
"components": [
{
"id": 70233,
"name": "callerAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70212,
"src": "23289:12:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 70234,
"name": "creatorAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70219,
"src": "23303:13:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 70235,
"name": "treasuryAmount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 70226,
"src": "23318:14:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 70236,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "23288:45:158",
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
"typeString": "tuple(uint256,uint256,uint256)"
}
},
"functionReturnParameters": 70210,
"id": 70237,
"nodeType": "Return",
"src": "23281:52:158"
}
]
},
"documentation": {
"id": 70200,
"nodeType": "StructuredDocumentation",
"src": "22723:134:158",
"text": " @dev Splits protocol repayment amounts between the creator and treasury\n @param amount The amount getting split*"
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_splitWithCallerAndCreator",
"nameLocation": "22871:26:158",
"parameters": {
"id": 70203,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 70202,
"mutability": "mutable",
"name": "amount",
"nameLocation": "22906:6:158",
"nodeType": "VariableDeclaration",
"scope": 70239,
"src": "22898:14:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70201,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "22898:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "22897:16:158"
},
"returnParameters": {
"id": 70210,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 70205,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 70239,
"src": "22937:7:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70204,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "22937:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70207,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 70239,
"src": "22946:7:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70206,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "22946:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 70209,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 70239,
"src": "22955:7:158",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 70208,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "22955:7:158",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "22936:27:158"
},
"scope": 70240,
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
}
],
"abstract": false,
"baseContracts": [
{
"baseName": {
"id": 69140,
"name": "Initializable",
"nameLocations": [
"1330:13:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 26136,
"src": "1330:13:158"
},
"id": 69141,
"nodeType": "InheritanceSpecifier",
"src": "1330:13:158"
},
{
"baseName": {
"id": 69142,
"name": "IFToken",
"nameLocations": [
"1345:7:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 47449,
"src": "1345:7:158"
},
"id": 69143,
"nodeType": "InheritanceSpecifier",
"src": "1345:7:158"
},
{
"baseName": {
"id": 69144,
"name": "IncentivizedERC20",
"nameLocations": [
"1354:17:158"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 72276,
"src": "1354:17:158"
},
"id": 69145,
"nodeType": "InheritanceSpecifier",
"src": "1354:17:158"
}
],
"canonicalName": "FToken",
"contractDependencies": [],
"contractKind": "contract",
"documentation": {
"id": 69139,
"nodeType": "StructuredDocumentation",
"src": "1176:135:158",
"text": "@title FluidNFT ERC20 FToken\n @dev Implementation of the interest bearing token for the FluidNFT protocol\n @author FluidNFT "
},
"fullyImplemented": true,
"linearizedBaseContracts": [
70240,
72276,
27111,
47449,
27214,
27189,
28988,
26136,
48559
],
"name": "FToken",
"nameLocation": "1320:6:158",
"scope": 70241,
"usedErrors": []
}
],
"license": "AGPL-3.0"
},
"id": 158
}
Last updated