UNPKG

@gnosis.pm/pm-contracts

Version:

Collection of smart contracts for the Gnosis prediction market platform

1,089 lines 219 kB
{ "contractName": "SignedSafeMath", "abi": [], "metadata": "{\"compiler\":{\"version\":\"0.5.6+commit.b259423e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Signed math operations with safety checks that revert on error.\",\"methods\":{},\"title\":\"SignedSafeMath\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"openzeppelin-solidity/contracts/drafts/SignedSafeMath.sol\":\"SignedSafeMath\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/drafts/SignedSafeMath.sol\":{\"keccak256\":\"0xb4b45cd5475c318722ac0f8d7e2b9e77fee6f4f36374c1110fe615d50fbc0650\",\"urls\":[\"bzzr://a90fb457269c8a03ec5b811c71acef08a2751a4d2019b0661328610f9357dae7\"]}},\"version\":1}", "bytecode": "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058205ae964e84dbb26b9dd5f2e2f37d0a387db5565583bf78bae75a4a52ab37ef28e0029", "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058205ae964e84dbb26b9dd5f2e2f37d0a387db5565583bf78bae75a4a52ab37ef28e0029", "sourceMap": "130:1696:31:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24", "deployedSourceMap": "130:1696:31:-;;;;;;;;", "source": "pragma solidity ^0.5.0;\n\n/**\n * @title SignedSafeMath\n * @dev Signed math operations with safety checks that revert on error.\n */\nlibrary SignedSafeMath {\n int256 constant private INT256_MIN = -2**255;\n\n /**\n * @dev Multiplies two signed integers, reverts on overflow.\n */\n function mul(int256 a, int256 b) internal pure returns (int256) {\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 require(!(a == -1 && b == INT256_MIN), \"SignedSafeMath: multiplication overflow\");\n\n int256 c = a * b;\n require(c / a == b, \"SignedSafeMath: multiplication overflow\");\n\n return c;\n }\n\n /**\n * @dev Integer division of two signed integers truncating the quotient, reverts on division by zero.\n */\n function div(int256 a, int256 b) internal pure returns (int256) {\n require(b != 0, \"SignedSafeMath: division by zero\");\n require(!(b == -1 && a == INT256_MIN), \"SignedSafeMath: division overflow\");\n\n int256 c = a / b;\n\n return c;\n }\n\n /**\n * @dev Subtracts two signed integers, reverts on overflow.\n */\n function sub(int256 a, int256 b) internal pure returns (int256) {\n int256 c = a - b;\n require((b >= 0 && c <= a) || (b < 0 && c > a), \"SignedSafeMath: subtraction overflow\");\n\n return c;\n }\n\n /**\n * @dev Adds two signed integers, reverts on overflow.\n */\n function add(int256 a, int256 b) internal pure returns (int256) {\n int256 c = a + b;\n require((b >= 0 && c >= a) || (b < 0 && c < a), \"SignedSafeMath: addition overflow\");\n\n return c;\n }\n}\n", "sourcePath": "openzeppelin-solidity/contracts/drafts/SignedSafeMath.sol", "ast": { "absolutePath": "openzeppelin-solidity/contracts/drafts/SignedSafeMath.sol", "exportedSymbols": { "SignedSafeMath": [ 7248 ] }, "id": 7249, "nodeType": "SourceUnit", "nodes": [ { "id": 7076, "literals": [ "solidity", "^", "0.5", ".0" ], "nodeType": "PragmaDirective", "src": "0:23:31" }, { "baseContracts": [], "contractDependencies": [], "contractKind": "library", "documentation": "@title SignedSafeMath\n@dev Signed math operations with safety checks that revert on error.", "fullyImplemented": true, "id": 7248, "linearizedBaseContracts": [ 7248 ], "name": "SignedSafeMath", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, "id": 7082, "name": "INT256_MIN", "nodeType": "VariableDeclaration", "scope": 7248, "src": "159:44:31", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" }, "typeName": { "id": 7077, "name": "int256", "nodeType": "ElementaryTypeName", "src": "159:6:31", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" } }, "value": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_rational_minus_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1", "typeString": "int_const -578...(70 digits omitted)...9968" }, "id": 7081, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 7079, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "-", "prefix": true, "src": "196:2:31", "subExpression": { "argumentTypes": null, "hexValue": "32", "id": 7078, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "197:1:31", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, "typeDescriptions": { "typeIdentifier": "t_rational_minus_2_by_1", "typeString": "int_const -2" } }, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": { "argumentTypes": null, "hexValue": "323535", "id": 7080, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "200:3:31", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_255_by_1", "typeString": "int_const 255" }, "value": "255" }, "src": "196:7:31", "typeDescriptions": { "typeIdentifier": "t_rational_minus_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1", "typeString": "int_const -578...(70 digits omitted)...9968" } }, "visibility": "private" }, { "body": { "id": 7129, "nodeType": "Block", "src": "355:488:31", "statements": [ { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_int256", "typeString": "int256" }, "id": 7093, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 7091, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7084, "src": "586:1:31", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 7092, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "591:1:31", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "586:6:31", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 7097, "nodeType": "IfStatement", "src": "582:45:31", "trueBody": { "id": 7096, "nodeType": "Block", "src": "594:33:31", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "30", "id": 7094, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "615:1:31", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "functionReturnParameters": 7090, "id": 7095, "nodeType": "Return", "src": "608:8:31" } ] } }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7108, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "645:29:31", "subExpression": { "argumentTypes": null, "components": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 7106, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_int256", "typeString": "int256" }, "id": 7102, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 7099, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7084, "src": "647:1:31", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 7101, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "-", "prefix": true, "src": "652:2:31", "subExpression": { "argumentTypes": null, "hexValue": "31", "id": 7100, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "653:1:31", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "typeDescriptions": { "typeIdentifier": "t_rational_minus_1_by_1", "typeString": "int_const -1" } }, "src": "647:7:31", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_int256", "typeString": "int256" }, "id": 7105, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 7103, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7086, "src": "658:1:31", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 7104, "name": "INT256_MIN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7082, "src": "663:10:31", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" } }, "src": "658:15:31", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "647:26:31", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "id": 7107, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "646:28:31", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77", "id": 7109, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "676:41:31", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954", "typeString": "literal_string \"SignedSafeMath: multiplication overflow\"" }, "value": "SignedSafeMath: multiplication overflow" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954", "typeString": "literal_string \"SignedSafeMath: multiplication overflow\"" } ], "id": 7098, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 7923, 7924 ], "referencedDeclaration": 7924, "src": "637:7:31", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 7110, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "637:81:31", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 7111, "nodeType": "ExpressionStatement", "src": "637:81:31" }, { "assignments": [ 7113 ], "declarations": [ { "constant": false, "id": 7113, "name": "c", "nodeType": "VariableDeclaration", "scope": 7129, "src": "729:8:31", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" }, "typeName": { "id": 7112, "name": "int256", "nodeType": "ElementaryTypeName", "src": "729:6:31", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" } }, "value": null, "visibility": "internal" } ], "id": 7117, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_int256", "typeString": "int256" }, "id": 7116, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 7114, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7084, "src": "740:1:31", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "id": 7115, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7086, "src": "744:1:31", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" } }, "src": "740:5:31", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" } }, "nodeType": "VariableDeclarationStatement", "src": "729:16:31" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_int256", "typeString": "int256" }, "id": 7123, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_int256", "typeString": "int256" }, "id": 7121, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 7119, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7113, "src": "763:1:31", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" } }, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": { "argumentTypes": null, "id": 7120, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7084, "src": "767:1:31", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" } }, "src": "763:5:31", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 7122, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7086, "src": "772:1:31", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" } }, "src": "763:10:31", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77", "id": 7124, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "775:41:31", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954", "typeString": "literal_string \"SignedSafeMath: multiplication overflow\"" }, "value": "SignedSafeMath: multiplication overflow" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954", "typeString": "literal_string \"SignedSafeMath: multiplication overflow\"" } ], "id": 7118, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 7923, 7924 ], "referencedDeclaration": 7924, "src": "755:7:31", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 7125, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "755:62:31", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 7126, "nodeType": "ExpressionStatement", "src": "755:62:31" }, { "expression": { "argumentTypes": null, "id": 7127, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7113, "src": "835:1:31", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" } }, "functionReturnParameters": 7090, "id": 7128, "nodeType": "Return", "src": "828:8:31" } ] }, "documentation": "@dev Multiplies two signed integers, reverts on overflow.", "id": 7130, "implemented": true, "kind": "function", "modifiers": [], "name": "mul", "nodeType": "FunctionDefinition", "parameters": { "id": 7087, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7084, "name": "a", "nodeType": "VariableDeclaration", "scope": 7130, "src": "304:8:31", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" }, "typeName": { "id": 7083, "name": "int256", "nodeType": "ElementaryTypeName", "src": "304:6:31", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 7086, "name": "b", "nodeType": "VariableDeclaration", "scope": 7130, "src": "314:8:31", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" }, "typeName": { "id": 7085, "name": "int256", "nodeType": "ElementaryTypeName", "src": "314:6:31", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" } }, "value": null, "visibility": "internal" } ], "src": "303:20:31" }, "returnParameters": { "id": 7090, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 7089, "name": "", "nodeType": "VariableDeclaration", "scope": 7130, "src": "347:6:31", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" }, "typeName": { "id": 7088, "name": "int256", "nodeType": "ElementaryTypeName", "src": "347:6:31", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" } }, "value": null, "visibility": "internal" } ], "src": "346:8:31" }, "scope": 7248, "src": "291:552:31", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { "id": 7168, "nodeType": "Block", "src": "1035:199:31", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_int256", "typeString": "int256" }, "id": 7142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 7140, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7134, "src": "1053:1:31", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 7141, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1058:1:31", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1053:6:31", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "5369676e6564536166654d6174683a206469766973696f6e206279207a65726f", "id": 7143, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1061:34:31", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ebc4d0068c2e029285c70894a725032247a74fcdc822ba305ea67dbddf7750bd", "typeString": "literal_string \"SignedSafeMath: division by zero\"" }, "value": "SignedSafeMath: division by zero" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_ebc4d0068c2e029285c70894a725032247a74fcdc822ba305ea67dbddf7750bd", "typeString": "literal_string \"SignedSafeMath: division by zero\"" } ], "id": 7139, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 7923, 7924 ], "referencedDeclaration": 7924, "src": "1045:7:31", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 7144, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1045:51:31", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 7145, "nodeType": "ExpressionStatement", "src": "1045:51:31" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 7156, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1114:29:31", "subExpression": { "argumentTypes": null, "components": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 7154, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_int256", "typeString": "int256" }, "id": 7150, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 7147, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7134, "src": "1116:1:31", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 7149, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "-", "prefix": true, "src": "1121:2:31", "subExpression": { "argumentTypes": null, "hexValue": "31", "id": 7148, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1122:1:31", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "typeDescriptions": { "typeIdentifier": "t_rational_minus_1_by_1", "typeString": "int_const -1" } }, "src": "1116:7:31", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_int256", "typeString": "int256" }, "id": 7153, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 7151, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7132, "src": "1127:1:31", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 7152, "name": "INT256_MIN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7082, "src": "1132:10:31", "typeDescriptions": { "typeIdentifier": "t_int256", "typeString": "int256" } }, "src": "1127:15:31", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "1116:26:31", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "id": 7155, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": fal