ethers-rs/ethers-solc/test-data/ast/ast-erc4626.json

6613 lines
248 KiB
JSON
Raw Permalink Normal View History

{
"absolutePath": "/home/oliver/Projects/github/rari-capital/solmate/src/mixins/ERC4626.sol",
"id": 2954,
"exportedSymbols": {
"ERC20": [
31408
],
"ERC4626": [
2953
],
"FixedPointMathLib": [
32321
],
"SafeTransferLib": [
32785
]
},
"nodeType": "SourceUnit",
"src": "42:6474:4",
"nodes": [
{
"id": 2434,
"nodeType": "PragmaDirective",
"src": "42:24:4",
"literals": [
"solidity",
">=",
"0.8",
".0"
]
},
{
"id": 2436,
"nodeType": "ImportDirective",
"src": "68:42:4",
"absolutePath": "/home/oliver/Projects/github/rari-capital/solmate/src/tokens/ERC20.sol",
"file": "../tokens/ERC20.sol",
"nameLocation": "-1:-1:-1",
"scope": 2954,
"sourceUnit": 31409,
"symbolAliases": [
{
"foreign": {
"id": 2435,
"name": "ERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"src": "76:5:4",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 2438,
"nodeType": "ImportDirective",
"src": "111:61:4",
"absolutePath": "/home/oliver/Projects/github/rari-capital/solmate/src/utils/SafeTransferLib.sol",
"file": "../utils/SafeTransferLib.sol",
"nameLocation": "-1:-1:-1",
"scope": 2954,
"sourceUnit": 32786,
"symbolAliases": [
{
"foreign": {
"id": 2437,
"name": "SafeTransferLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"src": "119:15:4",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 2440,
"nodeType": "ImportDirective",
"src": "173:65:4",
"absolutePath": "/home/oliver/Projects/github/rari-capital/solmate/src/utils/FixedPointMathLib.sol",
"file": "../utils/FixedPointMathLib.sol",
"nameLocation": "-1:-1:-1",
"scope": 2954,
"sourceUnit": 32322,
"symbolAliases": [
{
"foreign": {
"id": 2439,
"name": "FixedPointMathLib",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"src": "181:17:4",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 2953,
"nodeType": "ContractDefinition",
"src": "395:6120:4",
"nodes": [
{
"id": 2447,
"nodeType": "UsingForDirective",
"src": "436:32:4",
"libraryName": {
"id": 2444,
"name": "SafeTransferLib",
"nodeType": "IdentifierPath",
"referencedDeclaration": 32785,
"src": "442:15:4"
},
"typeName": {
"id": 2446,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 2445,
"name": "ERC20",
"nodeType": "IdentifierPath",
"referencedDeclaration": 31408,
"src": "462:5:4"
},
"referencedDeclaration": 31408,
"src": "462:5:4",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$31408",
"typeString": "contract ERC20"
}
}
},
{
"id": 2450,
"nodeType": "UsingForDirective",
"src": "473:36:4",
"libraryName": {
"id": 2448,
"name": "FixedPointMathLib",
"nodeType": "IdentifierPath",
"referencedDeclaration": 32321,
"src": "479:17:4"
},
"typeName": {
"id": 2449,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "501:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
{
"id": 2460,
"nodeType": "EventDefinition",
"src": "694:93:4",
"anonymous": false,
"name": "Deposit",
"nameLocation": "700:7:4",
"parameters": {
"id": 2459,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2452,
"indexed": true,
"mutability": "mutable",
"name": "caller",
"nameLocation": "724:6:4",
"nodeType": "VariableDeclaration",
"scope": 2460,
"src": "708:22:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 2451,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "708:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 2454,
"indexed": true,
"mutability": "mutable",
"name": "owner",
"nameLocation": "748:5:4",
"nodeType": "VariableDeclaration",
"scope": 2460,
"src": "732:21:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 2453,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "732:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 2456,
"indexed": false,
"mutability": "mutable",
"name": "assets",
"nameLocation": "763:6:4",
"nodeType": "VariableDeclaration",
"scope": 2460,
"src": "755:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2455,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "755:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 2458,
"indexed": false,
"mutability": "mutable",
"name": "shares",
"nameLocation": "779:6:4",
"nodeType": "VariableDeclaration",
"scope": 2460,
"src": "771:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2457,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "771:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "707:79:4"
}
},
{
"id": 2472,
"nodeType": "EventDefinition",
"src": "793:166:4",
"anonymous": false,
"name": "Withdraw",
"nameLocation": "799:8:4",
"parameters": {
"id": 2471,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2462,
"indexed": true,
"mutability": "mutable",
"name": "caller",
"nameLocation": "833:6:4",
"nodeType": "VariableDeclaration",
"scope": 2472,
"src": "817:22:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 2461,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "817:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 2464,
"indexed": true,
"mutability": "mutable",
"name": "receiver",
"nameLocation": "865:8:4",
"nodeType": "VariableDeclaration",
"scope": 2472,
"src": "849:24:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 2463,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "849:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 2466,
"indexed": true,
"mutability": "mutable",
"name": "owner",
"nameLocation": "899:5:4",
"nodeType": "VariableDeclaration",
"scope": 2472,
"src": "883:21:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 2465,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "883:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 2468,
"indexed": false,
"mutability": "mutable",
"name": "assets",
"nameLocation": "922:6:4",
"nodeType": "VariableDeclaration",
"scope": 2472,
"src": "914:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2467,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "914:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 2470,
"indexed": false,
"mutability": "mutable",
"name": "shares",
"nameLocation": "946:6:4",
"nodeType": "VariableDeclaration",
"scope": 2472,
"src": "938:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2469,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "938:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "807:151:4"
}
},
{
"id": 2475,
"nodeType": "VariableDeclaration",
"src": "1146:28:4",
"constant": false,
"functionSelector": "38d52e0f",
"mutability": "immutable",
"name": "asset",
"nameLocation": "1169:5:4",
"scope": 2953,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$31408",
"typeString": "contract ERC20"
},
"typeName": {
"id": 2474,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 2473,
"name": "ERC20",
"nodeType": "IdentifierPath",
"referencedDeclaration": 31408,
"src": "1146:5:4"
},
"referencedDeclaration": 31408,
"src": "1146:5:4",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$31408",
"typeString": "contract ERC20"
}
},
"visibility": "public"
},
{
"id": 2497,
"nodeType": "FunctionDefinition",
"src": "1181:172:4",
"body": {
"id": 2496,
"nodeType": "Block",
"src": "1322:31:4",
"statements": [
{
"expression": {
"id": 2494,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 2492,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2475,
"src": "1332:5:4",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$31408",
"typeString": "contract ERC20"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 2493,
"name": "_asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2478,
"src": "1340:6:4",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$31408",
"typeString": "contract ERC20"
}
},
"src": "1332:14:4",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$31408",
"typeString": "contract ERC20"
}
},
"id": 2495,
"nodeType": "ExpressionStatement",
"src": "1332:14:4"
}
]
},
"implemented": true,
"kind": "constructor",
"modifiers": [
{
"arguments": [
{
"id": 2485,
"name": "_name",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2480,
"src": "1287:5:4",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"id": 2486,
"name": "_symbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2482,
"src": "1294:7:4",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 2487,
"name": "_asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2478,
"src": "1303:6:4",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$31408",
"typeString": "contract ERC20"
}
},
"id": 2488,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "decimals",
"nodeType": "MemberAccess",
"referencedDeclaration": 31045,
"src": "1303:15:4",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
"typeString": "function () view external returns (uint8)"
}
},
"id": 2489,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1303:17:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"id": 2490,
"kind": "baseConstructorSpecifier",
"modifierName": {
"id": 2484,
"name": "ERC20",
"nodeType": "IdentifierPath",
"referencedDeclaration": 31408,
"src": "1281:5:4"
},
"nodeType": "ModifierInvocation",
"src": "1281:40:4"
}
],
"name": "",
"nameLocation": "-1:-1:-1",
"parameters": {
"id": 2483,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2478,
"mutability": "mutable",
"name": "_asset",
"nameLocation": "1208:6:4",
"nodeType": "VariableDeclaration",
"scope": 2497,
"src": "1202:12:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$31408",
"typeString": "contract ERC20"
},
"typeName": {
"id": 2477,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 2476,
"name": "ERC20",
"nodeType": "IdentifierPath",
"referencedDeclaration": 31408,
"src": "1202:5:4"
},
"referencedDeclaration": 31408,
"src": "1202:5:4",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$31408",
"typeString": "contract ERC20"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 2480,
"mutability": "mutable",
"name": "_name",
"nameLocation": "1238:5:4",
"nodeType": "VariableDeclaration",
"scope": 2497,
"src": "1224:19:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 2479,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1224:6:4",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 2482,
"mutability": "mutable",
"name": "_symbol",
"nameLocation": "1267:7:4",
"nodeType": "VariableDeclaration",
"scope": 2497,
"src": "1253:21:4",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 2481,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1253:6:4",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "1192:88:4"
},
"returnParameters": {
"id": 2491,
"nodeType": "ParameterList",
"parameters": [],
"src": "1322:0:4"
},
"scope": 2953,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"id": 2549,
"nodeType": "FunctionDefinition",
"src": "1547:516:4",
"body": {
"id": 2548,
"nodeType": "Block",
"src": "1638:425:4",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 2514,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"id": 2511,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 2507,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2504,
"src": "1732:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 2509,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2499,
"src": "1756:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 2508,
"name": "previewDeposit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2822,
"src": "1741:14:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256) view returns (uint256)"
}
},
"id": 2510,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1741:22:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1732:31:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 2512,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "1731:33:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"hexValue": "30",
"id": 2513,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1768:1:4",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1731:38:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "5a45524f5f534841524553",
"id": 2515,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1771:13:4",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_2119bd5d92259e418533f96b824fbd100e3dea453e6ac4c5f7315e6344368f2f",
"typeString": "literal_string \"ZERO_SHARES\""
},
"value": "ZERO_SHARES"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_2119bd5d92259e418533f96b824fbd100e3dea453e6ac4c5f7315e6344368f2f",
"typeString": "literal_string \"ZERO_SHARES\""
}
],
"id": 2506,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1723:7:4",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 2516,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1723:62:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 2517,
"nodeType": "ExpressionStatement",
"src": "1723:62:4"
},
{
"expression": {
"arguments": [
{
"expression": {
"id": 2521,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "1888:3:4",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 2522,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "1888:10:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"id": 2525,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "1908:4:4",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC4626_$2953",
"typeString": "contract ERC4626"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_ERC4626_$2953",
"typeString": "contract ERC4626"
}
],
"id": 2524,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1900:7:4",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 2523,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1900:7:4",
"typeDescriptions": {}
}
},
"id": 2526,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1900:13:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 2527,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2499,
"src": "1915:6:4",
"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": 2518,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2475,
"src": "1865:5:4",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$31408",
"typeString": "contract ERC20"
}
},
"id": 2520,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "safeTransferFrom",
"nodeType": "MemberAccess",
"referencedDeclaration": 32744,
"src": "1865:22:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$31408_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$31408_$",
"typeString": "function (contract ERC20,address,address,uint256)"
}
},
"id": 2528,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1865:57:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 2529,
"nodeType": "ExpressionStatement",
"src": "1865:57:4"
},
{
"expression": {
"arguments": [
{
"id": 2531,
"name": "receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2501,
"src": "1939:8:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 2532,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2504,
"src": "1949:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 2530,
"name": "_mint",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31379,
"src": "1933:5:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 2533,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1933:23:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 2534,
"nodeType": "ExpressionStatement",
"src": "1933:23:4"
},
{
"eventCall": {
"arguments": [
{
"expression": {
"id": 2536,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "1980:3:4",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 2537,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "1980:10:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 2538,
"name": "receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2501,
"src": "1992:8:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 2539,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2499,
"src": "2002:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 2540,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2504,
"src": "2010:6:4",
"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": 2535,
"name": "Deposit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2460,
"src": "1972:7:4",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256,uint256)"
}
},
"id": 2541,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1972:45:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 2542,
"nodeType": "EmitStatement",
"src": "1967:50:4"
},
{
"expression": {
"arguments": [
{
"id": 2544,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2499,
"src": "2041:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 2545,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2504,
"src": "2049:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 2543,
"name": "afterDeposit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2952,
"src": "2028:12:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (uint256,uint256)"
}
},
"id": 2546,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2028:28:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 2547,
"nodeType": "ExpressionStatement",
"src": "2028:28:4"
}
]
},
"functionSelector": "6e553f65",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "deposit",
"nameLocation": "1556:7:4",
"parameters": {
"id": 2502,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2499,
"mutability": "mutable",
"name": "assets",
"nameLocation": "1572:6:4",
"nodeType": "VariableDeclaration",
"scope": 2549,
"src": "1564:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2498,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1564:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 2501,
"mutability": "mutable",
"name": "receiver",
"nameLocation": "1588:8:4",
"nodeType": "VariableDeclaration",
"scope": 2549,
"src": "1580:16:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 2500,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1580:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "1563:34:4"
},
"returnParameters": {
"id": 2505,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2504,
"mutability": "mutable",
"name": "shares",
"nameLocation": "1630:6:4",
"nodeType": "VariableDeclaration",
"scope": 2549,
"src": "1622:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2503,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1622:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "1621:16:4"
},
"scope": 2953,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"id": 2595,
"nodeType": "FunctionDefinition",
"src": "2069:467:4",
"body": {
"id": 2594,
"nodeType": "Block",
"src": "2157:379:4",
"statements": [
{
"expression": {
"id": 2562,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 2558,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2556,
"src": "2167:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 2560,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2551,
"src": "2188:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 2559,
"name": "previewMint",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2846,
"src": "2176:11:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256) view returns (uint256)"
}
},
"id": 2561,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2176:19:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2167:28:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 2563,
"nodeType": "ExpressionStatement",
"src": "2167:28:4"
},
{
"expression": {
"arguments": [
{
"expression": {
"id": 2567,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "2361:3:4",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 2568,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "2361:10:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"id": 2571,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "2381:4:4",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC4626_$2953",
"typeString": "contract ERC4626"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_ERC4626_$2953",
"typeString": "contract ERC4626"
}
],
"id": 2570,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2373:7:4",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 2569,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2373:7:4",
"typeDescriptions": {}
}
},
"id": 2572,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2373:13:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 2573,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2556,
"src": "2388:6:4",
"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": 2564,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2475,
"src": "2338:5:4",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$31408",
"typeString": "contract ERC20"
}
},
"id": 2566,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "safeTransferFrom",
"nodeType": "MemberAccess",
"referencedDeclaration": 32744,
"src": "2338:22:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$31408_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$31408_$",
"typeString": "function (contract ERC20,address,address,uint256)"
}
},
"id": 2574,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2338:57:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 2575,
"nodeType": "ExpressionStatement",
"src": "2338:57:4"
},
{
"expression": {
"arguments": [
{
"id": 2577,
"name": "receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2553,
"src": "2412:8:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 2578,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2551,
"src": "2422:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 2576,
"name": "_mint",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31379,
"src": "2406:5:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 2579,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2406:23:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 2580,
"nodeType": "ExpressionStatement",
"src": "2406:23:4"
},
{
"eventCall": {
"arguments": [
{
"expression": {
"id": 2582,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "2453:3:4",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 2583,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "2453:10:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 2584,
"name": "receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2553,
"src": "2465:8:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 2585,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2556,
"src": "2475:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 2586,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2551,
"src": "2483:6:4",
"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": 2581,
"name": "Deposit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2460,
"src": "2445:7:4",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256,uint256)"
}
},
"id": 2587,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2445:45:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 2588,
"nodeType": "EmitStatement",
"src": "2440:50:4"
},
{
"expression": {
"arguments": [
{
"id": 2590,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2556,
"src": "2514:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 2591,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2551,
"src": "2522:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 2589,
"name": "afterDeposit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2952,
"src": "2501:12:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (uint256,uint256)"
}
},
"id": 2592,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2501:28:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 2593,
"nodeType": "ExpressionStatement",
"src": "2501:28:4"
}
]
},
"functionSelector": "94bf804d",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "mint",
"nameLocation": "2078:4:4",
"parameters": {
"id": 2554,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2551,
"mutability": "mutable",
"name": "shares",
"nameLocation": "2091:6:4",
"nodeType": "VariableDeclaration",
"scope": 2595,
"src": "2083:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2550,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2083:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 2553,
"mutability": "mutable",
"name": "receiver",
"nameLocation": "2107:8:4",
"nodeType": "VariableDeclaration",
"scope": 2595,
"src": "2099:16:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 2552,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2099:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "2082:34:4"
},
"returnParameters": {
"id": 2557,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2556,
"mutability": "mutable",
"name": "assets",
"nameLocation": "2149:6:4",
"nodeType": "VariableDeclaration",
"scope": 2595,
"src": "2141:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2555,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2141:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "2140:16:4"
},
"scope": 2953,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"id": 2673,
"nodeType": "FunctionDefinition",
"src": "2542:679:4",
"body": {
"id": 2672,
"nodeType": "Block",
"src": "2679:542:4",
"statements": [
{
"expression": {
"id": 2610,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 2606,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2604,
"src": "2689:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 2608,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2597,
"src": "2714:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 2607,
"name": "previewWithdraw",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2870,
"src": "2698:15:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256) view returns (uint256)"
}
},
"id": 2609,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2698:23:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2689:32:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 2611,
"nodeType": "ExpressionStatement",
"src": "2689:32:4"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 2615,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 2612,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "2803:3:4",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 2613,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "2803:10:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"id": 2614,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2601,
"src": "2817:5:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2803:19:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 2645,
"nodeType": "IfStatement",
"src": "2799:228:4",
"trueBody": {
"id": 2644,
"nodeType": "Block",
"src": "2824:203:4",
"statements": [
{
"assignments": [
2617
],
"declarations": [
{
"constant": false,
"id": 2617,
"mutability": "mutable",
"name": "allowed",
"nameLocation": "2846:7:4",
"nodeType": "VariableDeclaration",
"scope": 2644,
"src": "2838:15:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2616,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2838:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 2624,
"initialValue": {
"baseExpression": {
"baseExpression": {
"id": 2618,
"name": "allowance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31057,
"src": "2856:9:4",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(address => uint256))"
}
},
"id": 2620,
"indexExpression": {
"id": 2619,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2601,
"src": "2866:5:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2856:16:4",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 2623,
"indexExpression": {
"expression": {
"id": 2621,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "2873:3:4",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 2622,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "2873:10:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2856:28:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2838:46:4"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 2631,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 2625,
"name": "allowed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2617,
"src": "2939:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"expression": {
"arguments": [
{
"id": 2628,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2955:7:4",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 2627,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2955:7:4",
"typeDescriptions": {}
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
}
],
"id": 2626,
"name": "type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -27,
"src": "2950:4:4",
"typeDescriptions": {
"typeIdentifier": "t_function_metatype_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 2629,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2950:13:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_magic_meta_type_t_uint256",
"typeString": "type(uint256)"
}
},
"id": 2630,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "max",
"nodeType": "MemberAccess",
"src": "2950:17:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2939:28:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 2643,
"nodeType": "IfStatement",
"src": "2935:81:4",
"trueBody": {
"expression": {
"id": 2641,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"baseExpression": {
"id": 2632,
"name": "allowance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31057,
"src": "2969:9:4",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(address => uint256))"
}
},
"id": 2636,
"indexExpression": {
"id": 2633,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2601,
"src": "2979:5:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2969:16:4",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 2637,
"indexExpression": {
"expression": {
"id": 2634,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "2986:3:4",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 2635,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "2986:10:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "2969:28:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 2640,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 2638,
"name": "allowed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2617,
"src": "3000:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"id": 2639,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2604,
"src": "3010:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3000:16:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2969:47:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 2642,
"nodeType": "ExpressionStatement",
"src": "2969:47:4"
}
}
]
}
},
{
"expression": {
"arguments": [
{
"id": 2647,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2597,
"src": "3052:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 2648,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2604,
"src": "3060:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 2646,
"name": "beforeWithdraw",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2944,
"src": "3037:14:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (uint256,uint256)"
}
},
"id": 2649,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3037:30:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 2650,
"nodeType": "ExpressionStatement",
"src": "3037:30:4"
},
{
"expression": {
"arguments": [
{
"id": 2652,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2601,
"src": "3084:5:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 2653,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2604,
"src": "3091:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 2651,
"name": "_burn",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31407,
"src": "3078:5:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 2654,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3078:20:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 2655,
"nodeType": "ExpressionStatement",
"src": "3078:20:4"
},
{
"eventCall": {
"arguments": [
{
"expression": {
"id": 2657,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "3123:3:4",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 2658,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "3123:10:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 2659,
"name": "receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2599,
"src": "3135:8:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 2660,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2601,
"src": "3145:5:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 2661,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2597,
"src": "3152:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 2662,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2604,
"src": "3160:6:4",
"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"
}
],
"id": 2656,
"name": "Withdraw",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2472,
"src": "3114:8:4",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,address,address,uint256,uint256)"
}
},
"id": 2663,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3114:53:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 2664,
"nodeType": "EmitStatement",
"src": "3109:58:4"
},
{
"expression": {
"arguments": [
{
"id": 2668,
"name": "receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2599,
"src": "3197:8:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 2669,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2597,
"src": "3207:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 2665,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2475,
"src": "3178:5:4",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$31408",
"typeString": "contract ERC20"
}
},
"id": 2667,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "safeTransfer",
"nodeType": "MemberAccess",
"referencedDeclaration": 32764,
"src": "3178:18:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$31408_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$31408_$",
"typeString": "function (contract ERC20,address,uint256)"
}
},
"id": 2670,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3178:36:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 2671,
"nodeType": "ExpressionStatement",
"src": "3178:36:4"
}
]
},
"functionSelector": "b460af94",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "withdraw",
"nameLocation": "2551:8:4",
"parameters": {
"id": 2602,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2597,
"mutability": "mutable",
"name": "assets",
"nameLocation": "2577:6:4",
"nodeType": "VariableDeclaration",
"scope": 2673,
"src": "2569:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2596,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2569:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 2599,
"mutability": "mutable",
"name": "receiver",
"nameLocation": "2601:8:4",
"nodeType": "VariableDeclaration",
"scope": 2673,
"src": "2593:16:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 2598,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2593:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 2601,
"mutability": "mutable",
"name": "owner",
"nameLocation": "2627:5:4",
"nodeType": "VariableDeclaration",
"scope": 2673,
"src": "2619:13:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 2600,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2619:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "2559:79:4"
},
"returnParameters": {
"id": 2605,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2604,
"mutability": "mutable",
"name": "shares",
"nameLocation": "2671:6:4",
"nodeType": "VariableDeclaration",
"scope": 2673,
"src": "2663:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2603,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2663:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "2662:16:4"
},
"scope": 2953,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"id": 2757,
"nodeType": "FunctionDefinition",
"src": "3227:713:4",
"body": {
"id": 2756,
"nodeType": "Block",
"src": "3362:578:4",
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 2687,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 2684,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "3376:3:4",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 2685,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "3376:10:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"id": 2686,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2679,
"src": "3390:5:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3376:19:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 2717,
"nodeType": "IfStatement",
"src": "3372:228:4",
"trueBody": {
"id": 2716,
"nodeType": "Block",
"src": "3397:203:4",
"statements": [
{
"assignments": [
2689
],
"declarations": [
{
"constant": false,
"id": 2689,
"mutability": "mutable",
"name": "allowed",
"nameLocation": "3419:7:4",
"nodeType": "VariableDeclaration",
"scope": 2716,
"src": "3411:15:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2688,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3411:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 2696,
"initialValue": {
"baseExpression": {
"baseExpression": {
"id": 2690,
"name": "allowance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31057,
"src": "3429:9:4",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(address => uint256))"
}
},
"id": 2692,
"indexExpression": {
"id": 2691,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2679,
"src": "3439:5:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3429:16:4",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 2695,
"indexExpression": {
"expression": {
"id": 2693,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "3446:3:4",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 2694,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "3446:10:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3429:28:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3411:46:4"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 2703,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 2697,
"name": "allowed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2689,
"src": "3512:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"expression": {
"arguments": [
{
"id": 2700,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3528:7:4",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 2699,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3528:7:4",
"typeDescriptions": {}
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
}
],
"id": 2698,
"name": "type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -27,
"src": "3523:4:4",
"typeDescriptions": {
"typeIdentifier": "t_function_metatype_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 2701,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3523:13:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_magic_meta_type_t_uint256",
"typeString": "type(uint256)"
}
},
"id": 2702,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "max",
"nodeType": "MemberAccess",
"src": "3523:17:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3512:28:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 2715,
"nodeType": "IfStatement",
"src": "3508:81:4",
"trueBody": {
"expression": {
"id": 2713,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"baseExpression": {
"id": 2704,
"name": "allowance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31057,
"src": "3542:9:4",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(address => uint256))"
}
},
"id": 2708,
"indexExpression": {
"id": 2705,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2679,
"src": "3552:5:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3542:16:4",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 2709,
"indexExpression": {
"expression": {
"id": 2706,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "3559:3:4",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 2707,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "3559:10:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "3542:28:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 2712,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 2710,
"name": "allowed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2689,
"src": "3573:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"id": 2711,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2675,
"src": "3583:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3573:16:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3542:47:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 2714,
"nodeType": "ExpressionStatement",
"src": "3542:47:4"
}
}
]
}
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 2726,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"components": [
{
"id": 2723,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 2719,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2682,
"src": "3693:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 2721,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2675,
"src": "3716:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 2720,
"name": "previewRedeem",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2882,
"src": "3702:13:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256) view returns (uint256)"
}
},
"id": 2722,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3702:21:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3693:30:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 2724,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "3692:32:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"hexValue": "30",
"id": 2725,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3728:1:4",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3692:37:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "5a45524f5f415353455453",
"id": 2727,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3731:13:4",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_bf169ab2ef12d57708bb5afe72ea54ba3ad2eccb91dd95f37571afa377c52483",
"typeString": "literal_string \"ZERO_ASSETS\""
},
"value": "ZERO_ASSETS"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_bf169ab2ef12d57708bb5afe72ea54ba3ad2eccb91dd95f37571afa377c52483",
"typeString": "literal_string \"ZERO_ASSETS\""
}
],
"id": 2718,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "3684:7:4",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 2728,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3684:61:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 2729,
"nodeType": "ExpressionStatement",
"src": "3684:61:4"
},
{
"expression": {
"arguments": [
{
"id": 2731,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2682,
"src": "3771:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 2732,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2675,
"src": "3779:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 2730,
"name": "beforeWithdraw",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2944,
"src": "3756:14:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (uint256,uint256)"
}
},
"id": 2733,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3756:30:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 2734,
"nodeType": "ExpressionStatement",
"src": "3756:30:4"
},
{
"expression": {
"arguments": [
{
"id": 2736,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2679,
"src": "3803:5:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 2737,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2675,
"src": "3810:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 2735,
"name": "_burn",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31407,
"src": "3797:5:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 2738,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3797:20:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 2739,
"nodeType": "ExpressionStatement",
"src": "3797:20:4"
},
{
"eventCall": {
"arguments": [
{
"expression": {
"id": 2741,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "3842:3:4",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 2742,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "3842:10:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 2743,
"name": "receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2677,
"src": "3854:8:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 2744,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2679,
"src": "3864:5:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 2745,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2682,
"src": "3871:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 2746,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2675,
"src": "3879:6:4",
"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"
}
],
"id": 2740,
"name": "Withdraw",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2472,
"src": "3833:8:4",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
"typeString": "function (address,address,address,uint256,uint256)"
}
},
"id": 2747,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3833:53:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 2748,
"nodeType": "EmitStatement",
"src": "3828:58:4"
},
{
"expression": {
"arguments": [
{
"id": 2752,
"name": "receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2677,
"src": "3916:8:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 2753,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2682,
"src": "3926:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 2749,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2475,
"src": "3897:5:4",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$31408",
"typeString": "contract ERC20"
}
},
"id": 2751,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "safeTransfer",
"nodeType": "MemberAccess",
"referencedDeclaration": 32764,
"src": "3897:18:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$31408_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$31408_$",
"typeString": "function (contract ERC20,address,uint256)"
}
},
"id": 2754,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3897:36:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 2755,
"nodeType": "ExpressionStatement",
"src": "3897:36:4"
}
]
},
"functionSelector": "ba087652",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "redeem",
"nameLocation": "3236:6:4",
"parameters": {
"id": 2680,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2675,
"mutability": "mutable",
"name": "shares",
"nameLocation": "3260:6:4",
"nodeType": "VariableDeclaration",
"scope": 2757,
"src": "3252:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2674,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3252:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 2677,
"mutability": "mutable",
"name": "receiver",
"nameLocation": "3284:8:4",
"nodeType": "VariableDeclaration",
"scope": 2757,
"src": "3276:16:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 2676,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3276:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 2679,
"mutability": "mutable",
"name": "owner",
"nameLocation": "3310:5:4",
"nodeType": "VariableDeclaration",
"scope": 2757,
"src": "3302:13:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 2678,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3302:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "3242:79:4"
},
"returnParameters": {
"id": 2683,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2682,
"mutability": "mutable",
"name": "assets",
"nameLocation": "3354:6:4",
"nodeType": "VariableDeclaration",
"scope": 2757,
"src": "3346:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2681,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3346:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "3345:16:4"
},
"scope": 2953,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "public"
},
{
"id": 2762,
"nodeType": "FunctionDefinition",
"src": "4130:61:4",
"functionSelector": "01e1d114",
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "totalAssets",
"nameLocation": "4139:11:4",
"parameters": {
"id": 2758,
"nodeType": "ParameterList",
"parameters": [],
"src": "4150:2:4"
},
"returnParameters": {
"id": 2761,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2760,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 2762,
"src": "4182:7:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2759,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4182:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "4181:9:4"
},
"scope": 2953,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 2786,
"nodeType": "FunctionDefinition",
"src": "4197:257:4",
"body": {
"id": 2785,
"nodeType": "Block",
"src": "4276:178:4",
"statements": [
{
"assignments": [
2770
],
"declarations": [
{
"constant": false,
"id": 2770,
"mutability": "mutable",
"name": "supply",
"nameLocation": "4294:6:4",
"nodeType": "VariableDeclaration",
"scope": 2785,
"src": "4286:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2769,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4286:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 2772,
"initialValue": {
"id": 2771,
"name": "totalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31047,
"src": "4303:11:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4286:28:4"
},
{
"expression": {
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 2775,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 2773,
"name": "supply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2770,
"src": "4384:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 2774,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4394:1:4",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "4384:11:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseExpression": {
"arguments": [
{
"id": 2779,
"name": "supply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2770,
"src": "4425:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 2780,
"name": "totalAssets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2762,
"src": "4433:11:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 2781,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4433:13:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 2777,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2764,
"src": "4407:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 2778,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "mulDivDown",
"nodeType": "MemberAccess",
"referencedDeclaration": 32285,
"src": "4407:17:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
}
},
"id": 2782,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4407:40:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 2783,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "Conditional",
"src": "4384:63:4",
"trueExpression": {
"id": 2776,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2764,
"src": "4398:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 2768,
"id": 2784,
"nodeType": "Return",
"src": "4377:70:4"
}
]
},
"functionSelector": "c6e6f592",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "convertToShares",
"nameLocation": "4206:15:4",
"parameters": {
"id": 2765,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2764,
"mutability": "mutable",
"name": "assets",
"nameLocation": "4230:6:4",
"nodeType": "VariableDeclaration",
"scope": 2786,
"src": "4222:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2763,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4222:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "4221:16:4"
},
"returnParameters": {
"id": 2768,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2767,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 2786,
"src": "4267:7:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2766,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4267:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "4266:9:4"
},
"scope": 2953,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 2810,
"nodeType": "FunctionDefinition",
"src": "4460:257:4",
"body": {
"id": 2809,
"nodeType": "Block",
"src": "4539:178:4",
"statements": [
{
"assignments": [
2794
],
"declarations": [
{
"constant": false,
"id": 2794,
"mutability": "mutable",
"name": "supply",
"nameLocation": "4557:6:4",
"nodeType": "VariableDeclaration",
"scope": 2809,
"src": "4549:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2793,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4549:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 2796,
"initialValue": {
"id": 2795,
"name": "totalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31047,
"src": "4566:11:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4549:28:4"
},
{
"expression": {
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 2799,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 2797,
"name": "supply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2794,
"src": "4647:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 2798,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4657:1:4",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "4647:11:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseExpression": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 2803,
"name": "totalAssets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2762,
"src": "4688:11:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 2804,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4688:13:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 2805,
"name": "supply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2794,
"src": "4703:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 2801,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2788,
"src": "4670:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 2802,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "mulDivDown",
"nodeType": "MemberAccess",
"referencedDeclaration": 32285,
"src": "4670:17:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
}
},
"id": 2806,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4670:40:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 2807,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "Conditional",
"src": "4647:63:4",
"trueExpression": {
"id": 2800,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2788,
"src": "4661:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 2792,
"id": 2808,
"nodeType": "Return",
"src": "4640:70:4"
}
]
},
"functionSelector": "07a2d13a",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "convertToAssets",
"nameLocation": "4469:15:4",
"parameters": {
"id": 2789,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2788,
"mutability": "mutable",
"name": "shares",
"nameLocation": "4493:6:4",
"nodeType": "VariableDeclaration",
"scope": 2810,
"src": "4485:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2787,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4485:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "4484:16:4"
},
"returnParameters": {
"id": 2792,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2791,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 2810,
"src": "4530:7:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2790,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4530:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "4529:9:4"
},
"scope": 2953,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 2822,
"nodeType": "FunctionDefinition",
"src": "4723:125:4",
"body": {
"id": 2821,
"nodeType": "Block",
"src": "4801:47:4",
"statements": [
{
"expression": {
"arguments": [
{
"id": 2818,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2812,
"src": "4834:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 2817,
"name": "convertToShares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2786,
"src": "4818:15:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256) view returns (uint256)"
}
},
"id": 2819,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4818:23:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 2816,
"id": 2820,
"nodeType": "Return",
"src": "4811:30:4"
}
]
},
"functionSelector": "ef8b30f7",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "previewDeposit",
"nameLocation": "4732:14:4",
"parameters": {
"id": 2813,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2812,
"mutability": "mutable",
"name": "assets",
"nameLocation": "4755:6:4",
"nodeType": "VariableDeclaration",
"scope": 2822,
"src": "4747:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2811,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4747:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "4746:16:4"
},
"returnParameters": {
"id": 2816,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2815,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 2822,
"src": "4792:7:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2814,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4792:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "4791:9:4"
},
"scope": 2953,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 2846,
"nodeType": "FunctionDefinition",
"src": "4854:251:4",
"body": {
"id": 2845,
"nodeType": "Block",
"src": "4929:176:4",
"statements": [
{
"assignments": [
2830
],
"declarations": [
{
"constant": false,
"id": 2830,
"mutability": "mutable",
"name": "supply",
"nameLocation": "4947:6:4",
"nodeType": "VariableDeclaration",
"scope": 2845,
"src": "4939:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2829,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4939:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 2832,
"initialValue": {
"id": 2831,
"name": "totalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31047,
"src": "4956:11:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4939:28:4"
},
{
"expression": {
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 2835,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 2833,
"name": "supply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2830,
"src": "5037:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 2834,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5047:1:4",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "5037:11:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseExpression": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 2839,
"name": "totalAssets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2762,
"src": "5076:11:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 2840,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5076:13:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 2841,
"name": "supply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2830,
"src": "5091:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 2837,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2824,
"src": "5060:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 2838,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "mulDivUp",
"nodeType": "MemberAccess",
"referencedDeclaration": 32298,
"src": "5060:15:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
}
},
"id": 2842,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5060:38:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 2843,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "Conditional",
"src": "5037:61:4",
"trueExpression": {
"id": 2836,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2824,
"src": "5051:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 2828,
"id": 2844,
"nodeType": "Return",
"src": "5030:68:4"
}
]
},
"functionSelector": "b3d7f6b9",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "previewMint",
"nameLocation": "4863:11:4",
"parameters": {
"id": 2825,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2824,
"mutability": "mutable",
"name": "shares",
"nameLocation": "4883:6:4",
"nodeType": "VariableDeclaration",
"scope": 2846,
"src": "4875:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2823,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4875:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "4874:16:4"
},
"returnParameters": {
"id": 2828,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2827,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 2846,
"src": "4920:7:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2826,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4920:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "4919:9:4"
},
"scope": 2953,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 2870,
"nodeType": "FunctionDefinition",
"src": "5111:255:4",
"body": {
"id": 2869,
"nodeType": "Block",
"src": "5190:176:4",
"statements": [
{
"assignments": [
2854
],
"declarations": [
{
"constant": false,
"id": 2854,
"mutability": "mutable",
"name": "supply",
"nameLocation": "5208:6:4",
"nodeType": "VariableDeclaration",
"scope": 2869,
"src": "5200:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2853,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5200:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 2856,
"initialValue": {
"id": 2855,
"name": "totalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31047,
"src": "5217:11:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5200:28:4"
},
{
"expression": {
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 2859,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 2857,
"name": "supply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2854,
"src": "5298:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 2858,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5308:1:4",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "5298:11:4",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseExpression": {
"arguments": [
{
"id": 2863,
"name": "supply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2854,
"src": "5337:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 2864,
"name": "totalAssets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2762,
"src": "5345:11:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 2865,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5345:13:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 2861,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2848,
"src": "5321:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 2862,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "mulDivUp",
"nodeType": "MemberAccess",
"referencedDeclaration": 32298,
"src": "5321:15:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
}
},
"id": 2866,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5321:38:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 2867,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "Conditional",
"src": "5298:61:4",
"trueExpression": {
"id": 2860,
"name": "assets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2848,
"src": "5312:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 2852,
"id": 2868,
"nodeType": "Return",
"src": "5291:68:4"
}
]
},
"functionSelector": "0a28a477",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "previewWithdraw",
"nameLocation": "5120:15:4",
"parameters": {
"id": 2849,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2848,
"mutability": "mutable",
"name": "assets",
"nameLocation": "5144:6:4",
"nodeType": "VariableDeclaration",
"scope": 2870,
"src": "5136:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2847,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5136:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "5135:16:4"
},
"returnParameters": {
"id": 2852,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2851,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 2870,
"src": "5181:7:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2850,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5181:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "5180:9:4"
},
"scope": 2953,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 2882,
"nodeType": "FunctionDefinition",
"src": "5372:124:4",
"body": {
"id": 2881,
"nodeType": "Block",
"src": "5449:47:4",
"statements": [
{
"expression": {
"arguments": [
{
"id": 2878,
"name": "shares",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2872,
"src": "5482:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 2877,
"name": "convertToAssets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2810,
"src": "5466:15:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256) view returns (uint256)"
}
},
"id": 2879,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5466:23:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 2876,
"id": 2880,
"nodeType": "Return",
"src": "5459:30:4"
}
]
},
"functionSelector": "4cdad506",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "previewRedeem",
"nameLocation": "5381:13:4",
"parameters": {
"id": 2873,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2872,
"mutability": "mutable",
"name": "shares",
"nameLocation": "5403:6:4",
"nodeType": "VariableDeclaration",
"scope": 2882,
"src": "5395:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2871,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5395:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "5394:16:4"
},
"returnParameters": {
"id": 2876,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2875,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 2882,
"src": "5440:7:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2874,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5440:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "5439:9:4"
},
"scope": 2953,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 2896,
"nodeType": "FunctionDefinition",
"src": "5693:108:4",
"body": {
"id": 2895,
"nodeType": "Block",
"src": "5760:41:4",
"statements": [
{
"expression": {
"expression": {
"arguments": [
{
"id": 2891,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "5782:7:4",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 2890,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5782:7:4",
"typeDescriptions": {}
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
}
],
"id": 2889,
"name": "type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -27,
"src": "5777:4:4",
"typeDescriptions": {
"typeIdentifier": "t_function_metatype_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 2892,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5777:13:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_magic_meta_type_t_uint256",
"typeString": "type(uint256)"
}
},
"id": 2893,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "max",
"nodeType": "MemberAccess",
"src": "5777:17:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 2888,
"id": 2894,
"nodeType": "Return",
"src": "5770:24:4"
}
]
},
"functionSelector": "402d267d",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "maxDeposit",
"nameLocation": "5702:10:4",
"parameters": {
"id": 2885,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2884,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 2896,
"src": "5713:7:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 2883,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5713:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "5712:9:4"
},
"returnParameters": {
"id": 2888,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2887,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 2896,
"src": "5751:7:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2886,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5751:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "5750:9:4"
},
"scope": 2953,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 2910,
"nodeType": "FunctionDefinition",
"src": "5807:105:4",
"body": {
"id": 2909,
"nodeType": "Block",
"src": "5871:41:4",
"statements": [
{
"expression": {
"expression": {
"arguments": [
{
"id": 2905,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "5893:7:4",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 2904,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5893:7:4",
"typeDescriptions": {}
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
}
],
"id": 2903,
"name": "type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -27,
"src": "5888:4:4",
"typeDescriptions": {
"typeIdentifier": "t_function_metatype_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 2906,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5888:13:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_magic_meta_type_t_uint256",
"typeString": "type(uint256)"
}
},
"id": 2907,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "max",
"nodeType": "MemberAccess",
"src": "5888:17:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 2902,
"id": 2908,
"nodeType": "Return",
"src": "5881:24:4"
}
]
},
"functionSelector": "c63d75b6",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "maxMint",
"nameLocation": "5816:7:4",
"parameters": {
"id": 2899,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2898,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 2910,
"src": "5824:7:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 2897,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5824:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "5823:9:4"
},
"returnParameters": {
"id": 2902,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2901,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 2910,
"src": "5862:7:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2900,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5862:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "5861:9:4"
},
"scope": 2953,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 2924,
"nodeType": "FunctionDefinition",
"src": "5918:131:4",
"body": {
"id": 2923,
"nodeType": "Block",
"src": "5992:57:4",
"statements": [
{
"expression": {
"arguments": [
{
"baseExpression": {
"id": 2918,
"name": "balanceOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31051,
"src": "6025:9:4",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 2920,
"indexExpression": {
"id": 2919,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2912,
"src": "6035:5:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "6025:16:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 2917,
"name": "convertToAssets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2810,
"src": "6009:15:4",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256) view returns (uint256)"
}
},
"id": 2921,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6009:33:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 2916,
"id": 2922,
"nodeType": "Return",
"src": "6002:40:4"
}
]
},
"functionSelector": "ce96cb77",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "maxWithdraw",
"nameLocation": "5927:11:4",
"parameters": {
"id": 2913,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2912,
"mutability": "mutable",
"name": "owner",
"nameLocation": "5947:5:4",
"nodeType": "VariableDeclaration",
"scope": 2924,
"src": "5939:13:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 2911,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5939:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "5938:15:4"
},
"returnParameters": {
"id": 2916,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2915,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 2924,
"src": "5983:7:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2914,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5983:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "5982:9:4"
},
"scope": 2953,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 2936,
"nodeType": "FunctionDefinition",
"src": "6055:112:4",
"body": {
"id": 2935,
"nodeType": "Block",
"src": "6127:40:4",
"statements": [
{
"expression": {
"baseExpression": {
"id": 2931,
"name": "balanceOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31051,
"src": "6144:9:4",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 2933,
"indexExpression": {
"id": 2932,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2926,
"src": "6154:5:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "6144:16:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 2930,
"id": 2934,
"nodeType": "Return",
"src": "6137:23:4"
}
]
},
"functionSelector": "d905777e",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "maxRedeem",
"nameLocation": "6064:9:4",
"parameters": {
"id": 2927,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2926,
"mutability": "mutable",
"name": "owner",
"nameLocation": "6082:5:4",
"nodeType": "VariableDeclaration",
"scope": 2936,
"src": "6074:13:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 2925,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6074:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "6073:15:4"
},
"returnParameters": {
"id": 2930,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2929,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 2936,
"src": "6118:7:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2928,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6118:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "6117:9:4"
},
"scope": 2953,
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"id": 2944,
"nodeType": "FunctionDefinition",
"src": "6359:75:4",
"body": {
"id": 2943,
"nodeType": "Block",
"src": "6432:2:4",
"statements": []
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "beforeWithdraw",
"nameLocation": "6368:14:4",
"parameters": {
"id": 2941,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2938,
"mutability": "mutable",
"name": "assets",
"nameLocation": "6391:6:4",
"nodeType": "VariableDeclaration",
"scope": 2944,
"src": "6383:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2937,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6383:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 2940,
"mutability": "mutable",
"name": "shares",
"nameLocation": "6407:6:4",
"nodeType": "VariableDeclaration",
"scope": 2944,
"src": "6399:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2939,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6399:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "6382:32:4"
},
"returnParameters": {
"id": 2942,
"nodeType": "ParameterList",
"parameters": [],
"src": "6432:0:4"
},
"scope": 2953,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
},
{
"id": 2952,
"nodeType": "FunctionDefinition",
"src": "6440:73:4",
"body": {
"id": 2951,
"nodeType": "Block",
"src": "6511:2:4",
"statements": []
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "afterDeposit",
"nameLocation": "6449:12:4",
"parameters": {
"id": 2949,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2946,
"mutability": "mutable",
"name": "assets",
"nameLocation": "6470:6:4",
"nodeType": "VariableDeclaration",
"scope": 2952,
"src": "6462:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2945,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6462:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 2948,
"mutability": "mutable",
"name": "shares",
"nameLocation": "6486:6:4",
"nodeType": "VariableDeclaration",
"scope": 2952,
"src": "6478:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2947,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6478:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "6461:32:4"
},
"returnParameters": {
"id": 2950,
"nodeType": "ParameterList",
"parameters": [],
"src": "6511:0:4"
},
"scope": 2953,
"stateMutability": "nonpayable",
"virtual": true,
"visibility": "internal"
}
],
"abstract": true,
"baseContracts": [
{
"baseName": {
"id": 2442,
"name": "ERC20",
"nodeType": "IdentifierPath",
"referencedDeclaration": 31408,
"src": "424:5:4"
},
"id": 2443,
"nodeType": "InheritanceSpecifier",
"src": "424:5:4"
}
],
"canonicalName": "ERC4626",
"contractDependencies": [],
"contractKind": "contract",
"documentation": {
"id": 2441,
"nodeType": "StructuredDocumentation",
"src": "240:155:4",
"text": "@notice Minimal ERC4626 tokenized Vault implementation.\n @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/mixins/ERC4626.sol)"
},
"fullyImplemented": false,
"linearizedBaseContracts": [
2953,
31408
],
"name": "ERC4626",
"nameLocation": "413:7:4",
"scope": 2954,
"usedErrors": []
}
],
"license": "AGPL-3.0-only"
}