UNPKG

@marketprotocol/marketprotocol

Version:

Decentralized Derivatives Trading Protocol For The Ethereum Blockchain

1,221 lines (1,220 loc) 128 kB
{ "contractName": "SafeMath", "abi": [], "metadata": "{\"compiler\":{\"version\":\"0.5.2+commit.1df8f40c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Unsigned math operations with safety checks that revert on error\",\"methods\":{},\"title\":\"SafeMath\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"openzeppelin-solidity/contracts/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xc2a200a877c4a9b2475c246c54ffecc69ffde3e11af83319c63c2dc5458bac80\",\"urls\":[\"bzzr://c8876e2c39b60f155d748d71d715c8f3903fae5a405ac599adcb6ad2f9a583f9\"]}},\"version\":1}", "bytecode": "0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820dc7af3c868120a30ec15647fa3fa4dba42da56e1138fe8e1825d2071f14269650029", "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820dc7af3c868120a30ec15647fa3fa4dba42da56e1138fe8e1825d2071f14269650029", "sourceMap": "125:1737:16:-;;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": "125:1737:16:-;;;;;;;;", "source": "pragma solidity ^0.5.2;\n\n/**\n * @title SafeMath\n * @dev Unsigned math operations with safety checks that revert on error\n */\nlibrary SafeMath {\n /**\n * @dev Multiplies two unsigned integers, reverts on overflow.\n */\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522\n if (a == 0) {\n return 0;\n }\n\n uint256 c = a * b;\n require(c / a == b);\n\n return c;\n }\n\n /**\n * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.\n */\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\n // Solidity only automatically asserts when dividing by 0\n require(b > 0);\n uint256 c = a / b;\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\n\n return c;\n }\n\n /**\n * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b <= a);\n uint256 c = a - b;\n\n return c;\n }\n\n /**\n * @dev Adds two unsigned integers, reverts on overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n require(c >= a);\n\n return c;\n }\n\n /**\n * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),\n * reverts when dividing by zero.\n */\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b != 0);\n return a % b;\n }\n}\n", "sourcePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", "ast": { "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", "exportedSymbols": { "SafeMath": [ 2345 ] }, "id": 2346, "nodeType": "SourceUnit", "nodes": [ { "id": 2219, "literals": [ "solidity", "^", "0.5", ".2" ], "nodeType": "PragmaDirective", "src": "0:23:16" }, { "baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": "@title SafeMath\n@dev Unsigned math operations with safety checks that revert on error", "fullyImplemented": true, "id": 2345, "linearizedBaseContracts": [ 2345 ], "name": "SafeMath", "nodeType": "ContractDefinition", "nodes": [ { "body": { "id": 2251, "nodeType": "Block", "src": "298:354:16", "statements": [ { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2230, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 2228, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2221, "src": "529:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 2229, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "534:1:16", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "529:6:16", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 2234, "nodeType": "IfStatement", "src": "525:45:16", "trueBody": { "id": 2233, "nodeType": "Block", "src": "537:33:16", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "30", "id": 2231, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "558:1:16", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "functionReturnParameters": 2227, "id": 2232, "nodeType": "Return", "src": "551:8:16" } ] } }, { "assignments": [ 2236 ], "declarations": [ { "constant": false, "id": 2236, "name": "c", "nodeType": "VariableDeclaration", "scope": 2251, "src": "580:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2235, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "580:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 2240, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2239, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 2237, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2221, "src": "592:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "id": 2238, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2223, "src": "596:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "592:5:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "580:17:16" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2246, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2244, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 2242, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2236, "src": "615:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": { "argumentTypes": null, "id": 2243, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2221, "src": "619:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "615:5:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 2245, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2223, "src": "624:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "615:10:16", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 2241, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 3189, 3190 ], "referencedDeclaration": 3189, "src": "607:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 2247, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "607:19:16", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2248, "nodeType": "ExpressionStatement", "src": "607:19:16" }, { "expression": { "argumentTypes": null, "id": 2249, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2236, "src": "644:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 2227, "id": 2250, "nodeType": "Return", "src": "637:8:16" } ] }, "documentation": "@dev Multiplies two unsigned integers, reverts on overflow.", "id": 2252, "implemented": true, "kind": "function", "modifiers": [], "name": "mul", "nodeType": "FunctionDefinition", "parameters": { "id": 2224, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2221, "name": "a", "nodeType": "VariableDeclaration", "scope": 2252, "src": "244:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2220, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "244:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 2223, "name": "b", "nodeType": "VariableDeclaration", "scope": 2252, "src": "255:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2222, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "255:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "243:22:16" }, "returnParameters": { "id": 2227, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2226, "name": "", "nodeType": "VariableDeclaration", "scope": 2252, "src": "289:7:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2225, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "289:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "288:9:16" }, "scope": 2345, "src": "231:421:16", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { "id": 2275, "nodeType": "Block", "src": "849:229:16", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2264, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 2262, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2256, "src": "933:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 2263, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "937:1:16", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "933:5:16", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 2261, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 3189, 3190 ], "referencedDeclaration": 3189, "src": "925:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 2265, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "925:14:16", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2266, "nodeType": "ExpressionStatement", "src": "925:14:16" }, { "assignments": [ 2268 ], "declarations": [ { "constant": false, "id": 2268, "name": "c", "nodeType": "VariableDeclaration", "scope": 2275, "src": "949:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2267, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "949:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 2272, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2271, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 2269, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2254, "src": "961:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": { "argumentTypes": null, "id": 2270, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2256, "src": "965:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "961:5:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "949:17:16" }, { "expression": { "argumentTypes": null, "id": 2273, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2268, "src": "1070:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 2260, "id": 2274, "nodeType": "Return", "src": "1063:8:16" } ] }, "documentation": "@dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.", "id": 2276, "implemented": true, "kind": "function", "modifiers": [], "name": "div", "nodeType": "FunctionDefinition", "parameters": { "id": 2257, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2254, "name": "a", "nodeType": "VariableDeclaration", "scope": 2276, "src": "795:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2253, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "795:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 2256, "name": "b", "nodeType": "VariableDeclaration", "scope": 2276, "src": "806:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2255, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "806:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "794:22:16" }, "returnParameters": { "id": 2260, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2259, "name": "", "nodeType": "VariableDeclaration", "scope": 2276, "src": "840:7:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2258, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "840:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "839:9:16" }, "scope": 2345, "src": "782:296:16", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { "id": 2299, "nodeType": "Block", "src": "1278:78:16", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2288, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 2286, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2280, "src": "1296:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "id": 2287, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2278, "src": "1301:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1296:6:16", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 2285, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 3189, 3190 ], "referencedDeclaration": 3189, "src": "1288:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 2289, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1288:15:16", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2290, "nodeType": "ExpressionStatement", "src": "1288:15:16" }, { "assignments": [ 2292 ], "declarations": [ { "constant": false, "id": 2292, "name": "c", "nodeType": "VariableDeclaration", "scope": 2299, "src": "1313:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2291, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1313:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 2296, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2295, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 2293, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2278, "src": "1325:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "id": 2294, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2280, "src": "1329:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1325:5:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "1313:17:16" }, { "expression": { "argumentTypes": null, "id": 2297, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2292, "src": "1348:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 2284, "id": 2298, "nodeType": "Return", "src": "1341:8:16" } ] }, "documentation": "@dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).", "id": 2300, "implemented": true, "kind": "function", "modifiers": [], "name": "sub", "nodeType": "FunctionDefinition", "parameters": { "id": 2281, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2278, "name": "a", "nodeType": "VariableDeclaration", "scope": 2300, "src": "1224:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2277, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1224:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 2280, "name": "b", "nodeType": "VariableDeclaration", "scope": 2300, "src": "1235:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2279, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1235:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1223:22:16" }, "returnParameters": { "id": 2284, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2283, "name": "", "nodeType": "VariableDeclaration", "scope": 2300, "src": "1269:7:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2282, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1269:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1268:9:16" }, "scope": 2345, "src": "1211:145:16", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { "id": 2323, "nodeType": "Block", "src": "1506:78:16", "statements": [ { "assignments": [ 2310 ], "declarations": [ { "constant": false, "id": 2310, "name": "c", "nodeType": "VariableDeclaration", "scope": 2323, "src": "1516:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 2309, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1516:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 2314, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2313, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 2311, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2302, "src": "1528:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "id": 2312, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2304, "src": "1532:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1528:5:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "1516:17:16" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2318, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 2316, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2310, "src": "1551:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "id": 2317, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2302, "src": "1556:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1551:6:16", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 2315, "name": "require",