UNPKG

tokenboost-solidity

Version:
1,059 lines (1,058 loc) 213 kB
{ "contractName": "Actions", "abi": [], "bytecode": "0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a723058203f4814719e1211140fccf87eb75be3f93e3c86f4d90f3e361616daead713005c0029", "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fd00a165627a7a723058203f4814719e1211140fccf87eb75be3f93e3c86f4d90f3e361616daead713005c0029", "sourceMap": "94:1124:14:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24", "deployedSourceMap": "94:1124:14:-;;;;;;;;", "source": "pragma solidity ^0.4.24;\n\nimport \"../utils/strings.sol\";\nimport \"../utils/AddressUtils.sol\";\n\nlibrary Actions {\n using strings for *;\n using AddressUtils for address;\n\n struct Action {\n bool exists;\n address to;\n string functionSelector;\n string arguments;\n string confirm;\n }\n\n function empty() internal pure returns (Action memory) {\n return Action(false, address(0), \"\", \"\", \"\");\n }\n\n function toJson(Action memory _self) internal pure returns (string) {\n if (_self.exists) {\n string memory json = '{\"address\":\"';\n json = json.toSlice().concat(_self.to.toString().toSlice());\n json = json.toSlice().concat('\",\"functionSelector\":\"'.toSlice());\n json = json.toSlice().concat(_self.functionSelector.toSlice());\n json = json.toSlice().concat('\",\"arguments\":'.toSlice());\n json = json.toSlice().concat(_self.arguments.toSlice());\n json = json.toSlice().concat(',\"confirm\":\"'.toSlice());\n json = json.toSlice().concat(_self.confirm.toSlice());\n return json.toSlice().concat('\"}'.toSlice());\n } else {\n return \"null\";\n }\n }\n}\n", "sourcePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity/contracts/widget/Actions.sol", "ast": { "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity/contracts/widget/Actions.sol", "exportedSymbols": { "Actions": [ 3876 ] }, "id": 3877, "nodeType": "SourceUnit", "nodes": [ { "id": 3730, "literals": [ "solidity", "^", "0.4", ".24" ], "nodeType": "PragmaDirective", "src": "0:24:14" }, { "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity/contracts/utils/strings.sol", "file": "../utils/strings.sol", "id": 3731, "nodeType": "ImportDirective", "scope": 3877, "sourceUnit": 3729, "src": "26:30:14", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity/contracts/utils/AddressUtils.sol", "file": "../utils/AddressUtils.sol", "id": 3732, "nodeType": "ImportDirective", "scope": 3877, "sourceUnit": 1943, "src": "57:35:14", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": null, "fullyImplemented": true, "id": 3876, "linearizedBaseContracts": [ 3876 ], "name": "Actions", "nodeType": "ContractDefinition", "nodes": [ { "id": 3734, "libraryName": { "contractScope": null, "id": 3733, "name": "strings", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 3728, "src": "122:7:14", "typeDescriptions": { "typeIdentifier": "t_contract$_strings_$3728", "typeString": "library strings" } }, "nodeType": "UsingForDirective", "src": "116:20:14", "typeName": null }, { "id": 3737, "libraryName": { "contractScope": null, "id": 3735, "name": "AddressUtils", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1942, "src": "147:12:14", "typeDescriptions": { "typeIdentifier": "t_contract$_AddressUtils_$1942", "typeString": "library AddressUtils" } }, "nodeType": "UsingForDirective", "src": "141:31:14", "typeName": { "id": 3736, "name": "address", "nodeType": "ElementaryTypeName", "src": "164:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, { "canonicalName": "Actions.Action", "id": 3748, "members": [ { "constant": false, "id": 3739, "name": "exists", "nodeType": "VariableDeclaration", "scope": 3748, "src": "202:11:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 3738, "name": "bool", "nodeType": "ElementaryTypeName", "src": "202:4:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 3741, "name": "to", "nodeType": "VariableDeclaration", "scope": 3748, "src": "223:10:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 3740, "name": "address", "nodeType": "ElementaryTypeName", "src": "223:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 3743, "name": "functionSelector", "nodeType": "VariableDeclaration", "scope": 3748, "src": "243:23:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" }, "typeName": { "id": 3742, "name": "string", "nodeType": "ElementaryTypeName", "src": "243:6:14", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 3745, "name": "arguments", "nodeType": "VariableDeclaration", "scope": 3748, "src": "276:16:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" }, "typeName": { "id": 3744, "name": "string", "nodeType": "ElementaryTypeName", "src": "276:6:14", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 3747, "name": "confirm", "nodeType": "VariableDeclaration", "scope": 3748, "src": "302:14:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" }, "typeName": { "id": 3746, "name": "string", "nodeType": "ElementaryTypeName", "src": "302:6:14", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" } ], "name": "Action", "nodeType": "StructDefinition", "scope": 3876, "src": "178:145:14", "visibility": "public" }, { "body": { "id": 3763, "nodeType": "Block", "src": "384:61:14", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "66616c7365", "id": 3754, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "408:5:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 3756, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "423:1:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 3755, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "415:7:14", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 3757, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "415:10:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "hexValue": "", "id": 3758, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "427:2:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" }, "value": "" }, { "argumentTypes": null, "hexValue": "", "id": 3759, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "431:2:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" }, "value": "" }, { "argumentTypes": null, "hexValue": "", "id": 3760, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "435:2:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" }, "value": "" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" }, { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" }, { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" } ], "id": 3753, "name": "Action", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3748, "src": "401:6:14", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_Action_$3748_storage_ptr_$", "typeString": "type(struct Actions.Action storage pointer)" } }, "id": 3761, "isConstant": false, "isLValue": false, "isPure": true, "kind": "structConstructorCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "401:37:14", "typeDescriptions": { "typeIdentifier": "t_struct$_Action_$3748_memory", "typeString": "struct Actions.Action memory" } }, "functionReturnParameters": 3752, "id": 3762, "nodeType": "Return", "src": "394:44:14" } ] }, "documentation": null, "id": 3764, "implemented": true, "isConstructor": false, "isDeclaredConst": true, "modifiers": [], "name": "empty", "nodeType": "FunctionDefinition", "parameters": { "id": 3749, "nodeType": "ParameterList", "parameters": [], "src": "343:2:14" }, "payable": false, "returnParameters": { "id": 3752, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 3751, "name": "", "nodeType": "VariableDeclaration", "scope": 3764, "src": "369:6:14", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_Action_$3748_memory_ptr", "typeString": "struct Actions.Action" }, "typeName": { "contractScope": null, "id": 3750, "name": "Action", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 3748, "src": "369:6:14", "typeDescriptions": { "typeIdentifier": "t_struct$_Action_$3748_storage_ptr", "typeString": "struct Actions.Action" } }, "value": null, "visibility": "internal" } ], "src": "368:15:14" }, "scope": 3876, "src": "329:116:14", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { "id": 3874, "nodeType": "Block", "src": "519:697:14", "statements": [ { "condition": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3771, "name": "_self", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3766, "src": "533:5:14", "typeDescriptions": { "typeIdentifier": "t_struct$_Action_$3748_memory_ptr", "typeString": "struct Actions.Action memory" } }, "id": 3772, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "exists", "nodeType": "MemberAccess", "referencedDeclaration": 3739, "src": "533:12:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 3872, "nodeType": "Block", "src": "1172:38:14", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "6e756c6c", "id": 3870, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1193:6:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_efbde2c3aee204a69b7696d4b10ff31137fe78e3946306284f806e2dfc68b805", "typeString": "literal_string \"null\"" }, "value": "null" }, "functionReturnParameters": 3770, "id": 3871, "nodeType": "Return", "src": "1186:13:14" } ] }, "id": 3873, "nodeType": "IfStatement", "src": "529:681:14", "trueBody": { "id": 3869, "nodeType": "Block", "src": "547:619:14", "statements": [ { "assignments": [ 3774 ], "declarations": [ { "constant": false, "id": 3774, "name": "json", "nodeType": "VariableDeclaration", "scope": 3875, "src": "561:18:14", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 3773, "name": "string", "nodeType": "ElementaryTypeName", "src": "561:6:14", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" } ], "id": 3776, "initialValue": { "argumentTypes": null, "hexValue": "7b2261646472657373223a22", "id": 3775, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "582:14:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_44809c325c685992218e65a7cd52ab64712bb8f19767919ea44cbfa2eeb49ae9", "typeString": "literal_string \"{\"address\":\"\"" }, "value": "{\"address\":\"" }, "nodeType": "VariableDeclarationStatement", "src": "561:35:14" }, { "expression": { "argumentTypes": null, "id": 3789, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 3777, "name": "json", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3774, "src": "610:4:14", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3782, "name": "_self", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3766, "src": "639:5:14", "typeDescriptions": { "typeIdentifier": "t_struct$_Action_$3748_memory_ptr", "typeString": "struct Actions.Action memory" } }, "id": 3783, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "to", "nodeType": "MemberAccess", "referencedDeclaration": 3741, "src": "639:8:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 3784, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toString", "nodeType": "MemberAccess", "referencedDeclaration": 1941, "src": "639:17:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_string_memory_ptr_$bound_to$_t_address_$", "typeString": "function (address) pure returns (string memory)" } }, "id": 3785, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "639:19:14", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "id": 3786, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toSlice", "nodeType": "MemberAccess", "referencedDeclaration": 2100, "src": "639:27:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$", "typeString": "function (string memory) pure returns (struct strings.slice memory)" } }, "id": 3787, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "639:29:14", "typeDescriptions": { "typeIdentifier": "t_struct$_slice_$2040_memory_ptr", "typeString": "struct strings.slice memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_struct$_slice_$2040_memory_ptr", "typeString": "struct strings.slice memory" } ], "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "id": 3778, "name": "json", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3774, "src": "617:4:14", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "id": 3779, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toSlice", "nodeType": "MemberAccess", "referencedDeclaration": 2100, "src": "617:12:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$", "typeString": "function (string memory) pure returns (struct strings.slice memory)" } }, "id": 3780, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "617:14:14", "typeDescriptions": { "typeIdentifier": "t_struct$_slice_$2040_memory_ptr", "typeString": "struct strings.slice memory" } }, "id": 3781, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "concat", "nodeType": "MemberAccess", "referencedDeclaration": 3613, "src": "617:21:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$", "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)" } }, "id": 3788, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "617:52:14", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "src": "610:59:14", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "id": 3790, "nodeType": "ExpressionStatement", "src": "610:59:14" }, { "expression": { "argumentTypes": null, "id": 3800, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 3791, "name": "json", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3774, "src": "683:4:14", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "hexValue": "222c2266756e6374696f6e53656c6563746f72223a22", "id": 3796, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "712:24:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_07bc42a4e638db01b08907e06d690a4eb3a44d39ef30e7460012025394fc4133", "typeString": "literal_string \"\",\"functionSelector\":\"\"" }, "value": "\",\"functionSelector\":\"" }, "id": 3797, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toSlice", "nodeType": "MemberAccess", "referencedDeclaration": 2100, "src": "712:32:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$", "typeString": "function (string memory) pure returns (struct strings.slice memory)" } }, "id": 3798, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "712:34:14", "typeDescriptions": { "typeIdentifier": "t_struct$_slice_$2040_memory_ptr", "typeString": "struct strings.slice memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_struct$_slice_$2040_memory_ptr", "typeString": "struct strings.slice memory" } ], "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "id": 3792, "name": "json", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3774, "src": "690:4:14", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "id": 3793, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toSlice", "nodeType": "MemberAccess", "referencedDeclaration": 2100, "src": "690:12:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$2040_memory_ptr_$bound_to$_t_string_memory_ptr_$", "typeString": "function (string memory) pure returns (struct strings.slice memory)" } }, "id": 3794, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "690:14:14", "typeDescriptions": { "typeIdentifier": "t_struct$_slice_$2040_memory_ptr", "typeString": "struct strings.slice memory" } }, "id": 3795, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "concat", "nodeType": "MemberAccess", "referencedDeclaration": 3613, "src": "690:21:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_struct$_slice_$2040_memory_ptr_$_t_struct$_slice_$2040_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_slice_$2040_memory_ptr_$", "typeString": "function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)" } }, "id": 3799, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "690:57:14", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "src": "683:64:14", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "id": 3801, "nodeType": "ExpressionStatement", "src": "683:64:14" }, { "expression": { "argumentTypes": null, "id": 3812, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 3802, "name": "json", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3774, "src": "761:4:14", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3807, "name": "_self", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3766, "src": "790:5:14", "typeDescriptions": { "typeIdentifier": "t_struct$_Action_$3748_memory_ptr", "typeString": "struct Actions.Action memory" } },