@ethsub/sol
Version:
ethsub contracts
1,238 lines (1,237 loc) • 51.4 kB
JSON
{
"contractName": "Counters",
"abi": [],
"metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Matt Condon (@shrugs)\",\"details\":\"Provides counters that can only be incremented or decremented by one. This can be used e.g. to track the number of elements in a mapping, issuing ERC721 ids, or counting request ids. Include with `using Counters for Counters.Counter;` Since it is not possible to overflow a 256 bit integer with increments of one, `increment` can skip the {SafeMath} overflow check, thereby saving gas. This does assume however correct usage, in that the underlying `_value` is never directly accessed.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Counters\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Counters.sol\":\"Counters\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0x21662e4254ce4ac8570b30cc7ab31435966b3cb778a56ba4d09276881cfb2437\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://acce8fe6adc670f9987a8b6aedc4cc0abcd0dcd2e152d649a12099d735bd7bad\",\"dweb:/ipfs/QmXAk17oK3daBmA8CGyVcU56L496jW3U6Ef1WkfHyB1JAV\"]}},\"version\":1}",
"bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fb33c7c0091f119325471adfbabe0a7ed64c1d1f83a9f2467e941c520028783664736f6c634300060c0033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fb33c7c0091f119325471adfbabe0a7ed64c1d1f83a9f2467e941c520028783664736f6c634300060c0033",
"immutableReferences": {},
"sourceMap": "670:848:29:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
"deployedSourceMap": "670:848:29:-:0;;;;;;;;",
"source": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\nimport \"../math/SafeMath.sol\";\n\n/**\n * @title Counters\n * @author Matt Condon (@shrugs)\n * @dev Provides counters that can only be incremented or decremented by one. This can be used e.g. to track the number\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\n *\n * Include with `using Counters for Counters.Counter;`\n * Since it is not possible to overflow a 256 bit integer with increments of one, `increment` can skip the {SafeMath}\n * overflow check, thereby saving gas. This does assume however correct usage, in that the underlying `_value` is never\n * directly accessed.\n */\nlibrary Counters {\n using SafeMath for uint256;\n\n struct Counter {\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\n // this feature: see https://github.com/ethereum/solidity/issues/4637\n uint256 _value; // default: 0\n }\n\n function current(Counter storage counter) internal view returns (uint256) {\n return counter._value;\n }\n\n function increment(Counter storage counter) internal {\n // The {SafeMath} overflow check can be skipped here, see the comment at the top\n counter._value += 1;\n }\n\n function decrement(Counter storage counter) internal {\n counter._value = counter._value.sub(1);\n }\n}\n",
"sourcePath": "@openzeppelin/contracts/utils/Counters.sol",
"ast": {
"absolutePath": "@openzeppelin/contracts/utils/Counters.sol",
"exportedSymbols": {
"Counters": [
4891
]
},
"id": 4892,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 4843,
"literals": [
"solidity",
">=",
"0.6",
".0",
"<",
"0.8",
".0"
],
"nodeType": "PragmaDirective",
"src": "33:31:29"
},
{
"absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
"file": "../math/SafeMath.sol",
"id": 4844,
"nodeType": "ImportDirective",
"scope": 4892,
"sourceUnit": 938,
"src": "66:30:29",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "library",
"documentation": {
"id": 4845,
"nodeType": "StructuredDocumentation",
"src": "98:571:29",
"text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented or decremented by one. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`\n Since it is not possible to overflow a 256 bit integer with increments of one, `increment` can skip the {SafeMath}\n overflow check, thereby saving gas. This does assume however correct usage, in that the underlying `_value` is never\n directly accessed."
},
"fullyImplemented": true,
"id": 4891,
"linearizedBaseContracts": [
4891
],
"name": "Counters",
"nodeType": "ContractDefinition",
"nodes": [
{
"id": 4848,
"libraryName": {
"contractScope": null,
"id": 4846,
"name": "SafeMath",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 937,
"src": "699:8:29",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SafeMath_$937",
"typeString": "library SafeMath"
}
},
"nodeType": "UsingForDirective",
"src": "693:27:29",
"typeName": {
"id": 4847,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "712:7:29",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
{
"canonicalName": "Counters.Counter",
"id": 4851,
"members": [
{
"constant": false,
"id": 4850,
"mutability": "mutable",
"name": "_value",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 4851,
"src": "1065:14:29",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4849,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1065:7:29",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"name": "Counter",
"nodeType": "StructDefinition",
"scope": 4891,
"src": "726:374:29",
"visibility": "public"
},
{
"body": {
"id": 4861,
"nodeType": "Block",
"src": "1180:38:29",
"statements": [
{
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4858,
"name": "counter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4853,
"src": "1197:7:29",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Counter_$4851_storage_ptr",
"typeString": "struct Counters.Counter storage pointer"
}
},
"id": 4859,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "_value",
"nodeType": "MemberAccess",
"referencedDeclaration": 4850,
"src": "1197:14:29",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 4857,
"id": 4860,
"nodeType": "Return",
"src": "1190:21:29"
}
]
},
"documentation": null,
"id": 4862,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "current",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 4854,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4853,
"mutability": "mutable",
"name": "counter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 4862,
"src": "1123:23:29",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Counter_$4851_storage_ptr",
"typeString": "struct Counters.Counter"
},
"typeName": {
"contractScope": null,
"id": 4852,
"name": "Counter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 4851,
"src": "1123:7:29",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Counter_$4851_storage_ptr",
"typeString": "struct Counters.Counter"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1122:25:29"
},
"returnParameters": {
"id": 4857,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4856,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 4862,
"src": "1171:7:29",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4855,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1171:7:29",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1170:9:29"
},
"scope": 4891,
"src": "1106:112:29",
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 4873,
"nodeType": "Block",
"src": "1277:125:29",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 4871,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4867,
"name": "counter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4864,
"src": "1376:7:29",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Counter_$4851_storage_ptr",
"typeString": "struct Counters.Counter storage pointer"
}
},
"id": 4869,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "_value",
"nodeType": "MemberAccess",
"referencedDeclaration": 4850,
"src": "1376:14:29",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "31",
"id": 4870,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1394:1:29",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "1376:19:29",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 4872,
"nodeType": "ExpressionStatement",
"src": "1376:19:29"
}
]
},
"documentation": null,
"id": 4874,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "increment",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 4865,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4864,
"mutability": "mutable",
"name": "counter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 4874,
"src": "1243:23:29",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Counter_$4851_storage_ptr",
"typeString": "struct Counters.Counter"
},
"typeName": {
"contractScope": null,
"id": 4863,
"name": "Counter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 4851,
"src": "1243:7:29",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Counter_$4851_storage_ptr",
"typeString": "struct Counters.Counter"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1242:25:29"
},
"returnParameters": {
"id": 4866,
"nodeType": "ParameterList",
"parameters": [],
"src": "1277:0:29"
},
"scope": 4891,
"src": "1224:178:29",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 4889,
"nodeType": "Block",
"src": "1461:55:29",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 4887,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4879,
"name": "counter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4876,
"src": "1471:7:29",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Counter_$4851_storage_ptr",
"typeString": "struct Counters.Counter storage pointer"
}
},
"id": 4881,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "_value",
"nodeType": "MemberAccess",
"referencedDeclaration": 4850,
"src": "1471:14:29",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "31",
"id": 4885,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1507:1:29",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
}
],
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 4882,
"name": "counter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4876,
"src": "1488:7:29",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Counter_$4851_storage_ptr",
"typeString": "struct Counters.Counter storage pointer"
}
},
"id": 4883,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "_value",
"nodeType": "MemberAccess",
"referencedDeclaration": 4850,
"src": "1488:14:29",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 4884,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sub",
"nodeType": "MemberAccess",
"referencedDeclaration": 786,
"src": "1488:18:29",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 4886,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1488:21:29",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1471:38:29",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 4888,
"nodeType": "ExpressionStatement",
"src": "1471:38:29"
}
]
},
"documentation": null,
"id": 4890,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "decrement",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 4877,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4876,
"mutability": "mutable",
"name": "counter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 4890,
"src": "1427:23:29",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Counter_$4851_storage_ptr",
"typeString": "struct Counters.Counter"
},
"typeName": {
"contractScope": null,
"id": 4875,
"name": "Counter",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 4851,
"src": "1427:7:29",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Counter_$4851_storage_ptr",
"typeString": "struct Counters.Counter"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1426:25:29"
},
"returnParameters": {
"id": 4878,
"nodeType": "ParameterList",
"parameters": [],
"src": "1461:0:29"
},
"scope": 4891,
"src": "1408:108:29",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
}
],
"scope": 4892,
"src": "670:848:29"
}
],
"src": "33:1486:29"
},
"legacyAST": {
"attributes": {
"absolutePath": "@openzeppelin/contracts/utils/Counters.sol",
"exportedSymbols": {
"Counters": [
4891
]
},
"license": "MIT"
},
"children": [
{
"attributes": {
"literals": [
"solidity",
">=",
"0.6",
".0",
"<",
"0.8",
".0"
]
},
"id": 4843,
"name": "PragmaDirective",
"src": "33:31:29"
},
{
"attributes": {
"SourceUnit": 938,
"absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
"file": "../math/SafeMath.sol",
"scope": 4892,
"symbolAliases": [
null
],
"unitAlias": ""
},
"id": 4844,
"name": "ImportDirective",
"src": "66:30:29"
},
{
"attributes": {
"abstract": false,
"baseContracts": [
null
],
"contractDependencies": [
null
],
"contractKind": "library",
"fullyImplemented": true,
"linearizedBaseContracts": [
4891
],
"name": "Counters",
"scope": 4892
},
"children": [
{
"attributes": {
"text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented or decremented by one. This can be used e.g. to track the number\n of elements in a mapping, issuing ERC721 ids, or counting request ids.\n Include with `using Counters for Counters.Counter;`\n Since it is not possible to overflow a 256 bit integer with increments of one, `increment` can skip the {SafeMath}\n overflow check, thereby saving gas. This does assume however correct usage, in that the underlying `_value` is never\n directly accessed."
},
"id": 4845,
"name": "StructuredDocumentation",
"src": "98:571:29"
},
{
"children": [
{
"attributes": {
"contractScope": null,
"name": "SafeMath",
"referencedDeclaration": 937,
"type": "library SafeMath"
},
"id": 4846,
"name": "UserDefinedTypeName",
"src": "699:8:29"
},
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 4847,
"name": "ElementaryTypeName",
"src": "712:7:29"
}
],
"id": 4848,
"name": "UsingForDirective",
"src": "693:27:29"
},
{
"attributes": {
"canonicalName": "Counters.Counter",
"name": "Counter",
"scope": 4891,
"visibility": "public"
},
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "_value",
"overrides": null,
"scope": 4851,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 4849,
"name": "ElementaryTypeName",
"src": "1065:7:29"
}
],
"id": 4850,
"name": "VariableDeclaration",
"src": "1065:14:29"
}
],
"id": 4851,
"name": "StructDefinition",
"src": "726:374:29"
},
{
"attributes": {
"documentation": null,
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [
null
],
"name": "current",
"overrides": null,
"scope": 4891,
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
},
"children": [
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "counter",
"overrides": null,
"scope": 4862,
"stateVariable": false,
"storageLocation": "storage",
"type": "struct Counters.Counter",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"contractScope": null,
"name": "Counter",
"referencedDeclaration": 4851,
"type": "struct Counters.Counter"
},
"id": 4852,
"name": "UserDefinedTypeName",
"src": "1123:7:29"
}
],
"id": 4853,
"name": "VariableDeclaration",
"src": "1123:23:29"
}
],
"id": 4854,
"name": "ParameterList",
"src": "1122:25:29"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "",
"overrides": null,
"scope": 4862,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 4855,
"name": "ElementaryTypeName",
"src": "1171:7:29"
}
],
"id": 4856,
"name": "VariableDeclaration",
"src": "1171:7:29"
}
],
"id": 4857,
"name": "ParameterList",
"src": "1170:9:29"
},
{
"children": [
{
"attributes": {
"functionReturnParameters": 4857
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"member_name": "_value",
"referencedDeclaration": 4850,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 4853,
"type": "struct Counters.Counter storage pointer",
"value": "counter"
},
"id": 4858,
"name": "Identifier",
"src": "1197:7:29"
}
],
"id": 4859,
"name": "MemberAccess",
"src": "1197:14:29"
}
],
"id": 4860,
"name": "Return",
"src": "1190:21:29"
}
],
"id": 4861,
"name": "Block",
"src": "1180:38:29"
}
],
"id": 4862,
"name": "FunctionDefinition",
"src": "1106:112:29"
},
{
"attributes": {
"documentation": null,
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [
null
],
"name": "increment",
"overrides": null,
"scope": 4891,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
"children": [
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "counter",
"overrides": null,
"scope": 4874,
"stateVariable": false,
"storageLocation": "storage",
"type": "struct Counters.Counter",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"contractScope": null,
"name": "Counter",
"referencedDeclaration": 4851,
"type": "struct Counters.Counter"
},
"id": 4863,
"name": "UserDefinedTypeName",
"src": "1243:7:29"
}
],
"id": 4864,
"name": "VariableDeclaration",
"src": "1243:23:29"
}
],
"id": 4865,
"name": "ParameterList",
"src": "1242:25:29"
},
{
"attributes": {
"parameters": [
null
]
},
"children": [],
"id": 4866,
"name": "ParameterList",
"src": "1277:0:29"
},
{
"children": [
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "+=",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"member_name": "_value",
"referencedDeclaration": 4850,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 4864,
"type": "struct Counters.Counter storage pointer",
"value": "counter"
},
"id": 4867,
"name": "Identifier",
"src": "1376:7:29"
}
],
"id": 4869,
"name": "MemberAccess",
"src": "1376:14:29"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "31",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 1",
"value": "1"
},
"id": 4870,
"name": "Literal",
"src": "1394:1:29"
}
],
"id": 4871,
"name": "Assignment",
"src": "1376:19:29"
}
],
"id": 4872,
"name": "ExpressionStatement",
"src": "1376:19:29"
}
],
"id": 4873,
"name": "Block",
"src": "1277:125:29"
}
],
"id": 4874,
"name": "FunctionDefinition",
"src": "1224:178:29"
},
{
"attributes": {
"documentation": null,
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [
null
],
"name": "decrement",
"overrides": null,
"scope": 4891,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
"children": [
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "counter",
"overrides": null,
"scope": 4890,
"stateVariable": false,
"storageLocation": "storage",
"type": "struct Counters.Counter",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"contractScope": null,
"name": "Counter",
"referencedDeclaration": 4851,
"type": "struct Counters.Counter"
},
"id": 4875,
"name": "UserDefinedTypeName",
"src": "1427:7:29"
}
],
"id": 4876,
"name": "VariableDeclaration",
"src": "1427:23:29"
}
],
"id": 4877,
"name": "ParameterList",
"src": "1426:25:29"
},
{
"attributes": {
"parameters": [
null
]
},
"children": [],
"id": 4878,
"name": "ParameterList",
"src": "1461:0:29"
},
{
"children": [
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"member_name": "_value",
"referencedDeclaration": 4850,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 4876,
"type": "struct Counters.Counter storage pointer",
"value": "counter"
},
"id": 4879,
"name": "Identifier",
"src": "1471:7:29"
}
],
"id": 4881,
"name": "MemberAccess",
"src": "1471:14:29"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"tryCall": false,
"type": "uint256",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
}
],
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "sub",
"referencedDeclaration": 786,
"type": "function (uint256,uint256) pure returns (uint256)"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"member_name": "_value",
"referencedDeclaration": 4850,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 4876,
"type": "struct Counters.Counter storage pointer",
"value": "counter"
},
"id": 4882,
"name": "Identifier",
"src": "1488:7:29"
}
],
"id": 4883,
"name": "MemberAccess",
"src": "1488:14:29"
}
],
"id": 4884,
"name": "MemberAccess",
"src": "1488:18:29"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "31",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 1",
"value": "1"
},
"id": 4885,
"name": "Literal",
"src": "1507:1:29"
}
],
"id": 4886,
"name": "FunctionCall",
"src": "1488:21:29"
}
],
"id": 4887,
"name": "Assignment",
"src": "1471:38:29"
}
],
"id": 4888,
"name": "ExpressionStatement",